From 5f3c6be442fac0028d19bfba7de305a10fb02176 Mon Sep 17 00:00:00 2001 From: GitHub Action <github-action@users.noreply.github.com> Date: Wed, 9 Feb 2022 18:20:14 +0000 Subject: [PATCH] Update content of files --- data/core.telegram.org.html | 253 + data/core.telegram.org/api.html | 253 + .../api/account-deletion.html | 129 + .../api/animated-emojis.html | 187 + data/core.telegram.org/api/auth.html | 202 + data/core.telegram.org/api/bots.html | 142 + data/core.telegram.org/api/bots/buttons.html | 242 + data/core.telegram.org/api/bots/commands.html | 140 + data/core.telegram.org/api/bots/games.html | 171 + data/core.telegram.org/api/bots/inline.html | 215 + data/core.telegram.org/api/channel.html | 154 + data/core.telegram.org/api/config.html | 422 + data/core.telegram.org/api/datacenter.html | 152 + data/core.telegram.org/api/dice.html | 149 + data/core.telegram.org/api/discussion.html | 151 + data/core.telegram.org/api/drafts.html | 131 + .../api/end-to-end/video-calls.html | 215 + data/core.telegram.org/api/entities.html | 137 + data/core.telegram.org/api/errors.html | 189 + .../core.telegram.org/api/file_reference.html | 125 + data/core.telegram.org/api/files.html | 568 + data/core.telegram.org/api/folders.html | 179 + data/core.telegram.org/api/import.html | 173 + data/core.telegram.org/api/invoking.html | 154 + data/core.telegram.org/api/live-location.html | 178 + data/core.telegram.org/api/mentions.html | 152 + data/core.telegram.org/api/min.html | 142 + .../api/obtaining_api_id.html | 140 + data/core.telegram.org/api/offsets.html | 170 + data/core.telegram.org/api/optimisation.html | 150 + data/core.telegram.org/api/passport.html | 674 ++ data/core.telegram.org/api/payments.html | 366 + data/core.telegram.org/api/pfs.html | 138 + data/core.telegram.org/api/pin.html | 149 + data/core.telegram.org/api/poll.html | 199 + data/core.telegram.org/api/push-updates.html | 1009 ++ data/core.telegram.org/api/qr-login.html | 154 + .../core.telegram.org/api/recent-actions.html | 154 + data/core.telegram.org/api/rights.html | 133 + .../api/scheduled-messages.html | 156 + data/core.telegram.org/api/search.html | 179 + data/core.telegram.org/api/srp.html | 307 + data/core.telegram.org/api/stats.html | 297 + data/core.telegram.org/api/threads.html | 182 + data/core.telegram.org/api/top-rating.html | 145 + data/core.telegram.org/api/updates.html | 226 + .../api/url-authorization.html | 160 + data/core.telegram.org/api/web-events.html | 177 + data/core.telegram.org/apple_privacy.html | 118 + data/core.telegram.org/bots.html | 437 + data/core.telegram.org/bots/api.html | 9488 +++++++++++++++++ data/core.telegram.org/bots/faq.html | 243 + data/core.telegram.org/bots/inline.html | 182 + ...rCategoryPeers.html => account.chatThemes} | 36 +- ...messages.messages => account.privacyRules} | 28 +- .../constructor/account.wallPapersNotModified | 132 + .../constructor/auth.codeTypeFlashCall | 132 + .../constructor/botCommandScopePeerUser.html | 155 + .../botInlineMessageMediaAuto.html} | 50 +- ...ccount.sentEmailCode => cdnPublicKey.html} | 33 +- .../constructor/channel.html | 289 + ...nnelAdminLogEventActionDeleteMessage.html} | 24 +- ...lAdminLogEventActionDiscardGroupCall.html} | 22 +- ...LogEventActionParticipantJoinByInvite.html | 150 + ...te.html => channelParticipantsSearch.html} | 22 +- .../constructor/chatBannedRights.html | 216 + ....sentEncryptedFile => chatInvitePeek.html} | 30 +- .../core.telegram.org/constructor/config.html | 420 + .../constructor/contacts.topPeersNotModified | 132 + .../core.telegram.org/constructor/dialog.html | 214 + .../constructor/dialogFolder.html | 187 + .../constructor/documentAttributeSticker.html | 167 + .../constructor/documentAttributeVideo.html | 172 + ...yptedFileEmpty.html => geoPointEmpty.html} | 18 +- ...rticipant.html => groupCallDiscarded.html} | 30 +- .../constructor/help.countryCode | 162 + .../constructor/help.inviteText | 147 + .../help.termsOfServiceUpdateEmpty | 150 + ...=> inputBotInlineMessageMediaInvoice.html} | 67 +- .../inputBotInlineMessageText.html | 170 + .../inputBotInlineResultPhoto.html | 164 + .../constructor/inputCheckPasswordSRP.html | 160 + ...tickerSetDice.html => inputMediaDice.html} | 18 +- .../constructor/inputMediaEmpty.html | 132 + ....html => inputMessagesFilterContacts.html} | 16 +- .../inputMessagesFilterPhotos.html | 132 + .../inputMessagesFilterRoundVideo.html | 132 + .../constructor/inputMessagesFilterVideo.html | 132 + ...ts.html => inputPrivacyKeyChatInvite.html} | 18 +- .../constructor/inputPrivacyKeyForwards.html | 132 + ...edEmoji.html => inputStickerSetEmpty.html} | 16 +- .../{peerChannel.html => jsonBool.html} | 24 +- ...{textPhone.html => keyboardButtonUrl.html} | 26 +- .../constructor/langPackString.html | 152 + ...tml => messageActionChatJoinedByLink.html} | 27 +- ...ntact.html => messageActionGameScore.html} | 26 +- ...to.html => messageActionHistoryClear.html} | 16 +- ...horization => messageActionPhoneCall.html} | 42 +- ...tml => messageActionSecureValuesSent.html} | 31 +- ...eTypeCall => messageEntityBotCommand.html} | 25 +- .../constructor/messageMediaDice.html | 155 + .../{userEmpty.html => messageMediaGeo.html} | 24 +- ...ptedFile.html => messages.affectedHistory} | 40 +- ...icipant => messages.chatAdminsWithInvites} | 31 +- ...Hash.html => messages.dhConfigNotModified} | 27 +- ...messages.dialogs => messages.dialogsSlice} | 29 +- .../messages.exportedChatInviteReplaced | 157 - .../constructor/messages.exportedChatInvites | 6 +- .../constructor/messages.favedStickers | 160 + .../constructor/messages.historyImportParsed | 166 + .../messages.recentStickersNotModified | 132 + .../constructor/messages.savedGifsNotModified | 132 + .../constructor/messages.sponsoredMessages | 157 + .../messages.stickerSetInstallResultSuccess | 132 + .../constructor/nearestDc.html | 157 + .../constructor/notifyChats.html | 132 + .../constructor/pageBlockAuthorDate.html | 152 + .../constructor/pageBlockFooter.html | 147 + .../constructor/pageBlockPreformatted.html | 152 + .../constructor/pageBlockSlideshow.html | 152 + ...{textPlain.html => pageBlockSubtitle.html} | 20 +- ...ageBlockTable.html => pageBlockVideo.html} | 36 +- .../pageListOrderedItemBlocks.html | 152 - ...CallbackAnswer => pageRelatedArticle.html} | 73 +- .../constructor/pageTableCell.html} | 76 +- .../constructor/phone.joinAsPeers} | 34 +- .../constructor/phoneCallDiscarded.html | 182 + ...MediaContact.html => phoneConnection.html} | 62 +- .../constructor/photoStrippedSize.html} | 46 +- data/core.telegram.org/constructor/poll.html | 195 + ...pants.html => privacyValueAllowUsers.html} | 20 +- .../constructor/receivedNotifyMessage.html | 152 + ...dTypeOneOf.html => replyInlineMarkup.html} | 24 +- ...toExternal.html => replyKeyboardHide.html} | 29 +- .../constructor/replyKeyboardMarkup.html | 6 +- .../constructor/secureValueErrorSelfie.html | 166 + .../secureValueErrorTranslationFile.html | 178 + .../constructor/secureValueTypeEmail.html | 132 + .../secureValueTypeRentalAgreement.html | 132 + ...ml => sendMessageHistoryImportAction.html} | 16 +- ...html => sendMessageRecordVideoAction.html} | 18 +- ....importedContacts => stats.megagroupStats} | 107 +- .../constructor/statsGraphAsync.html | 152 + ...TopPoster.html => statsGroupTopAdmin.html} | 31 +- .../constructor/storage.fileUnknown | 132 + .../constructor/textImage.html | 157 + .../constructor/topPeer.html | 155 + .../topPeerCategoryForwardUsers.html | 132 + .../constructor/updateBotStopped.html | 165 + ...ant.html => updateChannelParticipant.html} | 32 +- ...uery.html => updateChannelUserTyping.html} | 55 +- ...Reached.html => updateChannelWebPage.html} | 45 +- .../updateChatParticipantDelete.html | 6 +- .../updateDeleteChannelMessages.html | 167 + ...otifyPeer.html => updateDraftMessage.html} | 28 +- .../constructor/updateFavedStickers.html | 135 + ...HistoryTTL.html => updateMessagePoll.html} | 33 +- ...sages => updatePinnedChannelMessages.html} | 62 +- ... => updateReadChannelDiscussionInbox.html} | 59 +- .../constructor/updateReadHistoryInbox.html | 182 + ...tsReset.html => updateRecentStickers.html} | 16 +- .../updateServiceNotification.html | 183 + .../constructor/updateShortSentMessage.html | 6 +- .../{phoneCallEmpty.html => updateTheme.html} | 24 +- .../constructor/upload.cdnFile | 149 + ...nteraction.html => upload.fileCdnRedirect} | 51 +- data/core.telegram.org/constructor/user.html | 287 + ...TypePM.html => userProfilePhotoEmpty.html} | 18 +- .../constructor/webAuthorization.html | 189 + ...bDocumentNoProxy.html => webDocument.html} | 26 +- data/core.telegram.org/contest300K.html | 237 + .../core.telegram.org/css/bootstrap-extra.css | 3274 ++++++ data/core.telegram.org/css/telegram-extra.css | 246 + data/core.telegram.org/getProxyConfig.html | 24 + data/core.telegram.org/import-stickers.html | 159 + data/core.telegram.org/js/jquery-ui.min.js | 9 + .../js/telegram-passport2.js | 413 + ...s.checkChatInvite => account.confirmPhone} | 50 +- .../method/account.createTheme | 186 + .../method/account.deleteAccount | 170 + ...{auth.logOut => account.getAuthorizations} | 26 +- .../method/account.getChatThemes | 6 +- ...s => account.getContactSignUpNotification} | 16 +- ...unt.getNotifySettings => account.getTheme} | 45 +- .../method/account.sendConfirmPhoneCode | 174 + ...oadSettings => account.setContentSettings} | 49 +- .../method/account.verifyPhone | 191 + .../method/auth.bindTempAuthKey | 252 - .../{channels.readHistory => auth.cancelCode} | 45 +- .../method/auth.resendCode} | 101 +- .../method/bots.getBotCommands | 154 + ...ssages.getHistory => channels.getMessages} | 77 +- ...eteUserHistory => channels.getParticipant} | 44 +- ...dMessage => channels.getSponsoredMessages} | 43 +- ...etFavedStickers => contacts.getContactIDs} | 22 +- ...getRecentStickers => contacts.getContacts} | 38 +- .../method/contacts.getLocated | 197 + ...help.getNearestDc => contacts.getStatuses} | 21 +- .../method/contacts.toggleTopPeers | 153 + .../method/help.getAppConfig | 142 + .../method/help.getAppUpdate | 150 + .../method/invokeWithLayer.html | 204 + .../method/langpack.getLanguage | 154 + .../method/messages.getDialogUnreadMarks | 133 + .../method/messages.getExportedChatInvite | 155 + ...eteMessages => messages.getGameHighScores} | 56 +- ...filePhoto => messages.getInlineBotResults} | 89 +- .../method/messages.getScheduledMessages | 179 + .../method/messages.saveDraft | 202 + .../method/messages.sendInlineBotResult | 344 + .../method/messages.sendMedia | 518 + .../method/messages.sendMessage | 398 + .../method/messages.sendMultiMedia | 263 + .../method/phone.confirmCall | 188 + ...cardGroupCall => phone.editGroupCallTitle} | 23 +- ...MessagesRange.html => photos.deletePhotos} | 30 +- ...ls.deleteMessages => photos.getUserPhotos} | 67 +- .../method/stats.getBroadcastStats | 194 + .../method/stats.loadAsyncGraph | 193 + .../method/stickers.createStickerSet | 282 - .../method/upload.saveFilePart | 183 + .../method/users.getFullUser | 6 +- data/core.telegram.org/methods.html | 2306 ++++ data/core.telegram.org/mtproto.html | 260 + .../mtproto/security_guidelines.html | 177 + data/core.telegram.org/passport.html | 690 ++ data/core.telegram.org/passport/example.html | 585 + .../reproducible-builds.html | 488 + data/core.telegram.org/schema.html | 1800 ++++ data/core.telegram.org/schema/json.html | 1 + data/core.telegram.org/stickers.html | 249 + .../stickers/webm-vp9-encoding.html | 159 + data/core.telegram.org/tdlib.html | 147 + data/core.telegram.org/themes.html | 143 + .../type/BotInlineMessage.html | 168 + data/core.telegram.org/type/DialogPeer.html | 148 + .../{InputClientProxy.html => InputFile.html} | 29 +- ...DateRangeDays.html => InputGroupCall.html} | 20 +- .../type/InputSingleMedia.html | 148 - ...arestDc.html => InputWebFileLocation.html} | 40 +- ...elp.InviteText => LangPackDifference.html} | 31 +- .../core.telegram.org/type/MessageAction.html | 283 + ...t.html => MessageInteractionCounters.html} | 20 +- ...nputWebDocument.html => PageListItem.html} | 25 +- .../core.telegram.org/type/PageTableCell.html | 143 + .../type/PaymentRequestedInfo.html | 143 + data/core.telegram.org/type/Peer.html | 153 + ...p.RecentMeUrls => PeerNotifySettings.html} | 26 +- .../type/Photo.html | 6 +- data/core.telegram.org/type/SecureFile.html | 151 + .../type/{phone.PhoneCall => Theme.html} | 38 +- .../type/{BotInfo.html => TopPeer.html} | 20 +- ...{RecentMeUrl.html => TopPeerCategory.html} | 59 +- data/core.telegram.org/type/Update.html | 603 ++ ...tiveChats => account.AutoDownloadSettings} | 26 +- .../type/{long.html => double.html} | 16 +- data/core.telegram.org/type/help.Country | 143 - .../type/help.PassportConfig | 169 + data/core.telegram.org/type/messages.ChatFull | 168 + ...dminsWithInvites => messages.MessageViews} | 26 +- data/core.telegram.org/type/messages.Messages | 229 - .../type/messages.SearchCounter | 143 + ...dsDifference.html => payments.PaymentForm} | 31 +- .../type/payments.PaymentReceipt | 6 +- ...nkInfo => payments.ValidatedRequestedInfo} | 31 +- .../type/photos.Photo | 6 +- data/core.telegram.org/video_stickers.html | 115 + data/core.telegram.org/widgets.html | 141 + data/corefork.telegram.org/api.html | 253 + .../api/account-deletion.html | 129 + .../api/animated-emojis.html | 187 + data/corefork.telegram.org/api/auth.html | 202 + data/corefork.telegram.org/api/bots.html | 142 + .../api/bots/buttons.html | 242 + .../api/bots/commands.html | 140 + .../corefork.telegram.org/api/bots/games.html | 171 + .../api/bots/inline.html | 215 + data/corefork.telegram.org/api/channel.html | 154 + data/corefork.telegram.org/api/config.html | 422 + .../corefork.telegram.org/api/datacenter.html | 148 + data/corefork.telegram.org/api/dice.html | 149 + .../corefork.telegram.org/api/discussion.html | 151 + data/corefork.telegram.org/api/drafts.html | 131 + .../corefork.telegram.org/api/end-to-end.html | 244 + .../api/end-to-end/pfs.html | 176 + .../api/end-to-end/seq_no.html | 173 + .../api/end-to-end/voice-calls.html | 178 + .../api/end-to-end_v1.html | 225 + data/corefork.telegram.org/api/errors.html | 189 + data/corefork.telegram.org/api/files.html | 568 + data/corefork.telegram.org/api/folders.html | 179 + data/corefork.telegram.org/api/import.html | 173 + data/corefork.telegram.org/api/invoking.html | 154 + .../api/live-location.html | 178 + data/corefork.telegram.org/api/mentions.html | 152 + data/corefork.telegram.org/api/min.html | 142 + .../api/obtaining_api_id.html | 140 + data/corefork.telegram.org/api/offsets.html | 170 + .../api/optimisation.html | 150 + data/corefork.telegram.org/api/passport.html | 674 ++ data/corefork.telegram.org/api/payments.html | 366 + data/corefork.telegram.org/api/pfs.html | 138 + data/corefork.telegram.org/api/pin.html | 149 + data/corefork.telegram.org/api/poll.html | 199 + .../api/push-updates.html | 1009 ++ data/corefork.telegram.org/api/qr-login.html | 154 + .../api/recent-actions.html | 154 + data/corefork.telegram.org/api/rights.html | 133 + .../api/scheduled-messages.html | 156 + data/corefork.telegram.org/api/search.html | 179 + data/corefork.telegram.org/api/srp.html | 307 + data/corefork.telegram.org/api/stats.html | 297 + .../corefork.telegram.org/api/top-rating.html | 145 + data/corefork.telegram.org/api/updates.html | 226 + .../api/url-authorization.html | 160 + .../corefork.telegram.org/api/web-events.html | 175 + data/corefork.telegram.org/bots.html | 420 + data/corefork.telegram.org/bots/api.html | 9288 ++++++++++++++++ ...Participants => account.authorizationForm} | 53 +- .../constructor/account.password | 213 + .../constructor/account.passwordInputSettings | 176 + .../account.resetPasswordRequestedWait | 147 + .../auth.authorizationSignUpRequired | 155 + .../constructor/auth.loginToken | 155 + ...roupCall.html => auth.loginTokenMigrateTo} | 30 +- .../constructor/auth.loginTokenSuccess | 147 + ...geMediaInvoice.html => authorization.html} | 123 +- .../constructor/channel.html | 289 + .../channelParticipantsMentions.html | 161 + .../constructor/channels.channelParticipant | 157 - .../constructor/chat.html} | 119 +- ...ments.paymentForm => chatAdminRights.html} | 97 +- .../constructor/chatBannedRights.html | 216 + .../constructor/chatFull.html | 231 + .../constructor/config.html | 420 + ...=> decryptedMessageActionNotifyLayer.html} | 45 +- .../constructor/decryptedMessageLayer.html | 173 + .../decryptedMessageMediaPhoto.html | 191 + ...uery.html => decryptedMessageService.html} | 42 +- .../constructor/dialogFilter.html | 220 + .../constructor/disabledFeature.html | 163 - .../constructor/encryptedChat.html} | 38 +- ...Theme.html => encryptedChatDiscarded.html} | 30 +- ...epted.html => encryptedChatRequested.html} | 48 +- .../constructor/encryptedMessage.html | 170 + .../constructor/game.html | 182 + .../constructor/globalPrivacySettings.html | 152 + .../constructor/help.termsOfService | 175 + .../constructor/inputChannelFromMessage.html | 160 + ...eptKey.html => inputCheckPasswordSRP.html} | 36 +- ...leLocation.html => inputFileLocation.html} | 47 +- ...{statsGraphError.html => inputGameID.html} | 33 +- ...themeSettings.html => inputMediaPoll.html} | 55 +- .../inputMediaUploadedThumbDocument.html | 176 - .../inputMessageEntityMentionName.html | 162 + .../inputMessagesFilterPinned.html | 6 +- .../inputPeerChannelFromMessage.html | 160 + .../inputPeerPhotoFileLocation.html | 162 + .../constructor/inputPeerUser.html} | 32 +- .../constructor/inputPeerUserFromMessage.html | 160 + .../constructor/inputSecureValue.html | 190 + .../constructor/inputUserFromMessage.html | 160 + ...s.messageStats => keyboardButtonGame.html} | 24 +- ...ntialsCard.html => keyboardButtonUrl.html} | 26 +- .../constructor/keyboardButtonUrlAuth.html | 179 + .../constructor/message.html | 302 + ...s.html => messageActionChatMigrateTo.html} | 35 +- ...l => messageActionSecureValuesSentMe.html} | 30 +- .../constructor/messageEntityMention.html | 155 + .../constructor/messageEntityMentionName.html | 162 + .../constructor/messageFwdHeader.html | 195 + ...eMediaVideo.html => messageMediaGame.html} | 22 +- ...ionAbortKey.html => messageMediaPoll.html} | 30 +- .../constructor/messageService.html | 212 + ...viteImporter.html => messageUserVote.html} | 27 +- ...hoto.html => messages.dhConfigNotModified} | 24 +- .../constructor/messages.historyImport | 150 + ...BKDF2HMACSHA512iter100000SHA256ModPow.html | 165 + .../constructor/phone.exportedGroupCallInvite | 147 - .../constructor/phone.groupCall | 170 - ...utMediaUploadedDocument.html => poll.html} | 83 +- .../constructor/pollResults.html | 184 + .../constructor/replyKeyboardHide.html | 152 + .../secureCredentialsEncrypted.html | 159 + .../constructor/secureData.html} | 41 +- .../constructor/secureFile.html | 180 + .../constructor/secureValue.html | 194 + .../constructor/secureValueTypeAddress.html | 132 + .../secureValueTypeBankStatement.html | 132 + .../secureValueTypeDriverLicense.html | 132 + ...ontacts.html => secureValueTypeEmail.html} | 18 +- .../secureValueTypeIdentityCard.html | 132 + ...l => secureValueTypeInternalPassport.html} | 21 +- .../constructor/secureValueTypePassport.html | 132 + ... secureValueTypePassportRegistration.html} | 21 +- .../secureValueTypePersonalDetails.html | 132 + .../secureValueTypeRentalAgreement.html | 132 + .../secureValueTypeTemporaryRegistration.html | 132 + ...p.html => secureValueTypeUtilityBill.html} | 19 +- .../{statsPercentValue.html => topPeer.html} | 33 +- ...ll.html => topPeerCategoryBotsInline.html} | 18 +- .../constructor/topPeerCategoryBotsPM.html | 132 + .../constructor/topPeerCategoryChannels.html | 132 + .../topPeerCategoryCorrespondents.html | 132 + ....html => topPeerCategoryForwardChats.html} | 18 +- .../topPeerCategoryForwardUsers.html | 132 + .../constructor/topPeerCategoryGroups.html | 132 + .../topPeerCategoryPhoneCalls.html | 132 + .../constructor/updateDialogFilter.html | 6 +- ...ages.html => updateDialogFilterOrder.html} | 29 +- .../constructor/updateDialogFilters.html | 135 + ...ountDaysTTL.html => updateEncryption.html} | 27 +- .../constructor/updateFolderPeers.html | 162 + .../constructor/updateLoginToken.html | 132 + ...ckerSetThumb.html => updateMessageID.html} | 34 +- ...utGeoPoint.html => updateMessagePoll.html} | 36 +- .../constructor/updateMessagePollVote.html | 165 + ...ileLocation.html => updateNewMessage.html} | 61 +- .../constructor/updatePinnedMessages.html | 175 + ...essages.statedMessageLink => updates.html} | 43 +- ...onSeen.html => urlAuthResultAccepted.html} | 28 +- .../constructor/urlAuthResultRequest.html | 165 + .../constructor/user.html | 287 + .../constructor/userFull.html | 239 + .../css/core-widgets.css | 105 + .../corefork.telegram.org/getProxyConfig.html | 24 + data/corefork.telegram.org/js/core-widgets.js | 279 + .../method/account.acceptAuthorization | 170 + .../method/account.cancelPasswordEmail | 138 + ...heckPhone => account.confirmPasswordEmail} | 45 +- ...yptedSpam => account.declinePasswordReset} | 42 +- .../method/account.deleteAccount | 170 + .../method/account.getAuthorizationForm | 176 + .../method/account.getPasswordSettings | 170 + .../method/account.getWebAuthorizations | 136 + .../method/account.resetPassword | 139 + ...gPack => account.setGlobalPrivacySettings} | 35 +- .../method/account.updatePasswordSettings | 207 + .../method/auth.acceptLoginToken | 171 + .../method/auth.checkPassword | 180 + .../method/auth.checkRecoveryPassword | 174 + .../method/auth.exportLoginToken | 183 + .../method/auth.importLoginToken | 187 + .../method/auth.recoverPassword | 187 + .../method/auth.requestPasswordRecovery | 159 + ...sages.getDiscussionMessage => auth.signIn} | 88 +- data/corefork.telegram.org/method/auth.signUp | 236 + .../method/channels.convertToGigagroup | 177 + ...CallParticipant => channels.createChannel} | 103 +- .../method/channels.editAdmin | 301 + .../method/channels.editBanned} | 76 +- ...esolveUsername => channels.getFullChannel} | 49 +- .../method/channels.getGroupsForDiscussion | 144 + .../method/channels.getParticipants | 203 + .../method/channels.setDiscussionGroup | 200 + .../method/channels.viewSponsoredMessage | 177 - ...roupCallJoinAs => contacts.toggleTopPeers} | 32 +- .../method/folders.deleteFolder | 175 + .../method/folders.editPeerFolders | 175 + ...dChatInvites => help.acceptTermsOfService} | 27 +- .../method/help.dismissSuggestion | 160 + .../method/help.getAppChangelog | 162 + .../method/help.getAppConfig | 142 + .../method/help.getAppUpdate | 150 + .../method/help.getConfig | 192 + .../method/help.getCountriesList | 158 + ....getContentSettings => help.getInviteText} | 20 +- .../method/help.getSupport | 134 + .../method/help.getSupportName | 151 + .../method/help.getTermsOfServiceUpdate | 135 + ...tAttachedStickers => invokeAfterMsgs.html} | 30 +- ...s.addStickerToSet => invokeWithLayer.html} | 69 +- .../method/messages.acceptEncryption | 190 + .../method/messages.checkHistoryImportPeer | 172 + .../method/messages.createChat | 197 + .../method/messages.discardEncryption | 187 + .../method/messages.editChatAdmin | 195 + .../messages.editChatDefaultBannedRights | 206 + .../method/messages.getDhConfig | 175 + .../method/messages.getDialogFilters | 136 + ...mentReceipt => messages.getGameHighScores} | 44 +- .../method/messages.getInlineGameHighScores | 177 + .../messages.getMessageReadParticipants | 173 + .../method/messages.getPollResults | 177 + .../method/messages.getStickers | 175 + .../method/messages.getSuggestedDialogFilters | 136 + ....getHistory => messages.getUnreadMentions} | 48 +- .../method/messages.migrateChat | 190 + .../method/messages.readMentions} | 39 +- ...pack.getStrings => messages.receivedQueue} | 43 +- .../method/messages.requestUrlAuth} | 35 +- ...tMessagePublicForwards => messages.search} | 145 +- .../method/messages.sendEncrypted | 210 + ...rofilePhoto => messages.sendEncryptedFile} | 96 +- .../method/messages.sendMedia | 518 + .../method/messages.sendMessage | 398 + .../method/messages.sendVote | 220 + .../method/messages.setGameScore} | 81 +- ...backAnswer => messages.setInlineGameScore} | 59 +- .../method/messages.setTyping | 240 + .../method/messages.startHistoryImport | 180 + .../method/messages.unpinAllMessages | 6 +- ...ssageStats => messages.updateDialogFilter} | 57 +- ...Info => messages.updateDialogFiltersOrder} | 37 +- .../method/messages.updatePinnedMessage | 238 + .../method/messages.uploadImportedMedia | 6 +- .../method/updates.getDifference | 225 + .../method/users.setSecureValueErrors | 176 + data/corefork.telegram.org/mtproto.html | 260 + data/corefork.telegram.org/mtproto/TL.html | 210 + .../mtproto/description.html | 238 + .../mtproto/samples-auth_key.html | 748 ++ .../mtproto/security_guidelines.html | 177 + .../mtproto/serialize.html | 240 + .../mtproto/service_messages.html | 195 + .../service_messages_about_messages.html | 185 + data/corefork.telegram.org/mtproto_v1.html | 229 + data/corefork.telegram.org/passport.html | 690 ++ .../passport/encryption.html | 606 ++ .../passport/example.html | 585 + .../schema/end-to-end.html | 225 + data/corefork.telegram.org/schema/json.html | 1 + .../corefork.telegram.org/schema/mtproto.html | 204 + .../DecryptedMessage.html} | 63 +- data/corefork.telegram.org/type/FileHash.html | 143 - .../type/InputCheckPasswordSRP.html | 151 + .../{auth.SentCodeType => InputPeer.html} | 53 +- .../type/MessageMedia.html | 232 - .../type/{InputGeoPoint.html => Peer.html} | 31 +- .../type/PhoneConnection.html | 148 - .../{ChatAdminRights.html => SecureData.html} | 24 +- .../type/SecureFile.html | 151 + .../{auth.CodeType => SecurePlainData.html} | 35 +- .../{WebPage.html => SecureValueType.html} | 94 +- .../type/TopPeerCategory.html | 178 + data/corefork.telegram.org/type/Update.html | 603 ++ .../{ContactStatus.html => Vector t.html} | 20 +- .../type/WallPaperSettings.html | 143 - .../type/WebPageAttribute.html | 143 - ...CardData => account.PasswordInputSettings} | 42 +- data/corefork.telegram.org/type/bytes.html | 125 + ...html => messages.CheckedHistoryImportPeer} | 41 +- data/corefork.telegram.org/widgets.html | 141 + .../widgets/discussion.html | 226 + data/corefork.telegram.org/widgets/login.html | 404 + data/corefork.telegram.org/widgets/post.html | 240 + data/corefork.telegram.org/widgets/share.html | 250 + data/telegram.org.html | 283 + data/telegram.org/android.html | 79 + data/telegram.org/blog.html | 268 + data/telegram.org/blog/400-million.html | 272 + data/telegram.org/blog/admin-revolution.html | 261 + .../blog/albums-saved-messages.html | 268 + data/telegram.org/blog/android-2-0.html | 257 + ...ncrypted-cdns.html => android-themes.html} | 82 +- .../blog/archive-and-new-design.html | 318 + data/telegram.org/blog/autodelete-inv2.html | 299 + data/telegram.org/blog/bots-2-0.html | 260 + .../telegram.org/blog/cache-and-stickers.html | 231 + data/telegram.org/blog/captions-places.html | 244 + data/telegram.org/blog/channels-2-0.html | 246 + data/telegram.org/blog/channels.html | 224 + ...hemes-interactive-emoji-read-receipts.html | 297 + .../blog/contacts-local-groups.html | 272 + data/telegram.org/blog/coronavirus.html | 254 + data/telegram.org/blog/cryptocontest.html | 224 + data/telegram.org/blog/desktop-1-0.html | 250 + data/telegram.org/blog/desktop-compact.html | 213 + .../blog/discover-stickers-and-more.html | 246 + data/telegram.org/blog/edit.html | 245 + data/telegram.org/blog/export-and-more.html | 238 + .../filters-anonymous-admins-comments.html | 261 + data/telegram.org/blog/group-video-calls.html | 264 + data/telegram.org/blog/inline-bots.html | 234 + data/telegram.org/blog/instant-camera.html | 229 + data/telegram.org/blog/invite-links.html | 217 + .../live-streams-forwarding-next-channel.html | 285 + data/telegram.org/blog/masks.html | 248 + data/telegram.org/blog/moar-stickers.html | 343 + data/telegram.org/blog/move-history.html | 284 + .../blog/new-profiles-people-nearby.html | 263 + data/telegram.org/blog/passport.html | 233 + .../payments-2-0-scheduled-voice-chats.html | 319 + data/telegram.org/blog/payments.html | 253 + .../blog/photo-editor-and-passcodes.html | 252 + data/telegram.org/blog/polls-2-0-vmq.html | 271 + data/telegram.org/blog/polls.html | 230 + .../blog/privacy-discussions-web-bots.html | 284 + .../telegram.org/blog/privacy-revolution.html | 226 + .../blog/reactions-spoilers-translations.html | 300 + .../blog/replies-mentions-stickers.html | 257 + .../blog/scheduled-reminders-themes.html | 264 + data/telegram.org/blog/shared-links.html | 221 + .../blog/silent-messages-slow-mode.html | 296 + .../blog/stickers-meet-art-and-history.html | 338 + .../blog/stickers-revolution.html | 231 + data/telegram.org/blog/supergroups.html | 251 + .../telegram-me-change-number-and-pfs.html | 228 + data/telegram.org/blog/translations-iv2.html | 276 + data/telegram.org/blog/video-1000.html | 354 + data/telegram.org/blog/video-calls.html | 234 + data/telegram.org/blog/video-editor-gifs.html | 252 + .../blog/video-messages-and-telescope.html | 247 + .../blog/video-stickers-better-reactions.html | 273 + ...orld.html => voice-chats-on-steroids.html} | 119 +- data/telegram.org/blog/voice-chats.html | 311 + data/telegram.org/faq_channels.html | 165 + data/telegram.org/faq_spam.html | 163 + data/telegram.org/privacy.html | 299 + data/telegram.org/support.html | 141 + .../telegram.org/{api.html => teststore.html} | 2 +- data/telegram.org/tour/channels.html | 294 + data/telegram.org/tour/groups.html | 266 + data/telegram.org/tour/quizbot.html | 215 + 614 files changed, 117726 insertions(+), 6454 deletions(-) create mode 100644 data/core.telegram.org.html create mode 100644 data/core.telegram.org/api.html create mode 100644 data/core.telegram.org/api/account-deletion.html create mode 100644 data/core.telegram.org/api/animated-emojis.html create mode 100644 data/core.telegram.org/api/auth.html create mode 100644 data/core.telegram.org/api/bots.html create mode 100644 data/core.telegram.org/api/bots/buttons.html create mode 100644 data/core.telegram.org/api/bots/commands.html create mode 100644 data/core.telegram.org/api/bots/games.html create mode 100644 data/core.telegram.org/api/bots/inline.html create mode 100644 data/core.telegram.org/api/channel.html create mode 100644 data/core.telegram.org/api/config.html create mode 100644 data/core.telegram.org/api/datacenter.html create mode 100644 data/core.telegram.org/api/dice.html create mode 100644 data/core.telegram.org/api/discussion.html create mode 100644 data/core.telegram.org/api/drafts.html create mode 100644 data/core.telegram.org/api/end-to-end/video-calls.html create mode 100644 data/core.telegram.org/api/entities.html create mode 100644 data/core.telegram.org/api/errors.html create mode 100644 data/core.telegram.org/api/file_reference.html create mode 100644 data/core.telegram.org/api/files.html create mode 100644 data/core.telegram.org/api/folders.html create mode 100644 data/core.telegram.org/api/import.html create mode 100644 data/core.telegram.org/api/invoking.html create mode 100644 data/core.telegram.org/api/live-location.html create mode 100644 data/core.telegram.org/api/mentions.html create mode 100644 data/core.telegram.org/api/min.html create mode 100644 data/core.telegram.org/api/obtaining_api_id.html create mode 100644 data/core.telegram.org/api/offsets.html create mode 100644 data/core.telegram.org/api/optimisation.html create mode 100644 data/core.telegram.org/api/passport.html create mode 100644 data/core.telegram.org/api/payments.html create mode 100644 data/core.telegram.org/api/pfs.html create mode 100644 data/core.telegram.org/api/pin.html create mode 100644 data/core.telegram.org/api/poll.html create mode 100644 data/core.telegram.org/api/push-updates.html create mode 100644 data/core.telegram.org/api/qr-login.html create mode 100644 data/core.telegram.org/api/recent-actions.html create mode 100644 data/core.telegram.org/api/rights.html create mode 100644 data/core.telegram.org/api/scheduled-messages.html create mode 100644 data/core.telegram.org/api/search.html create mode 100644 data/core.telegram.org/api/srp.html create mode 100644 data/core.telegram.org/api/stats.html create mode 100644 data/core.telegram.org/api/threads.html create mode 100644 data/core.telegram.org/api/top-rating.html create mode 100644 data/core.telegram.org/api/updates.html create mode 100644 data/core.telegram.org/api/url-authorization.html create mode 100644 data/core.telegram.org/api/web-events.html create mode 100644 data/core.telegram.org/apple_privacy.html create mode 100644 data/core.telegram.org/bots.html create mode 100644 data/core.telegram.org/bots/api.html create mode 100644 data/core.telegram.org/bots/faq.html create mode 100644 data/core.telegram.org/bots/inline.html rename data/core.telegram.org/constructor/{topPeerCategoryPeers.html => account.chatThemes} (85%) rename data/core.telegram.org/constructor/{messages.messages => account.privacyRules} (87%) create mode 100644 data/core.telegram.org/constructor/account.wallPapersNotModified create mode 100644 data/core.telegram.org/constructor/auth.codeTypeFlashCall create mode 100644 data/core.telegram.org/constructor/botCommandScopePeerUser.html rename data/{corefork.telegram.org/constructor/botInlineMessageMediaGeo.html => core.telegram.org/constructor/botInlineMessageMediaAuto.html} (79%) rename data/core.telegram.org/constructor/{account.sentEmailCode => cdnPublicKey.html} (86%) create mode 100644 data/core.telegram.org/constructor/channel.html rename data/core.telegram.org/constructor/{inputChatPhoto.html => channelAdminLogEventActionDeleteMessage.html} (88%) rename data/core.telegram.org/constructor/{channelAdminLogEventActionParticipantVolume.html => channelAdminLogEventActionDiscardGroupCall.html} (88%) create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionParticipantJoinByInvite.html rename data/core.telegram.org/constructor/{messageActionChannelCreate.html => channelParticipantsSearch.html} (90%) create mode 100644 data/core.telegram.org/constructor/chatBannedRights.html rename data/core.telegram.org/constructor/{messages.sentEncryptedFile => chatInvitePeek.html} (87%) create mode 100644 data/core.telegram.org/constructor/config.html create mode 100644 data/core.telegram.org/constructor/contacts.topPeersNotModified create mode 100644 data/core.telegram.org/constructor/dialog.html create mode 100644 data/core.telegram.org/constructor/dialogFolder.html create mode 100644 data/core.telegram.org/constructor/documentAttributeSticker.html create mode 100644 data/core.telegram.org/constructor/documentAttributeVideo.html rename data/core.telegram.org/constructor/{encryptedFileEmpty.html => geoPointEmpty.html} (92%) rename data/core.telegram.org/constructor/{chatParticipant.html => groupCallDiscarded.html} (89%) create mode 100644 data/core.telegram.org/constructor/help.countryCode create mode 100644 data/core.telegram.org/constructor/help.inviteText create mode 100644 data/core.telegram.org/constructor/help.termsOfServiceUpdateEmpty rename data/core.telegram.org/constructor/{updateBotInlineSend.html => inputBotInlineMessageMediaInvoice.html} (77%) create mode 100644 data/core.telegram.org/constructor/inputBotInlineMessageText.html create mode 100644 data/core.telegram.org/constructor/inputBotInlineResultPhoto.html create mode 100644 data/core.telegram.org/constructor/inputCheckPasswordSRP.html rename data/core.telegram.org/constructor/{inputStickerSetDice.html => inputMediaDice.html} (91%) create mode 100644 data/core.telegram.org/constructor/inputMediaEmpty.html rename data/core.telegram.org/constructor/{inputMessagesFilterVoice.html => inputMessagesFilterContacts.html} (94%) create mode 100644 data/core.telegram.org/constructor/inputMessagesFilterPhotos.html create mode 100644 data/core.telegram.org/constructor/inputMessagesFilterRoundVideo.html create mode 100644 data/core.telegram.org/constructor/inputMessagesFilterVideo.html rename data/core.telegram.org/constructor/{inputPrivacyValueDisallowContacts.html => inputPrivacyKeyChatInvite.html} (91%) create mode 100644 data/core.telegram.org/constructor/inputPrivacyKeyForwards.html rename data/core.telegram.org/constructor/{inputStickerSetAnimatedEmoji.html => inputStickerSetEmpty.html} (92%) rename data/core.telegram.org/constructor/{peerChannel.html => jsonBool.html} (91%) rename data/core.telegram.org/constructor/{textPhone.html => keyboardButtonUrl.html} (90%) create mode 100644 data/core.telegram.org/constructor/langPackString.html rename data/core.telegram.org/constructor/{inputStickerSetID.html => messageActionChatJoinedByLink.html} (89%) rename data/core.telegram.org/constructor/{popularContact.html => messageActionGameScore.html} (90%) rename data/core.telegram.org/constructor/{messageActionChatDeletePhoto.html => messageActionHistoryClear.html} (92%) rename data/core.telegram.org/constructor/{auth.authorization => messageActionPhoneCall.html} (84%) rename data/core.telegram.org/constructor/{messageActionInviteToGroupCall.html => messageActionSecureValuesSent.html} (85%) rename data/core.telegram.org/constructor/{auth.sentCodeTypeCall => messageEntityBotCommand.html} (88%) create mode 100644 data/core.telegram.org/constructor/messageMediaDice.html rename data/core.telegram.org/constructor/{userEmpty.html => messageMediaGeo.html} (91%) rename data/core.telegram.org/constructor/{encryptedFile.html => messages.affectedHistory} (86%) rename data/core.telegram.org/constructor/{channels.channelParticipant => messages.chatAdminsWithInvites} (86%) rename data/core.telegram.org/constructor/{secureValueHash.html => messages.dhConfigNotModified} (89%) rename data/core.telegram.org/constructor/{messages.dialogs => messages.dialogsSlice} (86%) delete mode 100644 data/core.telegram.org/constructor/messages.exportedChatInviteReplaced rename data/{corefork.telegram.org => core.telegram.org}/constructor/messages.exportedChatInvites (98%) create mode 100644 data/core.telegram.org/constructor/messages.favedStickers create mode 100644 data/core.telegram.org/constructor/messages.historyImportParsed create mode 100644 data/core.telegram.org/constructor/messages.recentStickersNotModified create mode 100644 data/core.telegram.org/constructor/messages.savedGifsNotModified create mode 100644 data/core.telegram.org/constructor/messages.sponsoredMessages create mode 100644 data/core.telegram.org/constructor/messages.stickerSetInstallResultSuccess create mode 100644 data/core.telegram.org/constructor/nearestDc.html create mode 100644 data/core.telegram.org/constructor/notifyChats.html create mode 100644 data/core.telegram.org/constructor/pageBlockAuthorDate.html create mode 100644 data/core.telegram.org/constructor/pageBlockFooter.html create mode 100644 data/core.telegram.org/constructor/pageBlockPreformatted.html create mode 100644 data/core.telegram.org/constructor/pageBlockSlideshow.html rename data/core.telegram.org/constructor/{textPlain.html => pageBlockSubtitle.html} (91%) rename data/core.telegram.org/constructor/{pageBlockTable.html => pageBlockVideo.html} (88%) delete mode 100644 data/core.telegram.org/constructor/pageListOrderedItemBlocks.html rename data/core.telegram.org/constructor/{messages.botCallbackAnswer => pageRelatedArticle.html} (82%) rename data/{corefork.telegram.org/constructor/autoDownloadSettings.html => core.telegram.org/constructor/pageTableCell.html} (78%) rename data/{corefork.telegram.org/constructor/messages.inactiveChats => core.telegram.org/constructor/phone.joinAsPeers} (85%) create mode 100644 data/core.telegram.org/constructor/phoneCallDiscarded.html rename data/core.telegram.org/constructor/{messageMediaContact.html => phoneConnection.html} (85%) rename data/{corefork.telegram.org/constructor/photoSizeProgressive.html => core.telegram.org/constructor/photoStrippedSize.html} (84%) create mode 100644 data/core.telegram.org/constructor/poll.html rename data/core.telegram.org/constructor/{privacyValueDisallowChatParticipants.html => privacyValueAllowUsers.html} (90%) create mode 100644 data/core.telegram.org/constructor/receivedNotifyMessage.html rename data/core.telegram.org/constructor/{secureRequiredTypeOneOf.html => replyInlineMarkup.html} (89%) rename data/core.telegram.org/constructor/{inputMediaPhotoExternal.html => replyKeyboardHide.html} (86%) rename data/{corefork.telegram.org => core.telegram.org}/constructor/replyKeyboardMarkup.html (98%) create mode 100644 data/core.telegram.org/constructor/secureValueErrorSelfie.html create mode 100644 data/core.telegram.org/constructor/secureValueErrorTranslationFile.html create mode 100644 data/core.telegram.org/constructor/secureValueTypeEmail.html create mode 100644 data/core.telegram.org/constructor/secureValueTypeRentalAgreement.html rename data/core.telegram.org/constructor/{sendMessageUploadPhotoAction.html => sendMessageHistoryImportAction.html} (92%) rename data/core.telegram.org/constructor/{messageActionScreenshotTaken.html => sendMessageRecordVideoAction.html} (91%) rename data/core.telegram.org/constructor/{contacts.importedContacts => stats.megagroupStats} (62%) create mode 100644 data/core.telegram.org/constructor/statsGraphAsync.html rename data/core.telegram.org/constructor/{statsGroupTopPoster.html => statsGroupTopAdmin.html} (88%) create mode 100644 data/core.telegram.org/constructor/storage.fileUnknown create mode 100644 data/core.telegram.org/constructor/textImage.html create mode 100644 data/core.telegram.org/constructor/topPeer.html create mode 100644 data/core.telegram.org/constructor/topPeerCategoryForwardUsers.html create mode 100644 data/core.telegram.org/constructor/updateBotStopped.html rename data/core.telegram.org/constructor/{updateChatParticipant.html => updateChannelParticipant.html} (85%) rename data/core.telegram.org/constructor/{updateInlineBotCallbackQuery.html => updateChannelUserTyping.html} (78%) rename data/core.telegram.org/constructor/{messageActionGeoProximityReached.html => updateChannelWebPage.html} (81%) rename data/{corefork.telegram.org => core.telegram.org}/constructor/updateChatParticipantDelete.html (98%) create mode 100644 data/core.telegram.org/constructor/updateDeleteChannelMessages.html rename data/core.telegram.org/constructor/{notifyPeer.html => updateDraftMessage.html} (86%) create mode 100644 data/core.telegram.org/constructor/updateFavedStickers.html rename data/core.telegram.org/constructor/{updatePeerHistoryTTL.html => updateMessagePoll.html} (87%) rename data/core.telegram.org/constructor/{messages.channelMessages => updatePinnedChannelMessages.html} (78%) rename data/core.telegram.org/constructor/{updateBotPrecheckoutQuery.html => updateReadChannelDiscussionInbox.html} (76%) create mode 100644 data/core.telegram.org/constructor/updateReadHistoryInbox.html rename data/core.telegram.org/constructor/{updateContactsReset.html => updateRecentStickers.html} (92%) create mode 100644 data/core.telegram.org/constructor/updateServiceNotification.html rename data/{corefork.telegram.org => core.telegram.org}/constructor/updateShortSentMessage.html (98%) rename data/core.telegram.org/constructor/{phoneCallEmpty.html => updateTheme.html} (91%) create mode 100644 data/core.telegram.org/constructor/upload.cdnFile rename data/core.telegram.org/constructor/{sendMessageEmojiInteraction.html => upload.fileCdnRedirect} (80%) create mode 100644 data/core.telegram.org/constructor/user.html rename data/core.telegram.org/constructor/{inlineQueryPeerTypePM.html => userProfilePhotoEmpty.html} (91%) create mode 100644 data/core.telegram.org/constructor/webAuthorization.html rename data/core.telegram.org/constructor/{webDocumentNoProxy.html => webDocument.html} (86%) create mode 100644 data/core.telegram.org/contest300K.html create mode 100644 data/core.telegram.org/css/bootstrap-extra.css create mode 100644 data/core.telegram.org/css/telegram-extra.css create mode 100644 data/core.telegram.org/getProxyConfig.html create mode 100644 data/core.telegram.org/import-stickers.html create mode 100644 data/core.telegram.org/js/jquery-ui.min.js create mode 100644 data/core.telegram.org/js/telegram-passport2.js rename data/core.telegram.org/method/{messages.checkChatInvite => account.confirmPhone} (81%) create mode 100644 data/core.telegram.org/method/account.createTheme create mode 100644 data/core.telegram.org/method/account.deleteAccount rename data/core.telegram.org/method/{auth.logOut => account.getAuthorizations} (88%) rename data/{corefork.telegram.org => core.telegram.org}/method/account.getChatThemes (98%) rename data/core.telegram.org/method/{account.resetWallPapers => account.getContactSignUpNotification} (91%) rename data/core.telegram.org/method/{account.getNotifySettings => account.getTheme} (82%) create mode 100644 data/core.telegram.org/method/account.sendConfirmPhoneCode rename data/core.telegram.org/method/{account.saveAutoDownloadSettings => account.setContentSettings} (86%) create mode 100644 data/core.telegram.org/method/account.verifyPhone delete mode 100644 data/core.telegram.org/method/auth.bindTempAuthKey rename data/core.telegram.org/method/{channels.readHistory => auth.cancelCode} (85%) rename data/{corefork.telegram.org/method/auth.sendCode => core.telegram.org/method/auth.resendCode} (77%) create mode 100644 data/core.telegram.org/method/bots.getBotCommands rename data/core.telegram.org/method/{messages.getHistory => channels.getMessages} (78%) rename data/core.telegram.org/method/{channels.deleteUserHistory => channels.getParticipant} (83%) rename data/core.telegram.org/method/{channels.viewSponsoredMessage => channels.getSponsoredMessages} (85%) rename data/core.telegram.org/method/{messages.getFavedStickers => contacts.getContactIDs} (86%) rename data/core.telegram.org/method/{messages.getRecentStickers => contacts.getContacts} (80%) create mode 100644 data/core.telegram.org/method/contacts.getLocated rename data/core.telegram.org/method/{help.getNearestDc => contacts.getStatuses} (89%) create mode 100644 data/core.telegram.org/method/contacts.toggleTopPeers create mode 100644 data/core.telegram.org/method/help.getAppConfig create mode 100644 data/core.telegram.org/method/help.getAppUpdate create mode 100644 data/core.telegram.org/method/invokeWithLayer.html create mode 100644 data/core.telegram.org/method/langpack.getLanguage create mode 100644 data/core.telegram.org/method/messages.getDialogUnreadMarks create mode 100644 data/core.telegram.org/method/messages.getExportedChatInvite rename data/core.telegram.org/method/{messages.deleteMessages => messages.getGameHighScores} (81%) rename data/core.telegram.org/method/{photos.uploadProfilePhoto => messages.getInlineBotResults} (73%) create mode 100644 data/core.telegram.org/method/messages.getScheduledMessages create mode 100644 data/core.telegram.org/method/messages.saveDraft create mode 100644 data/core.telegram.org/method/messages.sendInlineBotResult create mode 100644 data/core.telegram.org/method/messages.sendMedia create mode 100644 data/core.telegram.org/method/messages.sendMessage create mode 100644 data/core.telegram.org/method/messages.sendMultiMedia create mode 100644 data/core.telegram.org/method/phone.confirmCall rename data/core.telegram.org/method/{phone.discardGroupCall => phone.editGroupCallTitle} (92%) rename data/core.telegram.org/method/{invokeWithMessagesRange.html => photos.deletePhotos} (88%) rename data/core.telegram.org/method/{channels.deleteMessages => photos.getUserPhotos} (79%) create mode 100644 data/core.telegram.org/method/stats.getBroadcastStats create mode 100644 data/core.telegram.org/method/stats.loadAsyncGraph delete mode 100644 data/core.telegram.org/method/stickers.createStickerSet create mode 100644 data/core.telegram.org/method/upload.saveFilePart rename data/{corefork.telegram.org => core.telegram.org}/method/users.getFullUser (98%) create mode 100644 data/core.telegram.org/methods.html create mode 100644 data/core.telegram.org/mtproto.html create mode 100644 data/core.telegram.org/mtproto/security_guidelines.html create mode 100644 data/core.telegram.org/passport.html create mode 100644 data/core.telegram.org/passport/example.html create mode 100644 data/core.telegram.org/reproducible-builds.html create mode 100644 data/core.telegram.org/schema.html create mode 100644 data/core.telegram.org/schema/json.html create mode 100644 data/core.telegram.org/stickers.html create mode 100644 data/core.telegram.org/stickers/webm-vp9-encoding.html create mode 100644 data/core.telegram.org/tdlib.html create mode 100644 data/core.telegram.org/themes.html create mode 100644 data/core.telegram.org/type/BotInlineMessage.html create mode 100644 data/core.telegram.org/type/DialogPeer.html rename data/core.telegram.org/type/{InputClientProxy.html => InputFile.html} (85%) rename data/core.telegram.org/type/{StatsDateRangeDays.html => InputGroupCall.html} (90%) delete mode 100644 data/core.telegram.org/type/InputSingleMedia.html rename data/core.telegram.org/type/{NearestDc.html => InputWebFileLocation.html} (84%) rename data/core.telegram.org/type/{help.InviteText => LangPackDifference.html} (82%) create mode 100644 data/core.telegram.org/type/MessageAction.html rename data/core.telegram.org/type/{ImportedContact.html => MessageInteractionCounters.html} (88%) rename data/core.telegram.org/type/{InputWebDocument.html => PageListItem.html} (87%) create mode 100644 data/core.telegram.org/type/PageTableCell.html create mode 100644 data/core.telegram.org/type/PaymentRequestedInfo.html create mode 100644 data/core.telegram.org/type/Peer.html rename data/core.telegram.org/type/{help.RecentMeUrls => PeerNotifySettings.html} (85%) rename data/{corefork.telegram.org => core.telegram.org}/type/Photo.html (98%) create mode 100644 data/core.telegram.org/type/SecureFile.html rename data/core.telegram.org/type/{phone.PhoneCall => Theme.html} (77%) rename data/core.telegram.org/type/{BotInfo.html => TopPeer.html} (90%) rename data/core.telegram.org/type/{RecentMeUrl.html => TopPeerCategory.html} (73%) create mode 100644 data/core.telegram.org/type/Update.html rename data/core.telegram.org/type/{messages.InactiveChats => account.AutoDownloadSettings} (85%) rename data/core.telegram.org/type/{long.html => double.html} (86%) delete mode 100644 data/core.telegram.org/type/help.Country create mode 100644 data/core.telegram.org/type/help.PassportConfig create mode 100644 data/core.telegram.org/type/messages.ChatFull rename data/core.telegram.org/type/{messages.ChatAdminsWithInvites => messages.MessageViews} (83%) delete mode 100644 data/core.telegram.org/type/messages.Messages create mode 100644 data/core.telegram.org/type/messages.SearchCounter rename data/core.telegram.org/type/{EmojiKeywordsDifference.html => payments.PaymentForm} (81%) rename data/{corefork.telegram.org => core.telegram.org}/type/payments.PaymentReceipt (98%) rename data/core.telegram.org/type/{help.DeepLinkInfo => payments.ValidatedRequestedInfo} (83%) rename data/{corefork.telegram.org => core.telegram.org}/type/photos.Photo (98%) create mode 100644 data/core.telegram.org/video_stickers.html create mode 100644 data/core.telegram.org/widgets.html create mode 100644 data/corefork.telegram.org/api.html create mode 100644 data/corefork.telegram.org/api/account-deletion.html create mode 100644 data/corefork.telegram.org/api/animated-emojis.html create mode 100644 data/corefork.telegram.org/api/auth.html create mode 100644 data/corefork.telegram.org/api/bots.html create mode 100644 data/corefork.telegram.org/api/bots/buttons.html create mode 100644 data/corefork.telegram.org/api/bots/commands.html create mode 100644 data/corefork.telegram.org/api/bots/games.html create mode 100644 data/corefork.telegram.org/api/bots/inline.html create mode 100644 data/corefork.telegram.org/api/channel.html create mode 100644 data/corefork.telegram.org/api/config.html create mode 100644 data/corefork.telegram.org/api/datacenter.html create mode 100644 data/corefork.telegram.org/api/dice.html create mode 100644 data/corefork.telegram.org/api/discussion.html create mode 100644 data/corefork.telegram.org/api/drafts.html create mode 100644 data/corefork.telegram.org/api/end-to-end.html create mode 100644 data/corefork.telegram.org/api/end-to-end/pfs.html create mode 100644 data/corefork.telegram.org/api/end-to-end/seq_no.html create mode 100644 data/corefork.telegram.org/api/end-to-end/voice-calls.html create mode 100644 data/corefork.telegram.org/api/end-to-end_v1.html create mode 100644 data/corefork.telegram.org/api/errors.html create mode 100644 data/corefork.telegram.org/api/files.html create mode 100644 data/corefork.telegram.org/api/folders.html create mode 100644 data/corefork.telegram.org/api/import.html create mode 100644 data/corefork.telegram.org/api/invoking.html create mode 100644 data/corefork.telegram.org/api/live-location.html create mode 100644 data/corefork.telegram.org/api/mentions.html create mode 100644 data/corefork.telegram.org/api/min.html create mode 100644 data/corefork.telegram.org/api/obtaining_api_id.html create mode 100644 data/corefork.telegram.org/api/offsets.html create mode 100644 data/corefork.telegram.org/api/optimisation.html create mode 100644 data/corefork.telegram.org/api/passport.html create mode 100644 data/corefork.telegram.org/api/payments.html create mode 100644 data/corefork.telegram.org/api/pfs.html create mode 100644 data/corefork.telegram.org/api/pin.html create mode 100644 data/corefork.telegram.org/api/poll.html create mode 100644 data/corefork.telegram.org/api/push-updates.html create mode 100644 data/corefork.telegram.org/api/qr-login.html create mode 100644 data/corefork.telegram.org/api/recent-actions.html create mode 100644 data/corefork.telegram.org/api/rights.html create mode 100644 data/corefork.telegram.org/api/scheduled-messages.html create mode 100644 data/corefork.telegram.org/api/search.html create mode 100644 data/corefork.telegram.org/api/srp.html create mode 100644 data/corefork.telegram.org/api/stats.html create mode 100644 data/corefork.telegram.org/api/top-rating.html create mode 100644 data/corefork.telegram.org/api/updates.html create mode 100644 data/corefork.telegram.org/api/url-authorization.html create mode 100644 data/corefork.telegram.org/api/web-events.html create mode 100644 data/corefork.telegram.org/bots.html create mode 100644 data/corefork.telegram.org/bots/api.html rename data/corefork.telegram.org/constructor/{phone.groupParticipants => account.authorizationForm} (77%) create mode 100644 data/corefork.telegram.org/constructor/account.password create mode 100644 data/corefork.telegram.org/constructor/account.passwordInputSettings create mode 100644 data/corefork.telegram.org/constructor/account.resetPasswordRequestedWait create mode 100644 data/corefork.telegram.org/constructor/auth.authorizationSignUpRequired create mode 100644 data/corefork.telegram.org/constructor/auth.loginToken rename data/corefork.telegram.org/constructor/{inputGroupCall.html => auth.loginTokenMigrateTo} (88%) create mode 100644 data/corefork.telegram.org/constructor/auth.loginTokenSuccess rename data/corefork.telegram.org/constructor/{messageMediaInvoice.html => authorization.html} (73%) create mode 100644 data/corefork.telegram.org/constructor/channel.html create mode 100644 data/corefork.telegram.org/constructor/channelParticipantsMentions.html delete mode 100644 data/corefork.telegram.org/constructor/channels.channelParticipant rename data/{core.telegram.org/constructor/updateShortChatMessage.html => corefork.telegram.org/constructor/chat.html} (69%) rename data/corefork.telegram.org/constructor/{payments.paymentForm => chatAdminRights.html} (69%) create mode 100644 data/corefork.telegram.org/constructor/chatBannedRights.html create mode 100644 data/corefork.telegram.org/constructor/chatFull.html create mode 100644 data/corefork.telegram.org/constructor/config.html rename data/corefork.telegram.org/constructor/{updates.state => decryptedMessageActionNotifyLayer.html} (82%) create mode 100644 data/corefork.telegram.org/constructor/decryptedMessageLayer.html create mode 100644 data/corefork.telegram.org/constructor/decryptedMessageMediaPhoto.html rename data/corefork.telegram.org/constructor/{updateBotShippingQuery.html => decryptedMessageService.html} (84%) create mode 100644 data/corefork.telegram.org/constructor/dialogFilter.html delete mode 100644 data/corefork.telegram.org/constructor/disabledFeature.html rename data/{core.telegram.org/constructor/encryptedChatWaiting.html => corefork.telegram.org/constructor/encryptedChat.html} (84%) rename data/corefork.telegram.org/constructor/{webPageAttributeTheme.html => encryptedChatDiscarded.html} (87%) rename data/corefork.telegram.org/constructor/{phoneCallAccepted.html => encryptedChatRequested.html} (82%) create mode 100644 data/corefork.telegram.org/constructor/encryptedMessage.html create mode 100644 data/corefork.telegram.org/constructor/game.html create mode 100644 data/corefork.telegram.org/constructor/globalPrivacySettings.html create mode 100644 data/corefork.telegram.org/constructor/help.termsOfService create mode 100644 data/corefork.telegram.org/constructor/inputChannelFromMessage.html rename data/corefork.telegram.org/constructor/{decryptedMessageActionAcceptKey.html => inputCheckPasswordSRP.html} (84%) rename data/corefork.telegram.org/constructor/{inputPhotoLegacyFileLocation.html => inputFileLocation.html} (86%) rename data/corefork.telegram.org/constructor/{statsGraphError.html => inputGameID.html} (87%) rename data/corefork.telegram.org/constructor/{themeSettings.html => inputMediaPoll.html} (79%) delete mode 100644 data/corefork.telegram.org/constructor/inputMediaUploadedThumbDocument.html create mode 100644 data/corefork.telegram.org/constructor/inputMessageEntityMentionName.html rename data/{core.telegram.org => corefork.telegram.org}/constructor/inputMessagesFilterPinned.html (98%) create mode 100644 data/corefork.telegram.org/constructor/inputPeerChannelFromMessage.html create mode 100644 data/corefork.telegram.org/constructor/inputPeerPhotoFileLocation.html rename data/{core.telegram.org/constructor/inputPeerChannel.html => corefork.telegram.org/constructor/inputPeerUser.html} (88%) create mode 100644 data/corefork.telegram.org/constructor/inputPeerUserFromMessage.html create mode 100644 data/corefork.telegram.org/constructor/inputSecureValue.html create mode 100644 data/corefork.telegram.org/constructor/inputUserFromMessage.html rename data/corefork.telegram.org/constructor/{stats.messageStats => keyboardButtonGame.html} (90%) rename data/corefork.telegram.org/constructor/{paymentSavedCredentialsCard.html => keyboardButtonUrl.html} (90%) create mode 100644 data/corefork.telegram.org/constructor/keyboardButtonUrlAuth.html create mode 100644 data/corefork.telegram.org/constructor/message.html rename data/corefork.telegram.org/constructor/{botCommandScopeChatAdmins.html => messageActionChatMigrateTo.html} (87%) rename data/corefork.telegram.org/constructor/{messageActionPaymentSent.html => messageActionSecureValuesSentMe.html} (84%) create mode 100644 data/corefork.telegram.org/constructor/messageEntityMention.html create mode 100644 data/corefork.telegram.org/constructor/messageEntityMentionName.html create mode 100644 data/corefork.telegram.org/constructor/messageFwdHeader.html rename data/corefork.telegram.org/constructor/{messageMediaVideo.html => messageMediaGame.html} (92%) rename data/corefork.telegram.org/constructor/{decryptedMessageActionAbortKey.html => messageMediaPoll.html} (89%) create mode 100644 data/corefork.telegram.org/constructor/messageService.html rename data/corefork.telegram.org/constructor/{chatInviteImporter.html => messageUserVote.html} (89%) rename data/corefork.telegram.org/constructor/{inputChatPhoto.html => messages.dhConfigNotModified} (89%) create mode 100644 data/corefork.telegram.org/constructor/messages.historyImport create mode 100644 data/corefork.telegram.org/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html delete mode 100644 data/corefork.telegram.org/constructor/phone.exportedGroupCallInvite delete mode 100644 data/corefork.telegram.org/constructor/phone.groupCall rename data/corefork.telegram.org/constructor/{inputMediaUploadedDocument.html => poll.html} (77%) create mode 100644 data/corefork.telegram.org/constructor/pollResults.html create mode 100644 data/corefork.telegram.org/constructor/replyKeyboardHide.html create mode 100644 data/corefork.telegram.org/constructor/secureCredentialsEncrypted.html rename data/{core.telegram.org/constructor/inputSecureFile.html => corefork.telegram.org/constructor/secureData.html} (85%) create mode 100644 data/corefork.telegram.org/constructor/secureFile.html create mode 100644 data/corefork.telegram.org/constructor/secureValue.html create mode 100644 data/corefork.telegram.org/constructor/secureValueTypeAddress.html create mode 100644 data/corefork.telegram.org/constructor/secureValueTypeBankStatement.html create mode 100644 data/corefork.telegram.org/constructor/secureValueTypeDriverLicense.html rename data/corefork.telegram.org/constructor/{inputPrivacyValueDisallowContacts.html => secureValueTypeEmail.html} (91%) create mode 100644 data/corefork.telegram.org/constructor/secureValueTypeIdentityCard.html rename data/corefork.telegram.org/constructor/{inlineQueryPeerTypeChat.html => secureValueTypeInternalPassport.html} (89%) create mode 100644 data/corefork.telegram.org/constructor/secureValueTypePassport.html rename data/corefork.telegram.org/constructor/{inputMessagesFilterMyMentions.html => secureValueTypePassportRegistration.html} (87%) create mode 100644 data/corefork.telegram.org/constructor/secureValueTypePersonalDetails.html create mode 100644 data/corefork.telegram.org/constructor/secureValueTypeRentalAgreement.html create mode 100644 data/corefork.telegram.org/constructor/secureValueTypeTemporaryRegistration.html rename data/corefork.telegram.org/constructor/{decryptedMessageActionNoop.html => secureValueTypeUtilityBill.html} (91%) rename data/corefork.telegram.org/constructor/{statsPercentValue.html => topPeer.html} (85%) rename data/corefork.telegram.org/constructor/{inputPrivacyValueAllowAll.html => topPeerCategoryBotsInline.html} (92%) create mode 100644 data/corefork.telegram.org/constructor/topPeerCategoryBotsPM.html create mode 100644 data/corefork.telegram.org/constructor/topPeerCategoryChannels.html create mode 100644 data/corefork.telegram.org/constructor/topPeerCategoryCorrespondents.html rename data/corefork.telegram.org/constructor/{inputPrivacyKeyStatusTimestamp.html => topPeerCategoryForwardChats.html} (90%) create mode 100644 data/corefork.telegram.org/constructor/topPeerCategoryForwardUsers.html create mode 100644 data/corefork.telegram.org/constructor/topPeerCategoryGroups.html create mode 100644 data/corefork.telegram.org/constructor/topPeerCategoryPhoneCalls.html rename data/{core.telegram.org => corefork.telegram.org}/constructor/updateDialogFilter.html (98%) rename data/corefork.telegram.org/constructor/{updateDeleteScheduledMessages.html => updateDialogFilterOrder.html} (85%) create mode 100644 data/corefork.telegram.org/constructor/updateDialogFilters.html rename data/corefork.telegram.org/constructor/{accountDaysTTL.html => updateEncryption.html} (89%) create mode 100644 data/corefork.telegram.org/constructor/updateFolderPeers.html create mode 100644 data/corefork.telegram.org/constructor/updateLoginToken.html rename data/corefork.telegram.org/constructor/{inputStickerSetThumb.html => updateMessageID.html} (85%) rename data/corefork.telegram.org/constructor/{inputGeoPoint.html => updateMessagePoll.html} (86%) create mode 100644 data/corefork.telegram.org/constructor/updateMessagePollVote.html rename data/corefork.telegram.org/constructor/{fileLocation.html => updateNewMessage.html} (87%) create mode 100644 data/corefork.telegram.org/constructor/updatePinnedMessages.html rename data/corefork.telegram.org/constructor/{messages.statedMessageLink => updates.html} (87%) rename data/corefork.telegram.org/constructor/{sendMessageEmojiInteractionSeen.html => urlAuthResultAccepted.html} (85%) create mode 100644 data/corefork.telegram.org/constructor/urlAuthResultRequest.html create mode 100644 data/corefork.telegram.org/constructor/user.html create mode 100644 data/corefork.telegram.org/constructor/userFull.html create mode 100644 data/corefork.telegram.org/css/core-widgets.css create mode 100644 data/corefork.telegram.org/getProxyConfig.html create mode 100644 data/corefork.telegram.org/js/core-widgets.js create mode 100644 data/corefork.telegram.org/method/account.acceptAuthorization create mode 100644 data/corefork.telegram.org/method/account.cancelPasswordEmail rename data/corefork.telegram.org/method/{auth.checkPhone => account.confirmPasswordEmail} (83%) rename data/corefork.telegram.org/method/{messages.reportEncryptedSpam => account.declinePasswordReset} (86%) create mode 100644 data/corefork.telegram.org/method/account.deleteAccount create mode 100644 data/corefork.telegram.org/method/account.getAuthorizationForm create mode 100644 data/corefork.telegram.org/method/account.getPasswordSettings create mode 100644 data/corefork.telegram.org/method/account.getWebAuthorizations create mode 100644 data/corefork.telegram.org/method/account.resetPassword rename data/corefork.telegram.org/method/{langpack.getLangPack => account.setGlobalPrivacySettings} (84%) create mode 100644 data/corefork.telegram.org/method/account.updatePasswordSettings create mode 100644 data/corefork.telegram.org/method/auth.acceptLoginToken create mode 100644 data/corefork.telegram.org/method/auth.checkPassword create mode 100644 data/corefork.telegram.org/method/auth.checkRecoveryPassword create mode 100644 data/corefork.telegram.org/method/auth.exportLoginToken create mode 100644 data/corefork.telegram.org/method/auth.importLoginToken create mode 100644 data/corefork.telegram.org/method/auth.recoverPassword create mode 100644 data/corefork.telegram.org/method/auth.requestPasswordRecovery rename data/corefork.telegram.org/method/{messages.getDiscussionMessage => auth.signIn} (72%) create mode 100644 data/corefork.telegram.org/method/auth.signUp create mode 100644 data/corefork.telegram.org/method/channels.convertToGigagroup rename data/corefork.telegram.org/method/{phone.editGroupCallParticipant => channels.createChannel} (76%) create mode 100644 data/corefork.telegram.org/method/channels.editAdmin rename data/{core.telegram.org/method/channels.editCreator => corefork.telegram.org/method/channels.editBanned} (84%) rename data/corefork.telegram.org/method/{contacts.resolveUsername => channels.getFullChannel} (84%) create mode 100644 data/corefork.telegram.org/method/channels.getGroupsForDiscussion create mode 100644 data/corefork.telegram.org/method/channels.getParticipants create mode 100644 data/corefork.telegram.org/method/channels.setDiscussionGroup delete mode 100644 data/corefork.telegram.org/method/channels.viewSponsoredMessage rename data/corefork.telegram.org/method/{phone.saveDefaultGroupCallJoinAs => contacts.toggleTopPeers} (86%) create mode 100644 data/corefork.telegram.org/method/folders.deleteFolder create mode 100644 data/corefork.telegram.org/method/folders.editPeerFolders rename data/corefork.telegram.org/method/{messages.deleteRevokedExportedChatInvites => help.acceptTermsOfService} (88%) create mode 100644 data/corefork.telegram.org/method/help.dismissSuggestion create mode 100644 data/corefork.telegram.org/method/help.getAppChangelog create mode 100644 data/corefork.telegram.org/method/help.getAppConfig create mode 100644 data/corefork.telegram.org/method/help.getAppUpdate create mode 100644 data/corefork.telegram.org/method/help.getConfig create mode 100644 data/corefork.telegram.org/method/help.getCountriesList rename data/corefork.telegram.org/method/{account.getContentSettings => help.getInviteText} (88%) create mode 100644 data/corefork.telegram.org/method/help.getSupport create mode 100644 data/corefork.telegram.org/method/help.getSupportName create mode 100644 data/corefork.telegram.org/method/help.getTermsOfServiceUpdate rename data/corefork.telegram.org/method/{messages.getAttachedStickers => invokeAfterMsgs.html} (87%) rename data/corefork.telegram.org/method/{stickers.addStickerToSet => invokeWithLayer.html} (80%) create mode 100644 data/corefork.telegram.org/method/messages.acceptEncryption create mode 100644 data/corefork.telegram.org/method/messages.checkHistoryImportPeer create mode 100644 data/corefork.telegram.org/method/messages.createChat create mode 100644 data/corefork.telegram.org/method/messages.discardEncryption create mode 100644 data/corefork.telegram.org/method/messages.editChatAdmin create mode 100644 data/corefork.telegram.org/method/messages.editChatDefaultBannedRights create mode 100644 data/corefork.telegram.org/method/messages.getDhConfig create mode 100644 data/corefork.telegram.org/method/messages.getDialogFilters rename data/corefork.telegram.org/method/{payments.getPaymentReceipt => messages.getGameHighScores} (82%) create mode 100644 data/corefork.telegram.org/method/messages.getInlineGameHighScores create mode 100644 data/corefork.telegram.org/method/messages.getMessageReadParticipants create mode 100644 data/corefork.telegram.org/method/messages.getPollResults create mode 100644 data/corefork.telegram.org/method/messages.getStickers create mode 100644 data/corefork.telegram.org/method/messages.getSuggestedDialogFilters rename data/corefork.telegram.org/method/{messages.getHistory => messages.getUnreadMentions} (85%) create mode 100644 data/corefork.telegram.org/method/messages.migrateChat rename data/{core.telegram.org/method/messages.readHistory => corefork.telegram.org/method/messages.readMentions} (86%) rename data/corefork.telegram.org/method/{langpack.getStrings => messages.receivedQueue} (85%) rename data/{core.telegram.org/method/messages.acceptUrlAuth => corefork.telegram.org/method/messages.requestUrlAuth} (85%) rename data/corefork.telegram.org/method/{stats.getMessagePublicForwards => messages.search} (70%) create mode 100644 data/corefork.telegram.org/method/messages.sendEncrypted rename data/corefork.telegram.org/method/{photos.uploadProfilePhoto => messages.sendEncryptedFile} (74%) create mode 100644 data/corefork.telegram.org/method/messages.sendMedia create mode 100644 data/corefork.telegram.org/method/messages.sendMessage create mode 100644 data/corefork.telegram.org/method/messages.sendVote rename data/{core.telegram.org/method/contacts.addContact => corefork.telegram.org/method/messages.setGameScore} (82%) rename data/corefork.telegram.org/method/{messages.setBotCallbackAnswer => messages.setInlineGameScore} (82%) create mode 100644 data/corefork.telegram.org/method/messages.setTyping create mode 100644 data/corefork.telegram.org/method/messages.startHistoryImport rename data/{core.telegram.org => corefork.telegram.org}/method/messages.unpinAllMessages (98%) rename data/corefork.telegram.org/method/{stats.getMessageStats => messages.updateDialogFilter} (83%) rename data/corefork.telegram.org/method/{payments.clearSavedInfo => messages.updateDialogFiltersOrder} (85%) create mode 100644 data/corefork.telegram.org/method/messages.updatePinnedMessage rename data/{core.telegram.org => corefork.telegram.org}/method/messages.uploadImportedMedia (98%) create mode 100644 data/corefork.telegram.org/method/updates.getDifference create mode 100644 data/corefork.telegram.org/method/users.setSecureValueErrors create mode 100644 data/corefork.telegram.org/mtproto.html create mode 100644 data/corefork.telegram.org/mtproto/TL.html create mode 100644 data/corefork.telegram.org/mtproto/description.html create mode 100644 data/corefork.telegram.org/mtproto/samples-auth_key.html create mode 100644 data/corefork.telegram.org/mtproto/security_guidelines.html create mode 100644 data/corefork.telegram.org/mtproto/serialize.html create mode 100644 data/corefork.telegram.org/mtproto/service_messages.html create mode 100644 data/corefork.telegram.org/mtproto/service_messages_about_messages.html create mode 100644 data/corefork.telegram.org/mtproto_v1.html create mode 100644 data/corefork.telegram.org/passport.html create mode 100644 data/corefork.telegram.org/passport/encryption.html create mode 100644 data/corefork.telegram.org/passport/example.html create mode 100644 data/corefork.telegram.org/schema/end-to-end.html create mode 100644 data/corefork.telegram.org/schema/json.html create mode 100644 data/corefork.telegram.org/schema/mtproto.html rename data/corefork.telegram.org/{constructor/auth.sentAppCode => type/DecryptedMessage.html} (70%) delete mode 100644 data/corefork.telegram.org/type/FileHash.html create mode 100644 data/corefork.telegram.org/type/InputCheckPasswordSRP.html rename data/corefork.telegram.org/type/{auth.SentCodeType => InputPeer.html} (73%) delete mode 100644 data/corefork.telegram.org/type/MessageMedia.html rename data/corefork.telegram.org/type/{InputGeoPoint.html => Peer.html} (87%) delete mode 100644 data/corefork.telegram.org/type/PhoneConnection.html rename data/corefork.telegram.org/type/{ChatAdminRights.html => SecureData.html} (84%) create mode 100644 data/corefork.telegram.org/type/SecureFile.html rename data/corefork.telegram.org/type/{auth.CodeType => SecurePlainData.html} (81%) rename data/corefork.telegram.org/type/{WebPage.html => SecureValueType.html} (64%) create mode 100644 data/corefork.telegram.org/type/TopPeerCategory.html create mode 100644 data/corefork.telegram.org/type/Update.html rename data/corefork.telegram.org/type/{ContactStatus.html => Vector t.html} (90%) delete mode 100644 data/corefork.telegram.org/type/WallPaperSettings.html delete mode 100644 data/corefork.telegram.org/type/WebPageAttribute.html rename data/corefork.telegram.org/type/{payments.BankCardData => account.PasswordInputSettings} (81%) create mode 100644 data/corefork.telegram.org/type/bytes.html rename data/corefork.telegram.org/type/{StatsGraph.html => messages.CheckedHistoryImportPeer} (77%) create mode 100644 data/corefork.telegram.org/widgets.html create mode 100644 data/corefork.telegram.org/widgets/discussion.html create mode 100644 data/corefork.telegram.org/widgets/login.html create mode 100644 data/corefork.telegram.org/widgets/post.html create mode 100644 data/corefork.telegram.org/widgets/share.html create mode 100644 data/telegram.org.html create mode 100644 data/telegram.org/android.html create mode 100644 data/telegram.org/blog.html create mode 100644 data/telegram.org/blog/400-million.html create mode 100644 data/telegram.org/blog/admin-revolution.html create mode 100644 data/telegram.org/blog/albums-saved-messages.html create mode 100644 data/telegram.org/blog/android-2-0.html rename data/telegram.org/blog/{encrypted-cdns.html => android-themes.html} (67%) create mode 100644 data/telegram.org/blog/archive-and-new-design.html create mode 100644 data/telegram.org/blog/autodelete-inv2.html create mode 100644 data/telegram.org/blog/bots-2-0.html create mode 100644 data/telegram.org/blog/cache-and-stickers.html create mode 100644 data/telegram.org/blog/captions-places.html create mode 100644 data/telegram.org/blog/channels-2-0.html create mode 100644 data/telegram.org/blog/channels.html create mode 100644 data/telegram.org/blog/chat-themes-interactive-emoji-read-receipts.html create mode 100644 data/telegram.org/blog/contacts-local-groups.html create mode 100644 data/telegram.org/blog/coronavirus.html create mode 100644 data/telegram.org/blog/cryptocontest.html create mode 100644 data/telegram.org/blog/desktop-1-0.html create mode 100644 data/telegram.org/blog/desktop-compact.html create mode 100644 data/telegram.org/blog/discover-stickers-and-more.html create mode 100644 data/telegram.org/blog/edit.html create mode 100644 data/telegram.org/blog/export-and-more.html create mode 100644 data/telegram.org/blog/filters-anonymous-admins-comments.html create mode 100644 data/telegram.org/blog/group-video-calls.html create mode 100644 data/telegram.org/blog/inline-bots.html create mode 100644 data/telegram.org/blog/instant-camera.html create mode 100644 data/telegram.org/blog/invite-links.html create mode 100644 data/telegram.org/blog/live-streams-forwarding-next-channel.html create mode 100644 data/telegram.org/blog/masks.html create mode 100644 data/telegram.org/blog/moar-stickers.html create mode 100644 data/telegram.org/blog/move-history.html create mode 100644 data/telegram.org/blog/new-profiles-people-nearby.html create mode 100644 data/telegram.org/blog/passport.html create mode 100644 data/telegram.org/blog/payments-2-0-scheduled-voice-chats.html create mode 100644 data/telegram.org/blog/payments.html create mode 100644 data/telegram.org/blog/photo-editor-and-passcodes.html create mode 100644 data/telegram.org/blog/polls-2-0-vmq.html create mode 100644 data/telegram.org/blog/polls.html create mode 100644 data/telegram.org/blog/privacy-discussions-web-bots.html create mode 100644 data/telegram.org/blog/privacy-revolution.html create mode 100644 data/telegram.org/blog/reactions-spoilers-translations.html create mode 100644 data/telegram.org/blog/replies-mentions-stickers.html create mode 100644 data/telegram.org/blog/scheduled-reminders-themes.html create mode 100644 data/telegram.org/blog/shared-links.html create mode 100644 data/telegram.org/blog/silent-messages-slow-mode.html create mode 100644 data/telegram.org/blog/stickers-meet-art-and-history.html create mode 100644 data/telegram.org/blog/stickers-revolution.html create mode 100644 data/telegram.org/blog/supergroups.html create mode 100644 data/telegram.org/blog/telegram-me-change-number-and-pfs.html create mode 100644 data/telegram.org/blog/translations-iv2.html create mode 100644 data/telegram.org/blog/video-1000.html create mode 100644 data/telegram.org/blog/video-calls.html create mode 100644 data/telegram.org/blog/video-editor-gifs.html create mode 100644 data/telegram.org/blog/video-messages-and-telescope.html create mode 100644 data/telegram.org/blog/video-stickers-better-reactions.html rename data/telegram.org/blog/{pinned-messages-locations-playlists/world.html => voice-chats-on-steroids.html} (55%) create mode 100644 data/telegram.org/blog/voice-chats.html create mode 100644 data/telegram.org/faq_channels.html create mode 100644 data/telegram.org/faq_spam.html create mode 100644 data/telegram.org/privacy.html create mode 100644 data/telegram.org/support.html rename data/telegram.org/{api.html => teststore.html} (99%) create mode 100644 data/telegram.org/tour/channels.html create mode 100644 data/telegram.org/tour/groups.html create mode 100644 data/telegram.org/tour/quizbot.html diff --git a/data/core.telegram.org.html b/data/core.telegram.org.html new file mode 100644 index 0000000000..f6775268b5 --- /dev/null +++ b/data/core.telegram.org.html @@ -0,0 +1,253 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram APIs</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for…"> + <meta property="og:title" content="Telegram APIs"> + <meta property="og:image" content="df8a0f9162ddfc1daf"> + <meta property="og:description" content="We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for…"> + <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?215" 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"></div> + <h1 id="dev_page_title">Telegram APIs</h1> + + <div id="dev_page_content"><p>We offer two kinds of APIs for developers. The <a href="#bot-api"><strong>Bot API</strong></a> allows you to easily create programs that use Telegram messages for an interface. The <a href="#tdlib-build-your-own-telegram"><strong>Telegram API and TDLib</strong></a> allow you to build your own customized Telegram clients. You are welcome to use both APIs free of charge.</p> +<p>You can also add <a href="/widgets"><strong>Telegram Widgets</strong></a> to your website.</p> +<p>Designers are welcome to create <a href="/animated_stickers"><strong>Animated Stickers</strong></a> or <a href="/themes"><strong>Custom Themes</strong></a> for Telegram.</p> +<hr> +<h3><a class="anchor" href="#bot-api" id="bot-api" name="bot-api"><i class="anchor-icon"></i></a>Bot API</h3> +<div> + <a href="/file/811140327/1/zlN4goPTupk/9ff2f2f01c4bd1b013" target="_blank"><img src="/file/811140934/1/tbDSLHSaijc/fdcc7b6d5fb3354adf" title="The Botfather. Click for hi-res picture" style="max-width: 200px;float:right"></a> +</div> +<p>This API allows you to connect bots to our system. <a href="/bots"><strong>Telegram Bots</strong></a> are special accounts that do not require an additional phone number to set up. These accounts serve as an interface for code running somewhere on your server.</p> +<p>To use this, you don't need to know anything about how our MTProto encryption protocol works — our intermediary server will handle all encryption and communication with the Telegram API for you. You communicate with this server via a simple HTTPS-interface that offers a simplified version of the Telegram API.</p> +<blockquote> +<p><a href="/bots"><strong>Learn more about the Bot API here »</strong></a></p> +</blockquote> +<p>Bot developers can also make use of our <a href="/bots/payments"><strong>Payments API</strong></a> to accept <strong>payments</strong> from Telegram users around the world.</p> +<hr> +<h3><a class="anchor" href="#tdlib--build-your-own-telegram" id="tdlib--build-your-own-telegram" name="tdlib--build-your-own-telegram"><i class="anchor-icon"></i></a>TDLib – build your own Telegram</h3> +<p>Even if you're looking for maximum customization, you don't have to create your app from scratch. Try our <a href="https://core.telegram.org/tdlib"><strong>Telegram Database Library</strong></a> (or simply TDLib), a tool for third-party developers that makes it easy to build fast, secure and feature-rich Telegram apps.</p> +<p>TDLib takes care of all <strong>network implementation</strong> details, <strong>encryption</strong> and <strong>local data storage</strong>, so that you can dedicate more time to design, responsive interfaces and beautiful animations.</p> +<p>TDLib supports all Telegram features and makes developing Telegram apps a breeze on any platform. It can be used on Android, iOS, Windows, macOS, Linux and virtually any other system. The library is open source and compatible with virtually <strong>any programming language</strong>.</p> +<blockquote> +<p><a href="https://core.telegram.org/tdlib"><strong>Learn more about TDLib here »</strong></a></p> +</blockquote> +<hr> +<h3><a class="anchor" href="#telegram-api" id="telegram-api" name="telegram-api"><i class="anchor-icon"></i></a>Telegram API</h3> +<p>This API allows you to build your own customized Telegram clients. It is 100% open for all developers who wish to create Telegram applications on our platform. Feel free to study the open <a href="https://telegram.org/apps#source-code">source code</a> of existing Telegram applications for examples of how things work here. Don't forget to <a href="/api/obtaining_api_id">register</a> your application in our system. </p> +<ul> +<li><a href="#getting-started">Getting Started</a></li> +<li><a href="#security">Security</a></li> +<li><a href="#optimization">Optimization</a></li> +<li><a href="#api-methods">API methods</a></li> +</ul> +<h3><a class="anchor" href="#getting-started" id="getting-started" name="getting-started"><i class="anchor-icon"></i></a>Getting started</h3> +<h4><a class="anchor" href="#creating-an-application" id="creating-an-application" name="creating-an-application"><i class="anchor-icon"></i></a><a href="/api/obtaining_api_id">Creating an application</a></h4> +<p>How to get your application identifier and create a new Telegram app.</p> +<h4><a class="anchor" href="#user-authorization" id="user-authorization" name="user-authorization"><i class="anchor-icon"></i></a><a href="/api/auth">User authorization</a></h4> +<p>How to register a user's phone to start using the API.</p> +<h4><a class="anchor" href="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p> +<h4><a class="anchor" href="#qr-code-login" id="qr-code-login" name="qr-code-login"><i class="anchor-icon"></i></a><a href="/api/qr-login">QR code login</a></h4> +<p><a href="https://en.wikipedia.org/wiki/QR_code">QR code</a> login flow</p> +<h4><a class="anchor" href="#error-handling" id="error-handling" name="error-handling"><i class="anchor-icon"></i></a><a href="/api/errors">Error handling</a></h4> +<p>How to handle API return errors correctly.</p> +<h4><a class="anchor" href="#handling-different-data-centers" id="handling-different-data-centers" name="handling-different-data-centers"><i class="anchor-icon"></i></a><a href="/api/datacenter">Handling different data centers</a></h4> +<p>How to connect to the closest DC access point for faster interaction with the API, and things to watch out for when developing a client.</p> +<h4><a class="anchor" href="#handling-updates" id="handling-updates" name="handling-updates"><i class="anchor-icon"></i></a><a href="/api/updates">Handling updates</a></h4> +<p>How to subscribe to updates and handle them properly.</p> +<h4><a class="anchor" href="#handling-push-notifications" id="handling-push-notifications" name="handling-push-notifications"><i class="anchor-icon"></i></a><a href="/api/push-updates">Handling PUSH-notifications</a></h4> +<p>How to subscribe and handle them properly.</p> +<h4><a class="anchor" href="#channels-supergroups-and-groups" id="channels-supergroups-and-groups" name="channels-supergroups-and-groups"><i class="anchor-icon"></i></a><a href="/api/channel">Channels, supergroups and groups</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> +<p>Telegram offers detailed channel statistics for channels and supergroups. </p> +<h4><a class="anchor" href="#calling-methods" id="calling-methods" name="calling-methods"><i class="anchor-icon"></i></a><a href="/api/invoking">Calling methods</a></h4> +<p>Additional options for calling methods.</p> +<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="#pagination" id="pagination" name="pagination"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination</a></h4> +<p>How to fetch results from large lists of objects.</p> +<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple client configuration parameters that can be fetched with the appropriate methods. </p> +<h3><a class="anchor" href="#security" id="security" name="security"><i class="anchor-icon"></i></a>Security</h3> +<h4><a class="anchor" href="#secret-chats-end-to-end-encryption" id="secret-chats-end-to-end-encryption" name="secret-chats-end-to-end-encryption"><i class="anchor-icon"></i></a><a href="/api/end-to-end">Secret chats, end-to-end encryption</a></h4> +<p>End-to-end-encrypted messaging.</p> +<h4><a class="anchor" href="#security-guidelines" id="security-guidelines" name="security-guidelines"><i class="anchor-icon"></i></a><a href="/mtproto/security_guidelines">Security guidelines</a></h4> +<p>Important checks required in your client application.</p> +<h4><a class="anchor" href="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a><a href="/api/pfs">Perfect Forward Secrecy</a></h4> +<p>Binding temporary authorization key to permanent ones.</p> +<h4><a class="anchor" href="#end-to-end-encryption-in-voice-and-video-calls" id="end-to-end-encryption-in-voice-and-video-calls" name="end-to-end-encryption-in-voice-and-video-calls"><i class="anchor-icon"></i></a><a href="https://core.telegram.org/api/end-to-end/video-calls">End-to-End Encryption in Voice and Video Calls</a></h4> +<p>End-to-end-encrypted calls.</p> +<h3><a class="anchor" href="#optimization" id="optimization" name="optimization"><i class="anchor-icon"></i></a>Optimization</h3> +<h4><a class="anchor" href="#client-optimization" id="client-optimization" name="client-optimization"><i class="anchor-icon"></i></a><a href="/api/optimisation">Client optimization</a></h4> +<p>Ways to boost API interactions.</p> +<h3><a class="anchor" href="#api-methods" id="api-methods" name="api-methods"><i class="anchor-icon"></i></a>API methods</h3> +<h4><a class="anchor" href="#available-method-list" id="available-method-list" name="available-method-list"><i class="anchor-icon"></i></a><a href="/methods">Available method list</a></h4> +<p>A list of available high-level methods.</p> +<h4><a class="anchor" href="#api-tl-schema-as-json" id="api-tl-schema-as-json" name="api-tl-schema-as-json"><i class="anchor-icon"></i></a><a href="/schema">API TL-schema</a>, <a href="/schema/json">as JSON</a></h4> +<p>Text and JSON-presentation of types and methods used in API.</p> +<h4><a class="anchor" href="#available-layer-list" id="available-layer-list" name="available-layer-list"><i class="anchor-icon"></i></a><a href="/api/layers">Available layer list</a></h4> +<p>A list of available schema versions.</p> +<h3><a class="anchor" href="#other-articles" id="other-articles" name="other-articles"><i class="anchor-icon"></i></a>Other articles</h3> +<h4><a class="anchor" href="#working-with-bots-using-the-mtproto-api" id="working-with-bots-using-the-mtproto-api" name="working-with-bots-using-the-mtproto-api"><i class="anchor-icon"></i></a><a href="/api/bots">Working with bots, using the MTProto API</a></h4> +<p>How to work with bots using the MTProto API.</p> +<h3><a class="anchor" href="#commands" id="commands" name="commands"><i class="anchor-icon"></i></a><a href="/api/bots/commands">Commands</a></h3> +<p><a href="/bots">Bots</a> offer a set of commands that can be used by users in private, or in a chat. </p> +<h3><a class="anchor" href="#buttons" id="buttons" name="buttons"><i class="anchor-icon"></i></a><a href="/api/bots/buttons">Buttons</a></h3> +<p>Users can interact with your bot via <strong>buttons</strong> or even <strong>inline buttons</strong>, straight from inline <strong>messages</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#inline-queries" id="inline-queries" name="inline-queries"><i class="anchor-icon"></i></a><a href="/api/bots/inline">Inline queries</a></h3> +<p>Users can interact with your bot via <strong>inline queries</strong>, straight from the <strong>text input field</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#games" id="games" name="games"><i class="anchor-icon"></i></a><a href="/api/bots/games">Games</a></h3> +<p>Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats; how to work with games in the MTProto API.</p> +<h3><a class="anchor" href="#search--filters" id="search--filters" name="search--filters"><i class="anchor-icon"></i></a><a href="/api/search">Search & filters</a></h3> +<p>Telegram allows applying detailed message filters while looking for messages in chats. +This allows the server to filter messages based on a text query, and even on their type, and this feature is often used by graphical clients to implement features like the chat gallery, chat profile pictures and more.</p> +<h3><a class="anchor" href="#polls" id="polls" name="polls"><i class="anchor-icon"></i></a><a href="/api/poll">Polls</a></h3> +<p>Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels.</p> +<h4><a class="anchor" href="#admin-banned-and-default-rights-for-channels-supergroups-and-groups" id="admin-banned-and-default-rights-for-channels-supergroups-and-groups" name="admin-banned-and-default-rights-for-channels-supergroups-and-groups"><i class="anchor-icon"></i></a><a href="/api/rights">Admin, banned and default rights for channels, supergroups and groups</a></h4> +<p>How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.</p> +<h4><a class="anchor" href="#discussion-groups" id="discussion-groups" name="discussion-groups"><i class="anchor-icon"></i></a><a href="/api/discussion">Discussion groups</a></h4> +<p><a href="/api/channel">Groups</a> can be associated to a <a href="/api/channel">channel</a> as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts. </p> +<h4><a class="anchor" href="#channel-comments-and-message-threads" id="channel-comments-and-message-threads" name="channel-comments-and-message-threads"><i class="anchor-icon"></i></a><a href="/api/threads">Channel comments and message threads</a></h4> +<p>Telegram allows commenting on a <a href="/api/channel">channel post</a> or on a generic <a href="/api/channel">group message</a>, thanks to message threads.</p> +<h4><a class="anchor" href="#admin-log" id="admin-log" name="admin-log"><i class="anchor-icon"></i></a><a href="/api/recent-actions">Admin log</a></h4> +<p>Both supergroups and channels offer a so-called <a href="https://telegram.org/blog/admin-revolution">admin log</a>, a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more. </p> +<h4><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a><a href="/api/pin">Pinned messages</a></h4> +<p>Telegram allows pinning multiple messages on top of a specific chat. </p> +<h4><a class="anchor" href="#mentions" id="mentions" name="mentions"><i class="anchor-icon"></i></a><a href="/api/mentions">Mentions</a></h4> +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p> +<h4><a class="anchor" href="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages.</p> +<h4><a class="anchor" href="#live-geolocations" id="live-geolocations" name="live-geolocations"><i class="anchor-icon"></i></a><a href="/api/live-location">Live geolocations</a></h4> +<p>Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert. </p> +<h4><a class="anchor" href="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>Sometimes, <a href="/constructor/user">user</a> and <a href="/constructor/channel">channel</a> constructors met in group chat updates may not contain full info about the user: how to handle such constructors.</p> +<h4><a class="anchor" href="#account-deletion" id="account-deletion" name="account-deletion"><i class="anchor-icon"></i></a><a href="/api/account-deletion">Account deletion</a></h4> +<p>How to reset an account if the <a href="/api/srp">2FA</a> password was forgotten.</p> +<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> +<h4><a class="anchor" href="#telegram-passport" id="telegram-passport" name="telegram-passport"><i class="anchor-icon"></i></a><a href="/api/passport">Telegram Passport</a></h4> +<p>How to work with <a href="/api/passport">Telegram Passport</a> directly using the MTProto API.</p> +<h4><a class="anchor" href="#telegram-payments" id="telegram-payments" name="telegram-payments"><i class="anchor-icon"></i></a><a href="/api/payments">Telegram Payments</a></h4> +<p>How to work with Telegram Payments directly using the MTProto API.</p> +<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#working-with-animated-emojis" id="working-with-animated-emojis" name="working-with-animated-emojis"><i class="anchor-icon"></i></a><a href="/api/animated-emojis">Working with animated emojis</a></h4> +<p>Graphical telegram clients should transform emojis into their respective animated version. </p> +<h4><a class="anchor" href="#working-with-animated-dice" id="working-with-animated-dice" name="working-with-animated-dice"><i class="anchor-icon"></i></a><a href="/api/dice">Working with animated dice</a></h4> +<p>Telegram supports sending <a href="https://telegram.org/blog/folders#and-one-more-thing">animated dice</a> emojis. </p> +<h4><a class="anchor" href="#message-drafts" id="message-drafts" name="message-drafts"><i class="anchor-icon"></i></a><a href="/api/drafts">Message drafts</a></h4> +<p>How to handle message drafts</p> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Working with folders</p> +<h4><a class="anchor" href="#top-peer-rating" id="top-peer-rating" name="top-peer-rating"><i class="anchor-icon"></i></a><a href="/api/top-rating">Top peer rating</a></h4> +<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> +<h4><a class="anchor" href="#handling-file-references" id="handling-file-references" name="handling-file-references"><i class="anchor-icon"></i></a><a href="/api/file_reference">Handling file references</a></h4> +<p>How to handle file references.</p> +<h4><a class="anchor" href="#seamless-telegram-login" id="seamless-telegram-login" name="seamless-telegram-login"><i class="anchor-icon"></i></a><a href="/api/url-authorization">Seamless Telegram Login</a></h4> +<p>Handle Seamless Telegram Login URL authorization requests.</p> +<h4><a class="anchor" href="#web-events" id="web-events" name="web-events"><i class="anchor-icon"></i></a><a href="/api/web-events">Web events</a></h4> +<p>When interacting with HTML5 games and the websites of payment gateways, Telegram apps should expose the following JS APIs.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api.html b/data/core.telegram.org/api.html new file mode 100644 index 0000000000..f6775268b5 --- /dev/null +++ b/data/core.telegram.org/api.html @@ -0,0 +1,253 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram APIs</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for…"> + <meta property="og:title" content="Telegram APIs"> + <meta property="og:image" content="df8a0f9162ddfc1daf"> + <meta property="og:description" content="We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for…"> + <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?215" 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"></div> + <h1 id="dev_page_title">Telegram APIs</h1> + + <div id="dev_page_content"><p>We offer two kinds of APIs for developers. The <a href="#bot-api"><strong>Bot API</strong></a> allows you to easily create programs that use Telegram messages for an interface. The <a href="#tdlib-build-your-own-telegram"><strong>Telegram API and TDLib</strong></a> allow you to build your own customized Telegram clients. You are welcome to use both APIs free of charge.</p> +<p>You can also add <a href="/widgets"><strong>Telegram Widgets</strong></a> to your website.</p> +<p>Designers are welcome to create <a href="/animated_stickers"><strong>Animated Stickers</strong></a> or <a href="/themes"><strong>Custom Themes</strong></a> for Telegram.</p> +<hr> +<h3><a class="anchor" href="#bot-api" id="bot-api" name="bot-api"><i class="anchor-icon"></i></a>Bot API</h3> +<div> + <a href="/file/811140327/1/zlN4goPTupk/9ff2f2f01c4bd1b013" target="_blank"><img src="/file/811140934/1/tbDSLHSaijc/fdcc7b6d5fb3354adf" title="The Botfather. Click for hi-res picture" style="max-width: 200px;float:right"></a> +</div> +<p>This API allows you to connect bots to our system. <a href="/bots"><strong>Telegram Bots</strong></a> are special accounts that do not require an additional phone number to set up. These accounts serve as an interface for code running somewhere on your server.</p> +<p>To use this, you don't need to know anything about how our MTProto encryption protocol works — our intermediary server will handle all encryption and communication with the Telegram API for you. You communicate with this server via a simple HTTPS-interface that offers a simplified version of the Telegram API.</p> +<blockquote> +<p><a href="/bots"><strong>Learn more about the Bot API here »</strong></a></p> +</blockquote> +<p>Bot developers can also make use of our <a href="/bots/payments"><strong>Payments API</strong></a> to accept <strong>payments</strong> from Telegram users around the world.</p> +<hr> +<h3><a class="anchor" href="#tdlib--build-your-own-telegram" id="tdlib--build-your-own-telegram" name="tdlib--build-your-own-telegram"><i class="anchor-icon"></i></a>TDLib – build your own Telegram</h3> +<p>Even if you're looking for maximum customization, you don't have to create your app from scratch. Try our <a href="https://core.telegram.org/tdlib"><strong>Telegram Database Library</strong></a> (or simply TDLib), a tool for third-party developers that makes it easy to build fast, secure and feature-rich Telegram apps.</p> +<p>TDLib takes care of all <strong>network implementation</strong> details, <strong>encryption</strong> and <strong>local data storage</strong>, so that you can dedicate more time to design, responsive interfaces and beautiful animations.</p> +<p>TDLib supports all Telegram features and makes developing Telegram apps a breeze on any platform. It can be used on Android, iOS, Windows, macOS, Linux and virtually any other system. The library is open source and compatible with virtually <strong>any programming language</strong>.</p> +<blockquote> +<p><a href="https://core.telegram.org/tdlib"><strong>Learn more about TDLib here »</strong></a></p> +</blockquote> +<hr> +<h3><a class="anchor" href="#telegram-api" id="telegram-api" name="telegram-api"><i class="anchor-icon"></i></a>Telegram API</h3> +<p>This API allows you to build your own customized Telegram clients. It is 100% open for all developers who wish to create Telegram applications on our platform. Feel free to study the open <a href="https://telegram.org/apps#source-code">source code</a> of existing Telegram applications for examples of how things work here. Don't forget to <a href="/api/obtaining_api_id">register</a> your application in our system. </p> +<ul> +<li><a href="#getting-started">Getting Started</a></li> +<li><a href="#security">Security</a></li> +<li><a href="#optimization">Optimization</a></li> +<li><a href="#api-methods">API methods</a></li> +</ul> +<h3><a class="anchor" href="#getting-started" id="getting-started" name="getting-started"><i class="anchor-icon"></i></a>Getting started</h3> +<h4><a class="anchor" href="#creating-an-application" id="creating-an-application" name="creating-an-application"><i class="anchor-icon"></i></a><a href="/api/obtaining_api_id">Creating an application</a></h4> +<p>How to get your application identifier and create a new Telegram app.</p> +<h4><a class="anchor" href="#user-authorization" id="user-authorization" name="user-authorization"><i class="anchor-icon"></i></a><a href="/api/auth">User authorization</a></h4> +<p>How to register a user's phone to start using the API.</p> +<h4><a class="anchor" href="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p> +<h4><a class="anchor" href="#qr-code-login" id="qr-code-login" name="qr-code-login"><i class="anchor-icon"></i></a><a href="/api/qr-login">QR code login</a></h4> +<p><a href="https://en.wikipedia.org/wiki/QR_code">QR code</a> login flow</p> +<h4><a class="anchor" href="#error-handling" id="error-handling" name="error-handling"><i class="anchor-icon"></i></a><a href="/api/errors">Error handling</a></h4> +<p>How to handle API return errors correctly.</p> +<h4><a class="anchor" href="#handling-different-data-centers" id="handling-different-data-centers" name="handling-different-data-centers"><i class="anchor-icon"></i></a><a href="/api/datacenter">Handling different data centers</a></h4> +<p>How to connect to the closest DC access point for faster interaction with the API, and things to watch out for when developing a client.</p> +<h4><a class="anchor" href="#handling-updates" id="handling-updates" name="handling-updates"><i class="anchor-icon"></i></a><a href="/api/updates">Handling updates</a></h4> +<p>How to subscribe to updates and handle them properly.</p> +<h4><a class="anchor" href="#handling-push-notifications" id="handling-push-notifications" name="handling-push-notifications"><i class="anchor-icon"></i></a><a href="/api/push-updates">Handling PUSH-notifications</a></h4> +<p>How to subscribe and handle them properly.</p> +<h4><a class="anchor" href="#channels-supergroups-and-groups" id="channels-supergroups-and-groups" name="channels-supergroups-and-groups"><i class="anchor-icon"></i></a><a href="/api/channel">Channels, supergroups and groups</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> +<p>Telegram offers detailed channel statistics for channels and supergroups. </p> +<h4><a class="anchor" href="#calling-methods" id="calling-methods" name="calling-methods"><i class="anchor-icon"></i></a><a href="/api/invoking">Calling methods</a></h4> +<p>Additional options for calling methods.</p> +<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="#pagination" id="pagination" name="pagination"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination</a></h4> +<p>How to fetch results from large lists of objects.</p> +<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple client configuration parameters that can be fetched with the appropriate methods. </p> +<h3><a class="anchor" href="#security" id="security" name="security"><i class="anchor-icon"></i></a>Security</h3> +<h4><a class="anchor" href="#secret-chats-end-to-end-encryption" id="secret-chats-end-to-end-encryption" name="secret-chats-end-to-end-encryption"><i class="anchor-icon"></i></a><a href="/api/end-to-end">Secret chats, end-to-end encryption</a></h4> +<p>End-to-end-encrypted messaging.</p> +<h4><a class="anchor" href="#security-guidelines" id="security-guidelines" name="security-guidelines"><i class="anchor-icon"></i></a><a href="/mtproto/security_guidelines">Security guidelines</a></h4> +<p>Important checks required in your client application.</p> +<h4><a class="anchor" href="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a><a href="/api/pfs">Perfect Forward Secrecy</a></h4> +<p>Binding temporary authorization key to permanent ones.</p> +<h4><a class="anchor" href="#end-to-end-encryption-in-voice-and-video-calls" id="end-to-end-encryption-in-voice-and-video-calls" name="end-to-end-encryption-in-voice-and-video-calls"><i class="anchor-icon"></i></a><a href="https://core.telegram.org/api/end-to-end/video-calls">End-to-End Encryption in Voice and Video Calls</a></h4> +<p>End-to-end-encrypted calls.</p> +<h3><a class="anchor" href="#optimization" id="optimization" name="optimization"><i class="anchor-icon"></i></a>Optimization</h3> +<h4><a class="anchor" href="#client-optimization" id="client-optimization" name="client-optimization"><i class="anchor-icon"></i></a><a href="/api/optimisation">Client optimization</a></h4> +<p>Ways to boost API interactions.</p> +<h3><a class="anchor" href="#api-methods" id="api-methods" name="api-methods"><i class="anchor-icon"></i></a>API methods</h3> +<h4><a class="anchor" href="#available-method-list" id="available-method-list" name="available-method-list"><i class="anchor-icon"></i></a><a href="/methods">Available method list</a></h4> +<p>A list of available high-level methods.</p> +<h4><a class="anchor" href="#api-tl-schema-as-json" id="api-tl-schema-as-json" name="api-tl-schema-as-json"><i class="anchor-icon"></i></a><a href="/schema">API TL-schema</a>, <a href="/schema/json">as JSON</a></h4> +<p>Text and JSON-presentation of types and methods used in API.</p> +<h4><a class="anchor" href="#available-layer-list" id="available-layer-list" name="available-layer-list"><i class="anchor-icon"></i></a><a href="/api/layers">Available layer list</a></h4> +<p>A list of available schema versions.</p> +<h3><a class="anchor" href="#other-articles" id="other-articles" name="other-articles"><i class="anchor-icon"></i></a>Other articles</h3> +<h4><a class="anchor" href="#working-with-bots-using-the-mtproto-api" id="working-with-bots-using-the-mtproto-api" name="working-with-bots-using-the-mtproto-api"><i class="anchor-icon"></i></a><a href="/api/bots">Working with bots, using the MTProto API</a></h4> +<p>How to work with bots using the MTProto API.</p> +<h3><a class="anchor" href="#commands" id="commands" name="commands"><i class="anchor-icon"></i></a><a href="/api/bots/commands">Commands</a></h3> +<p><a href="/bots">Bots</a> offer a set of commands that can be used by users in private, or in a chat. </p> +<h3><a class="anchor" href="#buttons" id="buttons" name="buttons"><i class="anchor-icon"></i></a><a href="/api/bots/buttons">Buttons</a></h3> +<p>Users can interact with your bot via <strong>buttons</strong> or even <strong>inline buttons</strong>, straight from inline <strong>messages</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#inline-queries" id="inline-queries" name="inline-queries"><i class="anchor-icon"></i></a><a href="/api/bots/inline">Inline queries</a></h3> +<p>Users can interact with your bot via <strong>inline queries</strong>, straight from the <strong>text input field</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#games" id="games" name="games"><i class="anchor-icon"></i></a><a href="/api/bots/games">Games</a></h3> +<p>Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats; how to work with games in the MTProto API.</p> +<h3><a class="anchor" href="#search--filters" id="search--filters" name="search--filters"><i class="anchor-icon"></i></a><a href="/api/search">Search & filters</a></h3> +<p>Telegram allows applying detailed message filters while looking for messages in chats. +This allows the server to filter messages based on a text query, and even on their type, and this feature is often used by graphical clients to implement features like the chat gallery, chat profile pictures and more.</p> +<h3><a class="anchor" href="#polls" id="polls" name="polls"><i class="anchor-icon"></i></a><a href="/api/poll">Polls</a></h3> +<p>Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels.</p> +<h4><a class="anchor" href="#admin-banned-and-default-rights-for-channels-supergroups-and-groups" id="admin-banned-and-default-rights-for-channels-supergroups-and-groups" name="admin-banned-and-default-rights-for-channels-supergroups-and-groups"><i class="anchor-icon"></i></a><a href="/api/rights">Admin, banned and default rights for channels, supergroups and groups</a></h4> +<p>How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.</p> +<h4><a class="anchor" href="#discussion-groups" id="discussion-groups" name="discussion-groups"><i class="anchor-icon"></i></a><a href="/api/discussion">Discussion groups</a></h4> +<p><a href="/api/channel">Groups</a> can be associated to a <a href="/api/channel">channel</a> as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts. </p> +<h4><a class="anchor" href="#channel-comments-and-message-threads" id="channel-comments-and-message-threads" name="channel-comments-and-message-threads"><i class="anchor-icon"></i></a><a href="/api/threads">Channel comments and message threads</a></h4> +<p>Telegram allows commenting on a <a href="/api/channel">channel post</a> or on a generic <a href="/api/channel">group message</a>, thanks to message threads.</p> +<h4><a class="anchor" href="#admin-log" id="admin-log" name="admin-log"><i class="anchor-icon"></i></a><a href="/api/recent-actions">Admin log</a></h4> +<p>Both supergroups and channels offer a so-called <a href="https://telegram.org/blog/admin-revolution">admin log</a>, a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more. </p> +<h4><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a><a href="/api/pin">Pinned messages</a></h4> +<p>Telegram allows pinning multiple messages on top of a specific chat. </p> +<h4><a class="anchor" href="#mentions" id="mentions" name="mentions"><i class="anchor-icon"></i></a><a href="/api/mentions">Mentions</a></h4> +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p> +<h4><a class="anchor" href="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages.</p> +<h4><a class="anchor" href="#live-geolocations" id="live-geolocations" name="live-geolocations"><i class="anchor-icon"></i></a><a href="/api/live-location">Live geolocations</a></h4> +<p>Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert. </p> +<h4><a class="anchor" href="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>Sometimes, <a href="/constructor/user">user</a> and <a href="/constructor/channel">channel</a> constructors met in group chat updates may not contain full info about the user: how to handle such constructors.</p> +<h4><a class="anchor" href="#account-deletion" id="account-deletion" name="account-deletion"><i class="anchor-icon"></i></a><a href="/api/account-deletion">Account deletion</a></h4> +<p>How to reset an account if the <a href="/api/srp">2FA</a> password was forgotten.</p> +<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> +<h4><a class="anchor" href="#telegram-passport" id="telegram-passport" name="telegram-passport"><i class="anchor-icon"></i></a><a href="/api/passport">Telegram Passport</a></h4> +<p>How to work with <a href="/api/passport">Telegram Passport</a> directly using the MTProto API.</p> +<h4><a class="anchor" href="#telegram-payments" id="telegram-payments" name="telegram-payments"><i class="anchor-icon"></i></a><a href="/api/payments">Telegram Payments</a></h4> +<p>How to work with Telegram Payments directly using the MTProto API.</p> +<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#working-with-animated-emojis" id="working-with-animated-emojis" name="working-with-animated-emojis"><i class="anchor-icon"></i></a><a href="/api/animated-emojis">Working with animated emojis</a></h4> +<p>Graphical telegram clients should transform emojis into their respective animated version. </p> +<h4><a class="anchor" href="#working-with-animated-dice" id="working-with-animated-dice" name="working-with-animated-dice"><i class="anchor-icon"></i></a><a href="/api/dice">Working with animated dice</a></h4> +<p>Telegram supports sending <a href="https://telegram.org/blog/folders#and-one-more-thing">animated dice</a> emojis. </p> +<h4><a class="anchor" href="#message-drafts" id="message-drafts" name="message-drafts"><i class="anchor-icon"></i></a><a href="/api/drafts">Message drafts</a></h4> +<p>How to handle message drafts</p> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Working with folders</p> +<h4><a class="anchor" href="#top-peer-rating" id="top-peer-rating" name="top-peer-rating"><i class="anchor-icon"></i></a><a href="/api/top-rating">Top peer rating</a></h4> +<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> +<h4><a class="anchor" href="#handling-file-references" id="handling-file-references" name="handling-file-references"><i class="anchor-icon"></i></a><a href="/api/file_reference">Handling file references</a></h4> +<p>How to handle file references.</p> +<h4><a class="anchor" href="#seamless-telegram-login" id="seamless-telegram-login" name="seamless-telegram-login"><i class="anchor-icon"></i></a><a href="/api/url-authorization">Seamless Telegram Login</a></h4> +<p>Handle Seamless Telegram Login URL authorization requests.</p> +<h4><a class="anchor" href="#web-events" id="web-events" name="web-events"><i class="anchor-icon"></i></a><a href="/api/web-events">Web events</a></h4> +<p>When interacting with HTML5 games and the websites of payment gateways, Telegram apps should expose the following JS APIs.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/account-deletion.html b/data/core.telegram.org/api/account-deletion.html new file mode 100644 index 0000000000..95a7c53e43 --- /dev/null +++ b/data/core.telegram.org/api/account-deletion.html @@ -0,0 +1,129 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Account deletion</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content=" How to reset an account if the 2FA password was forgotten."> + <meta property="og:title" content="Account deletion"> + <meta property="og:image" content="c176ebb99487f059b0"> + <meta property="og:description" content=" How to reset an account if the 2FA password was forgotten."> + <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?215" 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/account-deletion" >Account deletion</a></li></ul></div> + <h1 id="dev_page_title">Account deletion</h1> + + <div id="dev_page_content"><p>If the user has successfully provided the login code, but they forgot the <a href="/api/srp">2FA</a> password, the account should be reset: this can be done using <a href="/method/account.deleteAccount">account.deleteAccount</a>. </p> +<p>If the account's 2FA password was modified more than 7 days ago and was active in the last 7 days, account deletion will be delayed for 7 days, and a <a href="/constructor/updateServiceNotification">service message will be sent to the user</a>, containing a link in one of the following formats:</p> +<ul> +<li><code>https://telegram.me/confirmphone?phone=XXX&hash=YYYY</code></li> +<li><code>tg://confirmphone?phone=XXX&hash=YYYY</code></li> +</ul> +<p>When clicked, <a href="/method/account.sendConfirmPhoneCode">account.sendConfirmPhoneCode</a> must be called with the specified <code>hash</code>, using the account with the specified <code>phone</code> number. +This will send a phone number verification code to the phone number associated with the account. +The phone code settings are the same as for the <a href="/api/auth">login code</a>, and <a href="/method/auth.cancelCode">auth.cancelCode</a> with <a href="/method/auth.resendCode">auth.resendCode</a> can be used as well, to resend or cancel the phone code as for the <a href="/api/auth">login code</a>.</p> +<p>Once the SMS code is received, the <a href="/method/account.confirmPhone">account.confirmPhone</a> method will have to be called with the SMS code and the phone hash received from the <a href="/method/account.sendConfirmPhoneCode">account.sendConfirmPhoneCode</a> method.</p> +<p>This will cancel deletion of the account and will log out the user that tried to reset it. +Otherwise, if the number isn't confirmed in 7 days, the account will be deleted and the user will be free to recreate it.</p> +<h2><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h2> +<h3><a class="anchor" href="#user-authorization" id="user-authorization" name="user-authorization"><i class="anchor-icon"></i></a><a href="/api/auth">User Authorization</a></h3> +<p>How to register a user's phone to start using the API.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/animated-emojis.html b/data/core.telegram.org/api/animated-emojis.html new file mode 100644 index 0000000000..9224f97f2f --- /dev/null +++ b/data/core.telegram.org/api/animated-emojis.html @@ -0,0 +1,187 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Animated Emojis</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Graphical telegram clients should transform emojis into their respective animated version."> + <meta property="og:title" content="Animated Emojis"> + <meta property="og:image" content=""> + <meta property="og:description" content="Graphical telegram clients should transform emojis into their respective animated version."> + <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?215" 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/animated-emojis" >Animated Emojis</a></li></ul></div> + <h1 id="dev_page_title">Animated Emojis</h1> + + <div id="dev_page_content"><p>Graphical telegram clients should transform emojis into their respective animated version. </p> +<pre><code><a href='/constructor/inputStickerSetAnimatedEmoji'>inputStickerSetAnimatedEmoji</a>#28703c8 = <a href='/type/InputStickerSet'>InputStickerSet</a>; + +<a href='/constructor/messages.stickerSet'>messages.stickerSet</a>#b60a24a6 set:<a href='/type/StickerSet'>StickerSet</a> packs:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StickerPack'>StickerPack</a>> documents:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Document'>Document</a>> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +---functions--- + +<a href='/method/messages.getStickerSet'>messages.getStickerSet</a>#2619a90e stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>;</code></pre> +<p>On startup, clients should fetch the animated emoji stickerset by calling the <a href="/method/messages.getStickerSet">messages.getStickerSet</a> method, providing <a href="/constructor/inputStickerSetAnimatedEmoji">inputStickerSetAnimatedEmoji</a> to the <code>stickerset</code> field.<br> +The returned stickerset will contain a set of animated stickers, one for each of the supported emojis. </p> +<p>Clients should substitute messages containing only one instance of one of the allowed emojis with the respective animated sticker. </p> +<p>Animated emojis should loop only once when first sent or received, or when clicked.<br> +For <a href="#emoji-reactions">supported emojis</a>, clients on both sides of private chats with users are supposed to show a reaction animation when any of the two users clicks on the animated emoji: <a href="#emoji-reactions">click here for more info »</a>.</p> +<p>For special <a href="/api/dice">dice emojis</a> like <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" />, or <img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />, clients are supposed to behave differently both when sending and receiving such emojis: <a href="/api/dice">click here for more info »</a>.</p> +<h3><a class="anchor" href="#emojis-with-sounds" id="emojis-with-sounds" name="emojis-with-sounds"><i class="anchor-icon"></i></a>Emojis with sounds</h3> +<p>Certained animated emojis should play sound when clicked, as specified by <a href="/api/config#client-configuration">server-side configuration</a>. </p> +<p>The returned JSON object will contain the following map, with a list of file IDs to download:</p> +<pre><code> "emojies_sounds": { + "\ud83c\udf83": { + "id": "4956223179606458539", + "access_hash": "-2107001400913062971", + "file_reference_base64": "AF-4ApC7ukC0UWEPZN0TeSJURe7T" + }, + "\u26b0": { + "id": "4956223179606458540", + "access_hash": "-1498869544183595185", + "file_reference_base64": "AF-4ApCLKMGt96WCvLm58kbqZHd3" + }, + "\ud83e\udddf\u200d\u2642": { + "id": "4960929110848176331", + "access_hash": "3986395821757915468", + "file_reference_base64": "AF-4ApAedNln3IMEHH-SUQuH8L9g" + }, + }</code></pre> +<p>The <a href="/api/file_reference">file reference field</a> should be base64-decoded before <a href="/api/files">downloading the file</a>.</p> +<h3><a class="anchor" href="#emoji-reactions" id="emoji-reactions" name="emoji-reactions"><i class="anchor-icon"></i></a>Emoji reactions</h3> +<pre><code><a href='/constructor/inputStickerSetAnimatedEmojiAnimations'>inputStickerSetAnimatedEmojiAnimations</a>#cde3739 = <a href='/type/InputStickerSet'>InputStickerSet</a>; + +<a href='/constructor/messages.stickerSet'>messages.stickerSet</a>#b60a24a6 set:<a href='/type/StickerSet'>StickerSet</a> packs:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StickerPack'>StickerPack</a>> documents:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Document'>Document</a>> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +<a href='/constructor/stickerPack'>stickerPack</a>#12b299d4 emoticon:<a href='/type/string'>string</a> documents:<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/StickerPack'>StickerPack</a>; + +<a href='/constructor/sendMessageEmojiInteraction'>sendMessageEmojiInteraction</a>#25972bcb emoticon:<a href='/type/string'>string</a> msg_id:<a href='/type/int'>int</a> interaction:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>; +<a href='/constructor/sendMessageEmojiInteractionSeen'>sendMessageEmojiInteractionSeen</a>#b665902e emoticon:<a href='/type/string'>string</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>; + +<a href='/constructor/updateUserTyping'>updateUserTyping</a>#c01e857f user_id:<a href='/type/long'>long</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getStickerSet'>messages.getStickerSet</a>#2619a90e stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +<a href='/method/messages.setTyping'>messages.setTyping</a>#58943ee2 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.0?<a href='/type/int'>int</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>On startup, clients should fetch the animated reaction emoji stickerset by calling the <a href="/method/messages.getStickerSet">messages.getStickerSet</a> method, providing <a href="/constructor/inputStickerSetAnimatedEmojiAnimations">inputStickerSetAnimatedEmojiAnimations</a> to the <code>stickerset</code> field.<br> +The returned stickerset will contain a set of animated emoji reactions, <em>one or more</em> for each of the supported emojis.<br> +If a set of reactions for the <img class="emoji" src="//telegram.org/img/emoji/40/E29DA4.png" width="20" height="20" alt="❤" /> emoji is returned, the same reactions should also be assigned to the <img class="emoji" src="//telegram.org/img/emoji/40/F09FA7A1.png" width="20" height="20" alt="🧡" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F929B.png" width="20" height="20" alt="💛" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F929A.png" width="20" height="20" alt="💚" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F9299.png" width="20" height="20" alt="💙" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F929C.png" width="20" height="20" alt="💜" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F96A4.png" width="20" height="20" alt="🖤" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09FA48D.png" width="20" height="20" alt="🤍" /> and <img class="emoji" src="//telegram.org/img/emoji/40/F09FA48E.png" width="20" height="20" alt="🤎" /> emojis. </p> +<p>Clients on both sides of private chats with users should overlay one of the appropriate reaction animations over the animated sticker when any of the two users clicks on a supported animated emoji.<br> +The reaction animation for each separate tap should be chosen randomly from all the available reactions for a given emoji, and multiple taps should be aggregated and sent to the other user as follows: </p> +<p>At each tap, clients should store all occurred taps in a local list.<br> +After 1 second has elapsed with no more taps, the local list should be cleared and stored taps should be sent using <a href="/method/messages.setTyping">messages.setTyping</a>, passing a <a href="/constructor/sendMessageEmojiInteraction">sendMessageEmojiInteraction</a> constructor with the following fields: </p> +<ul> +<li><code>emoticon</code> - The emoji we're reacting to</li> +<li><code>msg_id</code> - Message ID of the animated emoji that was clicked</li> +<li><code>interaction</code> - A JSON object with interaction info, containing the following keys:<ul> +<li><code>v</code> - An integer indicating the object version, currently <code>1</code></li> +<li><code>a</code> - An array of JSON objects, each containing the following keys:<ul> +<li><code>t</code> - float, number of seconds that passed since the previous tap in the array, the first tap uses a value of <code>0.0</code>.</li> +<li><code>i</code> - integer, 1-based index of the randomly chosen animation for the tap (equivalent to the index of a specific emoji-related animation in <a href="/constructor/stickerPack">stickerPack</a> + 1).</li> +</ul> +</li> +</ul> +</li> +</ul> +<p>1 second after the receiving user has seen the last reaction animation for a specific emoji, an acknowledgement must be sent using <a href="/method/messages.setTyping">messages.setTyping</a>, passing a <a href="/constructor/sendMessageEmojiInteractionSeen">sendMessageEmojiInteractionSeen</a> with that emoji.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/auth.html b/data/core.telegram.org/api/auth.html new file mode 100644 index 0000000000..43fec5c314 --- /dev/null +++ b/data/core.telegram.org/api/auth.html @@ -0,0 +1,202 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>User Authorization</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to register a user's phone to start using the API."> + <meta property="og:title" content="User Authorization"> + <meta property="og:image" content="9ebfef6d534b708d3a"> + <meta property="og:description" content="How to register a user's phone to start using the API."> + <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?215" 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/auth" >User Authorization</a></li></ul></div> + <h1 id="dev_page_title">User Authorization</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Authorization is associated with a client’s encryption key identifier: <strong>auth_key_id</strong>. No additional parameters need to be passed into methods following authorization. </p> +<p>To log in as a <a href="/bots">bot</a>, follow <a href="/api/bots">these instructions »</a>.</p> +<h3><a class="anchor" name="sending-a-verification-code" href="#sending-a-verification-code"><i class="anchor-icon"></i></a>Sending a verification code</h3> +<p>Example implementations: <a href="https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java">telegram for android</a>, <a href="https://github.com/tdlib/td/tree/master/td/telegram/SendCodeHelper.cpp">tdlib</a>.</p> +<p>To show a nicely formatted and validated phone number field, the <a href="/constructor/help.countriesList">help.countriesList</a> constructor can be obtained using the <a href="/method/help.getCountriesList">help.getCountriesList</a> method.<br>The <a href="/constructor/help.countriesList">help.countriesList</a> config is then used as described <a href="/api/config#country-information-and-login-phone-patterns">here »</a>. </p> +<p>Authorization requires that a text message containing an authorization code first be sent to the user’s phone.<br>This may be done using the <a href="/method/auth.sendCode">auth.sendCode</a> method.<br>The system will automatically choose how to send the authorization code; there are four possible ways the code can arrive:</p> +<ul> +<li><a href="/constructor/auth.sentCodeTypeApp">Telegram code</a></li> +<li><a href="/constructor/auth.sentCodeTypeSms">SMS code</a></li> +<li><a href="/constructor/auth.sentCodeTypeCall">Phone call</a>: a synthesized voice will tell the user which verification code to input</li> +<li><a href="/constructor/auth.sentCodeTypeFlashCall">Flash phone call</a>: the code will be sent via a flash phone call, that will be closed immediately.<br>In the last case, the phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern (see <a href="/constructor/auth.sentCodeTypeFlashCall">auth.sentCodeTypeFlashCall</a>).</li> +</ul> +<p>The <a href="/method/auth.sendCode">auth.sendCode</a> method also has parameters for enabling/disabling use of flash calls, and allows passing an SMS token that will be included in the sent SMS.<br>For example, the latter is required in newer versions of android, to use the <a href="https://developers.google.com/identity/sms-retriever/overview">android SMS receiver APIs</a>.</p> +<p>The returned <a href="/type/auth.SentCode">auth.SentCode</a> object will contain multiple parameters:</p> +<table class="table"> +<tbody> +<tr> +<td><strong>flags</strong></td> +<td align="center"><a href="/type/%23">#</a></td> +<td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> +</tr> +<tr> +<td><strong>type</strong></td> +<td align="center"><a href="/type/auth.SentCodeType">auth.SentCodeType</a></td> +<td>Phone code type</td> +</tr> +<tr> +<td><strong>phone_code_hash</strong></td> +<td align="center"><a href="/type/string">string</a></td> +<td>Phone code hash, to be stored and later re-used with <a href="/method/auth.signIn">auth.signIn</a></td> +</tr> +<tr> +<td><strong>next_type</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/auth.CodeType">auth.CodeType</a></td> +<td>Phone code type that will be sent next, if the phone code is not received within <code>timeout</code> seconds: to send it use <a href="/method/auth.resendCode">auth.resendCode</a></td> +</tr> +<tr> +<td><strong>timeout</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> +<td>Timeout for reception of the phone code</td> +</tr> +</tbody> +</table> +<p>If the message takes too long (<code>timeout</code> seconds) to arrive at the phone, the <a href="/method/auth.resendCode">auth.resendCode</a> method may be invoked to resend a code of type <code>next_type</code>.<br>If the same happens again, you can use <a href="/method/auth.resendCode">auth.resendCode</a> with the <code>next_type</code> returned by the previous call to <a href="/method/auth.resendCode">auth.resendCode</a>.<br>To cancel the verification code use <a href="/method/auth.cancelCode">auth.cancelCode</a>.</p> +<h3><a class="anchor" name="sign-in-sign-up" href="#sign-in-sign-up"><i class="anchor-icon"></i></a>Sign in/sign up</h3> +<p>When user enters verification code, the <a href="/method/auth.signIn">auth.signIn</a> method must be used to validate it and possibly sign user in.</p> +<p>If the code was entered correctly, but the method returns <a href="/constructor/auth.authorizationSignUpRequired">auth.authorizationSignUpRequired</a>, it means that account with this phone number doesn't exist yet: user needs to provide basic information, accept terms of service and then the new user registration method (<a href="/method/auth.signUp">auth.signUp</a>) must be invoked.</p> +<h3><a class="anchor" name="2fa" href="#2fa"><i class="anchor-icon"></i></a>2FA</h3> +<p>When trying to sign in using <a href="/method/auth.signIn">auth.signIn</a>, an <a href="/method/auth.signIn#possible-errors">error 400 SESSION_PASSWORD_NEEDED</a> may be returned, if the user has two-factor authentication enabled.<br>In this case, instructions for <a href="/api/srp">SRP 2FA authentication</a> must be followed.</p> +<p>To set up two-factor authorization on an already authorized account, follow the <a href="/api/srp">SRP 2FA authentication docs</a>.</p> +<h4><a class="anchor" name="test-accounts" href="#test-accounts"><i class="anchor-icon"></i></a>Test Accounts</h4> +<p>Each phone number is limited to only a certain amount of logins per day (e.g. 5, but this is subject to change) after which the API will return a FLOOD error until the next day. This might not be enough for testing the implementation of User Authorization flows in client applications.</p> +<p>There are several reserved phone number prefixes for testing that your application handles redirects between DCs, sign up, sign in and 2FA flows correctly. These numbers are only available on <strong>Test DCs</strong> (their IP addresses for TCP transport are availble in <a href="https://my.telegram.org/apps">API development tools</a> panel after <a href="https://core.telegram.org/api/obtaining_api_id#obtaining-api-id">api_id was obtained</a>, <a href="https://core.telegram.org/mtproto/transports#uri-format">URI format</a> for HTTPS/Websocket transport).</p> +<p>If you wish to emulate an application of a user associated with DC number X, it is sufficient to specify the phone number as <code>99966XYYYY</code>, where YYYY are random numbers, when registering the user. A user like this would always get XXXXX as the login confirmation code (the DC number, repeated five times). Note that the value of X must be in the range of 1-3 because there are only 3 Test DCs. When the flood limit is reached for any particular test number, just choose another number (changing the YYYY random part).</p> +<p>Do not store any important or private information in the messages of such test accounts; anyone can make use of the simplified authorization mechanism – and we periodically wipe all information stored there.</p> +<p>Proceed with User Authorization flows in <strong>Production DCs</strong> only after you make sure everything works correctly on <strong>Test DCs</strong> first to avoid reaching flood limits.</p> +<blockquote> +<p>To help you with working on production DCs, logins with the same phone number with which the <code>api_id</code> was registered have more generous flood limits.</p> +</blockquote> +<h3><a class="anchor" name="we-are-authorized" href="#we-are-authorized"><i class="anchor-icon"></i></a>We are authorized</h3> +<p>As a result of authorization, the client key, <strong>auth_key_id</strong>, becomes associated with the user, and each subsequent API call with this key will be executed with that user’s identity. The authorization method itself returns the relevant user. It is best to immediately store the User ID locally in a binding with the key.</p> +<p>Only a small portion of the API methods are available to <strong>unauthorized</strong> users:</p> +<ul> +<li><a href="/method/auth.sendCode">auth.sendCode</a></li> +<li><a href="/method/auth.resendCode">auth.resendCode</a></li> +<li><a href="/method/account.getPassword">account.getPassword</a></li> +<li><a href="/method/auth.checkPassword">auth.checkPassword</a></li> +<li><a href="/method/auth.checkPhone">auth.checkPhone</a></li> +<li><a href="/method/auth.signUp">auth.signUp</a></li> +<li><a href="/method/auth.signIn">auth.signIn</a></li> +<li><a href="/method/auth.importAuthorization">auth.importAuthorization</a></li> +<li><a href="/method/help.getConfig">help.getConfig</a></li> +<li><a href="/method/help.getNearestDc">help.getNearestDc</a></li> +<li><a href="/method/help.getAppUpdate">help.getAppUpdate</a></li> +<li><a href="/method/help.getCdnConfig">help.getCdnConfig</a></li> +<li><a href="/method/langpack.getLangPack">langpack.getLangPack</a></li> +<li><a href="/method/langpack.getStrings">langpack.getStrings</a></li> +<li><a href="/method/langpack.getDifference">langpack.getDifference</a></li> +<li><a href="/method/langpack.getLanguages">langpack.getLanguages</a></li> +<li><a href="/method/langpack.getLanguage">langpack.getLanguage</a></li> +</ul> +<p>Other methods will result in an error: <a href="/api/errors#401-unauthorized"><strong>401 UNAUTHORIZED</strong></a>.</p> +</div> + +</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/bots.html b/data/core.telegram.org/api/bots.html new file mode 100644 index 0000000000..b851aac4a2 --- /dev/null +++ b/data/core.telegram.org/api/bots.html @@ -0,0 +1,142 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Bots</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Working with bots, using the MTProto API. +See here for more info about bots. +Please note that you can also use the simplified…"> + <meta property="og:title" content="Bots"> + <meta property="og:image" content=""> + <meta property="og:description" content="Working with bots, using the MTProto API. +See here for more info about bots. +Please note that you can also use the simplified…"> + <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?215" 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/bots" >Bots</a></li></ul></div> + <h1 id="dev_page_title">Bots</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Working with bots, using the MTProto API.</p> +<p>See <a href="/bots">here</a> for more info about bots. </p> +<p>Please note that you can also use the simplified <a href="/bots/api">HTTP Bot API</a> to use bots, see <a href="/bots">here for more info »</a>.</p> +<h3><a class="anchor" href="#login" id="login" name="login"><i class="anchor-icon"></i></a>Login</h3> +<pre><code>---functions--- + +<a href='/method/auth.importBotAuthorization'>auth.importBotAuthorization</a>#67a3ff2c flags:<a href='/type/int'>int</a> api_id:<a href='/type/int'>int</a> api_hash:<a href='/type/string'>string</a> bot_auth_token:<a href='/type/string'>string</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>;</code></pre> +<p>In order to login as a bot, instead of using the <a href="/api/auth">standard login code flow</a>, simply provide the <a href="/bots#creating-a-new-bot">bot token</a> generated by <a href="https://t.me/botfather">@botfather</a>.<br> +You must still provide your <a href="/api/obtaining_api_id#obtaining-api-id">API ID</a>, as per user logins. </p> +<p>After successful authorization, you will be able to use <a href="/methods">most MTProto API methods</a>, just as any normal user.<br> +Methods that can be called by bots will have a <strong>Bots can use this method</strong> notice. </p> +<h3><a class="anchor" href="#commands" id="commands" name="commands"><i class="anchor-icon"></i></a><a href="/api/bots/commands">Commands</a></h3> +<p><a href="/bots">Bots</a> offer a set of commands that can be used by users in private, or in a chat. </p> +<h3><a class="anchor" href="#buttons" id="buttons" name="buttons"><i class="anchor-icon"></i></a><a href="/api/bots/buttons">Buttons</a></h3> +<p>Users can interact with your bot via <strong>buttons</strong> or even <strong>inline buttons</strong>, straight from inline <strong>messages</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#inline-queries" id="inline-queries" name="inline-queries"><i class="anchor-icon"></i></a><a href="/api/bots/inline">Inline queries</a></h3> +<p>Users can interact with your bot via <strong>inline queries</strong>, straight from the <strong>text input field</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#games" id="games" name="games"><i class="anchor-icon"></i></a><a href="/api/bots/games">Games</a></h3> +<p>Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats; how to work with games in the MTProto API.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/bots/buttons.html b/data/core.telegram.org/api/bots/buttons.html new file mode 100644 index 0000000000..0fa43cc1aa --- /dev/null +++ b/data/core.telegram.org/api/bots/buttons.html @@ -0,0 +1,242 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Buttons</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Users can interact with your bot via buttons or even inline buttons, straight from inline messages in any chat. "> + <meta property="og:title" content="Buttons"> + <meta property="og:image" content=""> + <meta property="og:description" content="Users can interact with your bot via buttons or even inline buttons, straight from inline messages in any chat. "> + <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?215" 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/bots%2Fbuttons" >Buttons</a></li></ul></div> + <h1 id="dev_page_title">Buttons</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Users can interact with your bot via <strong>buttons</strong> or even <strong>inline buttons</strong>, straight from inline <strong>messages</strong> in <strong>any</strong> chat.<br> +This article describes the full button flow, using the MTProto API. </p> +<p>For a simplified description using the HTTP bot API, see <a href="/bots/#inline-keyboards-and-on-the-fly-updating">here »</a>. </p> +<h3><a class="anchor" href="#buttons" id="buttons" name="buttons"><i class="anchor-icon"></i></a>Buttons</h3> +<pre><code><a href='/constructor/keyboardButton'>keyboardButton</a>#a2fa4880 text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonUrl'>keyboardButtonUrl</a>#258aff05 text:<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonCallback'>keyboardButtonCallback</a>#35bbdb6b flags:<a href='/type/%23'>#</a> requires_password:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestPhone'>keyboardButtonRequestPhone</a>#b16a6c29 text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestGeoLocation'>keyboardButtonRequestGeoLocation</a>#fc796b3f text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonSwitchInline'>keyboardButtonSwitchInline</a>#568a748 flags:<a href='/type/%23'>#</a> same_peer:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> query:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonGame'>keyboardButtonGame</a>#50f41ccf text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonBuy'>keyboardButtonBuy</a>#afd93fbb text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonUrlAuth'>keyboardButtonUrlAuth</a>#10b78d29 flags:<a href='/type/%23'>#</a> text:<a href='/type/string'>string</a> fwd_text:flags.0?<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> button_id:<a href='/type/int'>int</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/inputKeyboardButtonUrlAuth'>inputKeyboardButtonUrlAuth</a>#d02e7fd4 flags:<a href='/type/%23'>#</a> request_write_access:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> fwd_text:flags.1?<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> bot:<a href='/type/InputUser'>InputUser</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestPoll'>keyboardButtonRequestPoll</a>#bbc7515d flags:<a href='/type/%23'>#</a> quiz:flags.0?<a href='/type/Bool'>Bool</a> text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/keyboardButtonRow'>keyboardButtonRow</a>#77608b83 buttons:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButton'>KeyboardButton</a>> = <a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>; + +<a href='/constructor/replyKeyboardHide'>replyKeyboardHide</a>#a03e5b85 flags:<a href='/type/%23'>#</a> selective:flags.2?<a href='/constructor/true'>true</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; +<a href='/constructor/replyKeyboardForceReply'>replyKeyboardForceReply</a>#86b40b08 flags:<a href='/type/%23'>#</a> single_use:flags.1?<a href='/constructor/true'>true</a> selective:flags.2?<a href='/constructor/true'>true</a> placeholder:flags.3?<a href='/type/string'>string</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; +<a href='/constructor/replyKeyboardMarkup'>replyKeyboardMarkup</a>#85dd99d1 flags:<a href='/type/%23'>#</a> resize:flags.0?<a href='/constructor/true'>true</a> single_use:flags.1?<a href='/constructor/true'>true</a> selective:flags.2?<a href='/constructor/true'>true</a> rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> placeholder:flags.3?<a href='/type/string'>string</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; +<a href='/constructor/replyInlineMarkup'>replyInlineMarkup</a>#48a30254 rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; + +<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +---functions--- + +<a href='/method/messages.sendMessage'>messages.sendMessage</a>#520c3870 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Bots can attach a <a href="/type/ReplyMarkup">ReplyMarkup</a> constructor to outgoing messages, to attach an <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a> or a <a href="/bots#keyboards">custom reply keyboard</a>:</p> +<ul> +<li><a href="/constructor/replyKeyboardMarkup">replyKeyboardMarkup</a> - Sends a <a href="/bots#keyboards">custom reply keyboard</a>. <br> User clients receiving such a constructor should display a <a href="/bots#keyboards">special keyboard</a> with custom reply options.</li> +<li><a href="/constructor/replyKeyboardHide">replyKeyboardHide</a> - Hides the <a href="/bots#keyboards">custom reply keyboard</a>. <br> User clients receiving this constructor should hide the <a href="/bots#keyboards">custom reply keyboard</a> opened by <a href="/constructor/replyKeyboardMarkup">replyKeyboardMarkup</a></li> +<li><a href="/constructor/replyKeyboardForceReply">replyKeyboardForceReply</a> - Sends a <a href="/bots/api#forcereply">force reply</a> constructor <br> User clients receiving a message with this constructor should act as if the user had clicked on the reply button of the message, displaying the reply UI. </li> +<li><a href="/constructor/replyInlineMarkup">replyInlineMarkup</a> - Attaches an <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a> to the message, allowing users to send callback data to the bot without sending actual messages to the current chat, see <a href="/bots#pressing-buttons">here for more info »</a>. </li> +</ul> +<h3><a class="anchor" href="#pressing-buttons" id="pressing-buttons" name="pressing-buttons"><i class="anchor-icon"></i></a>Pressing buttons</h3> +<pre><code><a href='/constructor/keyboardButton'>keyboardButton</a>#a2fa4880 text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonUrl'>keyboardButtonUrl</a>#258aff05 text:<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonCallback'>keyboardButtonCallback</a>#35bbdb6b flags:<a href='/type/%23'>#</a> requires_password:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestPhone'>keyboardButtonRequestPhone</a>#b16a6c29 text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestGeoLocation'>keyboardButtonRequestGeoLocation</a>#fc796b3f text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestPoll'>keyboardButtonRequestPoll</a>#bbc7515d flags:<a href='/type/%23'>#</a> quiz:flags.0?<a href='/type/Bool'>Bool</a> text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonSwitchInline'>keyboardButtonSwitchInline</a>#568a748 flags:<a href='/type/%23'>#</a> same_peer:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> query:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonGame'>keyboardButtonGame</a>#50f41ccf text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonBuy'>keyboardButtonBuy</a>#afd93fbb text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonUrlAuth'>keyboardButtonUrlAuth</a>#10b78d29 flags:<a href='/type/%23'>#</a> text:<a href='/type/string'>string</a> fwd_text:flags.0?<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> button_id:<a href='/type/int'>int</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +// Used by bots to send a keyboardButtonUrlAuth +<a href='/constructor/inputKeyboardButtonUrlAuth'>inputKeyboardButtonUrlAuth</a>#d02e7fd4 flags:<a href='/type/%23'>#</a> request_write_access:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> fwd_text:flags.1?<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> bot:<a href='/type/InputUser'>InputUser</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/keyboardButtonRow'>keyboardButtonRow</a>#77608b83 buttons:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButton'>KeyboardButton</a>> = <a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>;</code></pre> +<p>Both <a href="/bots#keyboards">reply</a> and <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline</a> keyboards are composed of a vector of <a href="/constructor/keyboardButtonRow">rows</a>, each row containing a vector of <a href="/type/KeyboardButton">buttons</a>, for each column.<br> +Each row can have a different number of columns, and user clients should properly handle clicking buttons of every type. </p> +<p>Buttons available only in reply keyboards:</p> +<ul> +<li><a href="/constructor/keyboardButton">keyboardButton</a> - Send a message to the chat, replying to the message that attached the <a href="/bots#keyboard">reply keyboard</a></li> +<li><a href="/constructor/keyboardButtonRequestPhone">keyboardButtonRequestPhone</a> - Only in private chats, send the current user's contact to the chat, replying to the message that attached the <a href="/bots#keyboard">reply keyboard</a></li> +<li><a href="/constructor/keyboardButtonRequestGeoLocation">keyboardButtonRequestGeoLocation</a> - Only in private chats, send the current user's geolocation to the chat, replying to the message that attached the <a href="/bots#keyboard">reply keyboard</a></li> +<li><a href="/constructor/keyboardButtonRequestPoll">keyboardButtonRequestPoll</a> - Only in private chats, prompt the user to create and send a <a href="/api/poll">poll</a> (or a quiz poll, depending on the <code>quiz</code> flag), replying to the message that attached the <a href="/bots#keyboard">reply keyboard</a></li> +</ul> +<p>Buttons available only in inline keyboards:</p> +<ul> +<li><a href="/constructor/keyboardButtonUrl">keyboardButtonUrl</a> - Open the URL, showing a "Do you want to open this URL?" prompt (unless the URL is one of the <a href="https://github.com/DrKLO/Telegram/blob/002c01ecd37cd08ed07b3ed84d79318d091dfc85/TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java#L351">internal URIs</a>, in which case the URL should be opened right away)</li> +<li><a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a> - Send the callback data to the bot, optionally providing the user's 2FA SRP payload for identity verification, see <a href="#callback-queries">here for more info »</a></li> +<li><a href="/constructor/keyboardButtonSwitchInline">keyboardButtonSwitchInline</a><ul> +<li>If <code>keyboardButtonSwitchInline.same_peer</code> is set, insert the bot's username and <code>keyboardButtonSwitchInline.query</code> in the current chat's input field, triggering an <a href="/api/bots/inline">inline query</a>.</li> +<li>If <code>keyboardButtonSwitchInline.same_peer</code> is not set, prompt the user to select one of their chats, and then insert the bot's username and <code>keyboardButtonSwitchInline.query</code> in the current chat's input field, triggering an <a href="/api/bots/inline">inline query</a>.</li> +</ul> +</li> +<li><a href="/constructor/keyboardButtonGame">keyboardButtonGame</a> - Open the <a href="/constructor/game">game</a> from the attached <a href="/constructor/messageMediaGame">messageMediaGame</a> constructor, for more info <a href="/api/bots/games">see here »</a></li> +<li><a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> - Proceed to initiating the payment flow, for more info <a href="/api/payments">see here »</a></li> +<li><a href="/constructor/keyboardButtonUrlAuth">keyboardButtonUrlAuth</a> - Log into a website using the user's Telegram account, as specified <a href="/api/url-authorization">here »</a></li> +</ul> +<h3><a class="anchor" href="#callback-queries" id="callback-queries" name="callback-queries"><i class="anchor-icon"></i></a>Callback queries</h3> +<p><a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a> buttons can be used to send the specified <code>data</code> payload back to the bot, when they are clicked.<br> +Additionally, a bot can verify a user's identity by requiring they verify their 2FA password with <a href="/api/srp">SRP</a>. </p> +<h4><a class="anchor" href="#sending-a-callback-query" id="sending-a-callback-query" name="sending-a-callback-query"><i class="anchor-icon"></i></a>Sending a callback query</h4> +<pre><code><a href='/constructor/keyboardButtonGame'>keyboardButtonGame</a>#50f41ccf text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonCallback'>keyboardButtonCallback</a>#35bbdb6b flags:<a href='/type/%23'>#</a> requires_password:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/messages.botCallbackAnswer'>messages.botCallbackAnswer</a>#36585ea4 flags:<a href='/type/%23'>#</a> alert:flags.1?<a href='/constructor/true'>true</a> has_url:flags.3?<a href='/constructor/true'>true</a> native_ui:flags.4?<a href='/constructor/true'>true</a> message:flags.0?<a href='/type/string'>string</a> url:flags.2?<a href='/type/string'>string</a> cache_time:<a href='/type/int'>int</a> = <a href='/type/messages.BotCallbackAnswer'>messages.BotCallbackAnswer</a>; + +---functions--- + +<a href='/method/messages.getBotCallbackAnswer'>messages.getBotCallbackAnswer</a>#9342ca07 flags:<a href='/type/%23'>#</a> game:flags.1?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> data:flags.0?<a href='/type/bytes'>bytes</a> password:flags.2?<a href='/type/InputCheckPasswordSRP'>InputCheckPasswordSRP</a> = <a href='/type/messages.BotCallbackAnswer'>messages.BotCallbackAnswer</a>;</code></pre> +<p>When the user clicks on a <a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a> in a message sent by a bot, or generated by an <a href="/api/bots/inline">inline query</a>, <a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a> should be called, passing the peer and ID of the message.<br> +The same should happen when clicking on <a href="/constructor/keyboardButtonGame">keyboardButtonGame</a> buttons, with the difference that the <code>game</code> flag must be set instead of the <code>data</code> parameter. </p> +<p>Make sure to properly handle bot timeouts in the form of <code>BOT_RESPONSE_TIMEOUT</code> RPC errors, as the bot may be offline and unable to reply. </p> +<p>The returned <a href="/constructor/messages.botCallbackAnswer">messages.botCallbackAnswer</a> constructor contains:</p> +<ul> +<li><code>message</code> if specified, a message that should be shown in a non-blocking toast notification</li> +<li><code>alert</code> indicates whether the <code>message</code> should be shown as a dismissable prompt, instead of a simple toast notification</li> +<li><code>has_url</code> Whether an URL is present</li> +<li><code>url</code> if specified, the client should open the URL, without showing a confirmation prompt. <br> This is safe and allowed, because here, bots can only return: <ul> +<li>URLs to themselves with added query parameters (<code>t.me/bot?start=aaa</code>)</li> +<li>URLs to a valid game, if the bot has manually configured games, and the clicked button was a <a href="/constructor/keyboardButtonGame">keyboardButtonGame</a>. </li> +</ul> +</li> +<li><code>native_ui</code> whether to open game URLs in a WebView or in native UI.</li> +<li><code>cache_time</code> specifies for how long should this answer be cached, client-side</li> +</ul> +<h5><a class="anchor" href="#srp-verification" id="srp-verification" name="srp-verification"><i class="anchor-icon"></i></a>SRP verification</h5> +<p>If the <code>requires_password</code> flag is set, the <a href="/api/srp">SRP 2FA payload</a> must also be generated and attached to the query, to verify the identity of the user. </p> +<p><strong>Note that the bot will NOT be able to access your password or the SRP payload</strong>. </p> +<p>The SRP payload will be processed exclusively on the Telegram's servers, simply returning an RPC error without passing the query to the bot if the verification fails.<br> +This is just a way of verifying the identity of the user, mainly used by the official <a href="https://t.me/botfather">@botfather</a> bot to allow securely transferring the ownership of a bot to another user.</p> +<h4><a class="anchor" href="#answering-a-callback-query" id="answering-a-callback-query" name="answering-a-callback-query"><i class="anchor-icon"></i></a>Answering a callback query</h4> +<pre><code><a href='/constructor/updateBotCallbackQuery'>updateBotCallbackQuery</a>#b9cfc48d flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> peer:<a href='/type/Peer'>Peer</a> msg_id:<a href='/type/int'>int</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>; + +<a href='/constructor/updateInlineBotCallbackQuery'>updateInlineBotCallbackQuery</a>#691e9052 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> msg_id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.setBotCallbackAnswer'>messages.setBotCallbackAnswer</a>#d58f130a flags:<a href='/type/%23'>#</a> alert:flags.1?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> message:flags.0?<a href='/type/string'>string</a> url:flags.2?<a href='/type/string'>string</a> cache_time:<a href='/type/int'>int</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>After the user invokes <a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a>, an <a href="/constructor/updateBotCallbackQuery">updateBotCallbackQuery</a> or <a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a> is generated and sent to the bot, depending on whether the query originated from a normal message sent by the bot, or from a message sent from an <a href="/api/bots/inline">inline query</a>. </p> +<p>Either way, bots must reply to the query as quickly as possible using <a href="/method/messages.setBotCallbackAnswer">messages.setBotCallbackAnswer</a>: </p> +<ul> +<li><code>query_id</code> is the <code>query_id</code> from <a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a>, an <a href="/constructor/updateBotCallbackQuery">updateBotCallbackQuery</a> or <a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a></li> +<li><code>message</code>, <code>alert</code>, <code>url</code> can contain messages and URLs to trigger different client behaviour, as <a href="#sending-a-callback-query">specified above »</a></li> +<li><code>cache_time</code> indicates the maximum amount of time in seconds that the result of the callback query may be cached by the <strong>client</strong>. </li> +</ul> +<p>If a <code>game_short_name</code> is present in the update, the bot should return the URL of the game with the specified name.<br> +The <a href="/method/messages.setBotCallbackAnswer">messages.setBotCallbackAnswer</a> method must be called anyway, even if no <code>message</code> or <code>url</code> is returned, to avoid timeouts on the client. </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/bots/commands.html b/data/core.telegram.org/api/bots/commands.html new file mode 100644 index 0000000000..4a2dc42d6c --- /dev/null +++ b/data/core.telegram.org/api/bots/commands.html @@ -0,0 +1,140 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Commands</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Bots offer a set of commands that can be used by users in private, or in a chat."> + <meta property="og:title" content="Commands"> + <meta property="og:image" content=""> + <meta property="og:description" content="Bots offer a set of commands that can be used by users in private, or in a chat."> + <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?215" 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/bots%2Fcommands" >Commands</a></li></ul></div> + <h1 id="dev_page_title">Commands</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><a href="/bots">Bots</a> offer a set of <a href="/bots/#commands">commands</a> that can be used by users in private, or in a chat. </p> +<p>For a simplified description using the HTTP bot API, see <a href="/bots/#commands">here »</a>. </p> +<h3><a class="anchor" href="#getting-commands" id="getting-commands" name="getting-commands"><i class="anchor-icon"></i></a>Getting commands</h3> +<pre><code><a href='/constructor/botCommand'>botCommand</a>#c27ac8c7 command:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> = <a href='/type/BotCommand'>BotCommand</a>; + +<a href='/constructor/botInfo'>botInfo</a>#1b74b335 user_id:<a href='/type/long'>long</a> description:<a href='/type/string'>string</a> commands:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotCommand'>BotCommand</a>> = <a href='/type/BotInfo'>BotInfo</a>; + +<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; +<a href='/constructor/userFull'>userFull</a>#d697ff05 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> user:<a href='/type/User'>User</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> ttl_period:flags.14?<a href='/type/int'>int</a> theme_emoticon:flags.15?<a href='/type/string'>string</a> = <a href='/type/UserFull'>UserFull</a>; + +<a href='/constructor/user'>user</a>#3ff6ecb0 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> fake:flags.26?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;</code></pre> +<p>The <a href="/constructor/botInfo">botInfo</a> constructors contained in the <a href="/constructor/userFull">userFull</a>, <a href="/constructor/chatFull">chatFull</a>, <a href="/constructor/channelFull">channelFull</a> contain a list of commands, and for groups, the ID and a description of each bot. </p> +<p>In graphical clients, when users begin a message with a <code>/</code>, a list of commands supported by all bots present in the current chat should be shown; the same should be done for one-to-one chats with the bot itself. </p> +<p>If the command list of a bot changes, the <code>bot_info_version</code> contained in the <a href="/constructor/user">user</a> constructor received in updates will change; this indicates that the client should refetch full bot information using <a href="/method/users.getFullUser">users.getFullUser</a>.</p> +<h3><a class="anchor" href="#setting-commands" id="setting-commands" name="setting-commands"><i class="anchor-icon"></i></a>Setting commands</h3> +<pre><code><a href='/constructor/botCommand'>botCommand</a>#c27ac8c7 command:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> = <a href='/type/BotCommand'>BotCommand</a>; + +---functions--- + +<a href='/method/bots.setBotCommands'>bots.setBotCommands</a>#517165a scope:<a href='/type/BotCommandScope'>BotCommandScope</a> lang_code:<a href='/type/string'>string</a> commands:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotCommand'>BotCommand</a>> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>The command list can be changed by the owner of the bot through <a href="https://t.me/botfather">@botfather</a>, but bots can also change their own command list by invoking <a href="/method/bots.setBotCommands">bots.setBotCommands</a>.</p></div> + +</div> + + </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/bots/games.html b/data/core.telegram.org/api/bots/games.html new file mode 100644 index 0000000000..ba75dd90e6 --- /dev/null +++ b/data/core.telegram.org/api/bots/games.html @@ -0,0 +1,171 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Games</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats. "> + <meta property="og:title" content="Games"> + <meta property="og:image" content=""> + <meta property="og:description" content="Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats. "> + <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?215" 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/bots%2Fgames" >Games</a></li></ul></div> + <h1 id="dev_page_title">Games</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Bots can offer users <a href="/bots/games">HTML5 games</a> to play solo or to compete against each other in groups and one-on-one chats. </p> +<h3><a class="anchor" href="#sending-a-game" id="sending-a-game" name="sending-a-game"><i class="anchor-icon"></i></a>Sending a game</h3> +<pre><code><a href='/constructor/inputUserSelf'>inputUserSelf</a>#f7c1b13f = <a href='/type/InputUser'>InputUser</a>; + +<a href='/constructor/inputGameID'>inputGameID</a>#32c3e77 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputGame'>InputGame</a>; +<a href='/constructor/inputGameShortName'>inputGameShortName</a>#c331e80a bot_id:<a href='/type/InputUser'>InputUser</a> short_name:<a href='/type/string'>string</a> = <a href='/type/InputGame'>InputGame</a>; + +<a href='/constructor/inputMediaGame'>inputMediaGame</a>#d33f43f3 id:<a href='/type/InputGame'>InputGame</a> = <a href='/type/InputMedia'>InputMedia</a>; + +<a href='/constructor/game'>game</a>#bdf9653b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> short_name:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:<a href='/type/Photo'>Photo</a> document:flags.0?<a href='/type/Document'>Document</a> = <a href='/type/Game'>Game</a>; +<a href='/constructor/messageMediaGame'>messageMediaGame</a>#fdb19008 game:<a href='/type/Game'>Game</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Bots can directly send a game using <a href="/method/messages.sendMedia">messages.sendMedia</a>, providing:</p> +<ul> +<li>The bot's shortname obtained from <a href="https://t.me/botfather">@BotFather</a> to <code>inputGameShortName.short_name</code></li> +<li>The current bot's info to <code>inputGameShortName.bot_id</code></li> +</ul> +<p>The sent message will contain a <a href="/constructor/messageMediaGame">messageMediaGame</a> with a <a href="/constructor/game">game</a>, that can then be used by users to forward the game using sendMedia with <a href="/constructor/inputGameID">inputGameID</a>.</p> +<h3><a class="anchor" href="#starting-a-game" id="starting-a-game" name="starting-a-game"><i class="anchor-icon"></i></a>Starting a game</h3> +<p>Games are started clicking on the button, which triggers an callback query that returns the game URL, for more info <a href="/api/bots/buttons#callback-queries">see here &raquo</a>.<br> +The game should then be opened in a WebView or in native UI (specified by the <code>native_ui</code> flag), exposing the <a href="/api/web-events">appropriate HTML5 APIs</a> in order to receive various JS game events directly from the code of the game, as described <a href="/api/web-events">here »</a>. </p> +<h3><a class="anchor" href="#setting-highscores" id="setting-highscores" name="setting-highscores"><i class="anchor-icon"></i></a>Setting highscores</h3> +<pre><code>---functions--- + +<a href='/method/messages.setGameScore'>messages.setGameScore</a>#8ef8ecc0 flags:<a href='/type/%23'>#</a> edit_message:flags.0?<a href='/constructor/true'>true</a> force:flags.1?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> user_id:<a href='/type/InputUser'>InputUser</a> score:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/method/messages.setInlineGameScore'>messages.setInlineGameScore</a>#15ad9f64 flags:<a href='/type/%23'>#</a> edit_message:flags.0?<a href='/constructor/true'>true</a> force:flags.1?<a href='/constructor/true'>true</a> id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> user_id:<a href='/type/InputUser'>InputUser</a> score:<a href='/type/int'>int</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Games are supposed to report back to the MTProto API every time the user looses a game with a new highscore.<br> +Since games run in the browser, they cannot directly report data to the API using the bot token, which must be kept secret.<br> +Instead, they should send highscores to an intermediate server, that will then report scores using <a href="/method/messages.setGameScore">messages.setGameScore</a> or <a href="/method/messages.setInlineGameScore">messages.setInlineGameScore</a>, depending on the source of the game. </p> +<ul> +<li>The <code>edit_message</code> flag should be set if the game message should be automatically edited to include the current scoreboard</li> +<li>The <code>force</code> flag should be set if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters.</li> +</ul> +<h3><a class="anchor" href="#getting-highscores" id="getting-highscores" name="getting-highscores"><i class="anchor-icon"></i></a>Getting highscores</h3> +<pre><code><a href='/constructor/messageActionGameScore'>messageActionGameScore</a>#92a72876 game_id:<a href='/type/long'>long</a> score:<a href='/type/int'>int</a> = <a href='/type/MessageAction'>MessageAction</a>; + +<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/highScore'>highScore</a>#73a379eb pos:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> score:<a href='/type/int'>int</a> = <a href='/type/HighScore'>HighScore</a>; + +<a href='/constructor/messages.highScores'>messages.highScores</a>#9a3bfd99 scores:<a href='/type/Vector%20t'>Vector</a><<a href='/type/HighScore'>HighScore</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/messages.HighScores'>messages.HighScores</a>; + +---functions--- + +<a href='/method/messages.getGameHighScores'>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>; +<a href='/method/messages.getInlineGameHighScores'>messages.getInlineGameHighScores</a>#f635e1b id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> user_id:<a href='/type/InputUser'>InputUser</a> = <a href='/type/messages.HighScores'>messages.HighScores</a>;</code></pre> +<p>Every time a highscore is reached, and the <code>edit_message</code> flag is set when reporting the score, a <a href="/constructor/messageService">messageService</a> with a <a href="/constructor/messageActionGameScore">messageActionGameScore</a> is generated, indicating that the highscore of a certain game has changed, thanks to a certain <code>user_id</code>.<br> +Our own current position of the scoreboard is also reported as <code>pos</code>. </p> +<p>When receiving such an update, graphical clients should refetch the scoreboard using <a href="/method/messages.getGameHighScores">messages.getGameHighScores</a> or <a href="/method/messages.getInlineGameHighScores">messages.getInlineGameHighScores</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/bots/inline.html b/data/core.telegram.org/api/bots/inline.html new file mode 100644 index 0000000000..558cf6c15d --- /dev/null +++ b/data/core.telegram.org/api/bots/inline.html @@ -0,0 +1,215 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Inline</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Users can interact with your bot via inline queries, straight from the text input field in any chat. +This article describes…"> + <meta property="og:title" content="Inline"> + <meta property="og:image" content=""> + <meta property="og:description" content="Users can interact with your bot via inline queries, straight from the text input field in any chat. +This article describes…"> + <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?215" 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"></div> + <h1 id="dev_page_title">Inline</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Users can interact with your bot via <a href="/bots/#inline-mode"><strong>inline queries</strong></a>, straight from the <strong>text input field</strong> in <strong>any</strong> chat.<br> +This article describes the full inline bot flow, using the MTProto API. </p> +<p>For a simplified description using the HTTP bot API, see <a href="/bots/#inline-mode">here »</a>. </p> +<h3><a class="anchor" href="#making-an-inline-query" id="making-an-inline-query" name="making-an-inline-query"><i class="anchor-icon"></i></a>Making an inline query</h3> +<pre><code><a href='/constructor/messages.botResults'>messages.botResults</a>#947ca848 flags:<a href='/type/%23'>#</a> gallery:flags.0?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> next_offset:flags.1?<a href='/type/string'>string</a> switch_pm:flags.2?<a href='/type/InlineBotSwitchPM'>InlineBotSwitchPM</a> results:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInlineResult'>BotInlineResult</a>> cache_time:<a href='/type/int'>int</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/messages.BotResults'>messages.BotResults</a>; + +---functions--- + +<a href='/method/messages.getInlineBotResults'>messages.getInlineBotResults</a>#514e999d flags:<a href='/type/%23'>#</a> bot:<a href='/type/InputUser'>InputUser</a> peer:<a href='/type/InputPeer'>InputPeer</a> geo_point:flags.0?<a href='/type/InputGeoPoint'>InputGeoPoint</a> query:<a href='/type/string'>string</a> offset:<a href='/type/string'>string</a> = <a href='/type/messages.BotResults'>messages.BotResults</a>;</code></pre> +<p>When, in a graphical client, the user starts a message with an <code>@</code>, clients should:</p> +<ul> +<li>Use the cached <a href="/api/top-rating">top peer rating for inline bots</a> to show a list of frequently used inline bots.</li> +<li>If the user chooses a bot from the recent bot list or:</li> +<li>Finishes typing a full username followed by a whitespace, and if the username <a href="/method/contacts.resolveUsername">resolves</a> to a valid bot</li> +<li><a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a> is called, with the following parameters:<ul> +<li><code>bot</code> - The bot peer</li> +<li><code>peer</code> - The chat where the user made the query</li> +<li><code>geo_point</code> - The user's current geolocation, if the bot requires <a href="/bots/inline#location-based-results">location-based inline results</a> (the <code>bot_inline_geo</code> flag of the bot's <a href="/constructor/user">user constructor</a> will be set)</li> +<li><code>query</code> - What the user typed after the bot's username</li> +<li><code>offset</code> - If the user scrolls past the first <code>len(results)</code> results, and <code>next_offset</code> field is set, the inline query should be repeated with this offset.</li> +</ul> +</li> +</ul> +<h3><a class="anchor" href="#answering-to-an-inline-query" id="answering-to-an-inline-query" name="answering-to-an-inline-query"><i class="anchor-icon"></i></a>Answering to an inline query</h3> +<pre><code><a href='/constructor/inputBotInlineMessageMediaAuto'>inputBotInlineMessageMediaAuto</a>#3380c786 flags:<a href='/type/%23'>#</a> message:<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageText'>inputBotInlineMessageText</a>#3dcd7a87 flags:<a href='/type/%23'>#</a> no_webpage:flags.0?<a href='/constructor/true'>true</a> message:<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageMediaGeo'>inputBotInlineMessageMediaGeo</a>#96929a85 flags:<a href='/type/%23'>#</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> heading:flags.0?<a href='/type/int'>int</a> period:flags.1?<a href='/type/int'>int</a> proximity_notification_radius:flags.3?<a href='/type/int'>int</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageMediaVenue'>inputBotInlineMessageMediaVenue</a>#417bbf11 flags:<a href='/type/%23'>#</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> provider:<a href='/type/string'>string</a> venue_id:<a href='/type/string'>string</a> venue_type:<a href='/type/string'>string</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageMediaContact'>inputBotInlineMessageMediaContact</a>#a6edbffd flags:<a href='/type/%23'>#</a> phone_number:<a href='/type/string'>string</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> vcard:<a href='/type/string'>string</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageGame'>inputBotInlineMessageGame</a>#4b425864 flags:<a href='/type/%23'>#</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; + +<a href='/constructor/inputBotInlineResult'>inputBotInlineResult</a>#88bf9319 flags:<a href='/type/%23'>#</a> id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> title:flags.1?<a href='/type/string'>string</a> description:flags.2?<a href='/type/string'>string</a> url:flags.3?<a href='/type/string'>string</a> thumb:flags.4?<a href='/type/InputWebDocument'>InputWebDocument</a> content:flags.5?<a href='/type/InputWebDocument'>InputWebDocument</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>; +<a href='/constructor/inputBotInlineResultPhoto'>inputBotInlineResultPhoto</a>#a8d864a7 id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> photo:<a href='/type/InputPhoto'>InputPhoto</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>; +<a href='/constructor/inputBotInlineResultDocument'>inputBotInlineResultDocument</a>#fff8fdc4 flags:<a href='/type/%23'>#</a> id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> title:flags.1?<a href='/type/string'>string</a> description:flags.2?<a href='/type/string'>string</a> document:<a href='/type/InputDocument'>InputDocument</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>; +<a href='/constructor/inputBotInlineResultGame'>inputBotInlineResultGame</a>#4fa417f2 id:<a href='/type/string'>string</a> short_name:<a href='/type/string'>string</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>; + +<a href='/constructor/updateBotInlineQuery'>updateBotInlineQuery</a>#496f379c flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> query:<a href='/type/string'>string</a> geo:flags.0?<a href='/type/GeoPoint'>GeoPoint</a> peer_type:flags.1?<a href='/type/InlineQueryPeerType'>InlineQueryPeerType</a> offset:<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.setInlineBotResults'>messages.setInlineBotResults</a>#eb5ea206 flags:<a href='/type/%23'>#</a> gallery:flags.0?<a href='/constructor/true'>true</a> private:flags.1?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> results:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputBotInlineResult'>InputBotInlineResult</a>> cache_time:<a href='/type/int'>int</a> next_offset:flags.2?<a href='/type/string'>string</a> switch_pm:flags.3?<a href='/type/InlineBotSwitchPM'>InlineBotSwitchPM</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Bots can answer to incoming <a href="/constructor/updateBotInlineQuery">updateBotInlineQuery</a> updates using <a href="/method/messages.setInlineBotResults">messages.setInlineBotResults</a>.<br> +Just like its <a href="/bots/api#answerinlinequery">bot API counterpart</a>, the method can be used to send a set of inline results to the user; see the <a href="/method/messages.setInlineBotResults">constructor page for more info on the MTProto method parameters »</a>.</p> +<p>In general, the method accepts a vector of <a href="/type/InputBotInlineResult">InputBotInlineResult</a> constructors, that when <a href="#sending-the-inline-query-result">chosen</a>, generates a message with optionally attached media, and even inline buttons.</p> +<h3><a class="anchor" href="#sending-the-inline-query-result" id="sending-the-inline-query-result" name="sending-the-inline-query-result"><i class="anchor-icon"></i></a>Sending the inline query result</h3> +<pre><code><a href='/constructor/botInlineMessageMediaAuto'>botInlineMessageMediaAuto</a>#764cf810 flags:<a href='/type/%23'>#</a> message:<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; +<a href='/constructor/botInlineMessageText'>botInlineMessageText</a>#8c7f65e2 flags:<a href='/type/%23'>#</a> no_webpage:flags.0?<a href='/constructor/true'>true</a> message:<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; +<a href='/constructor/botInlineMessageMediaGeo'>botInlineMessageMediaGeo</a>#51846fd flags:<a href='/type/%23'>#</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> heading:flags.0?<a href='/type/int'>int</a> period:flags.1?<a href='/type/int'>int</a> proximity_notification_radius:flags.3?<a href='/type/int'>int</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; +<a href='/constructor/botInlineMessageMediaVenue'>botInlineMessageMediaVenue</a>#8a86659c flags:<a href='/type/%23'>#</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> provider:<a href='/type/string'>string</a> venue_id:<a href='/type/string'>string</a> venue_type:<a href='/type/string'>string</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; +<a href='/constructor/botInlineMessageMediaContact'>botInlineMessageMediaContact</a>#18d1cdc2 flags:<a href='/type/%23'>#</a> phone_number:<a href='/type/string'>string</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> vcard:<a href='/type/string'>string</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; + +<a href='/constructor/botInlineResult'>botInlineResult</a>#11965f3a flags:<a href='/type/%23'>#</a> id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> title:flags.1?<a href='/type/string'>string</a> description:flags.2?<a href='/type/string'>string</a> url:flags.3?<a href='/type/string'>string</a> thumb:flags.4?<a href='/type/WebDocument'>WebDocument</a> content:flags.5?<a href='/type/WebDocument'>WebDocument</a> send_message:<a href='/type/BotInlineMessage'>BotInlineMessage</a> = <a href='/type/BotInlineResult'>BotInlineResult</a>; +<a href='/constructor/botInlineMediaResult'>botInlineMediaResult</a>#17db940b flags:<a href='/type/%23'>#</a> id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/Photo'>Photo</a> document:flags.1?<a href='/type/Document'>Document</a> title:flags.2?<a href='/type/string'>string</a> description:flags.3?<a href='/type/string'>string</a> send_message:<a href='/type/BotInlineMessage'>BotInlineMessage</a> = <a href='/type/BotInlineResult'>BotInlineResult</a>; + +<a href='/constructor/messages.botResults'>messages.botResults</a>#947ca848 flags:<a href='/type/%23'>#</a> gallery:flags.0?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> next_offset:flags.1?<a href='/type/string'>string</a> switch_pm:flags.2?<a href='/type/InlineBotSwitchPM'>InlineBotSwitchPM</a> results:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInlineResult'>BotInlineResult</a>> cache_time:<a href='/type/int'>int</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/messages.BotResults'>messages.BotResults</a>; + +---functions--- + +<a href='/method/messages.sendInlineBotResult'>messages.sendInlineBotResult</a>#220815b0 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> hide_via:flags.11?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> random_id:<a href='/type/long'>long</a> query_id:<a href='/type/long'>long</a> id:<a href='/type/string'>string</a> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>The user client should display the <code>results</code> obtained <a href="#making-an-inline-query">during querying</a> in a list, making sure to handle eventual bot timeouts in the form of a <code>BOT_RESPONSE_TIMEOUT</code> RPC error, by simply not displaying anything.</p> +<p>If the user then chooses a specific <code>BotInlineResult</code>, the <a href="/method/messages.sendInlineBotResult">messages.sendInlineBotResult</a> method should be invoked, passing:</p> +<ul> +<li>The <code>query_id</code> from <code>messages.botResults</code></li> +<li>The <code>id</code> of the chosen result</li> +<li>The <code>peer</code> where to send the chosen result</li> +</ul> +<p>The resulting <a href="/constructor/message">message</a> will have the <code>via_bot_id</code> field set, to indicate that the result was generated by the bot that generated the inline result.<br> +Graphical clients should display the bot <code>@username</code> in the header of the message, allowing the user to click on it, automatically starting an inline query by inserting <code>@username</code> in the text bar.</p> +<h3><a class="anchor" href="#inline-feedback" id="inline-feedback" name="inline-feedback"><i class="anchor-icon"></i></a>Inline feedback</h3> +<pre><code><a href='/constructor/inputBotInlineMessageID'>inputBotInlineMessageID</a>#890c3d89 dc_id:<a href='/type/int'>int</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a>; + +<a href='/constructor/updateBotInlineSend'>updateBotInlineSend</a>#12f12a07 flags:<a href='/type/%23'>#</a> user_id:<a href='/type/long'>long</a> query:<a href='/type/string'>string</a> geo:flags.0?<a href='/type/GeoPoint'>GeoPoint</a> id:<a href='/type/string'>string</a> msg_id:flags.1?<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> = <a href='/type/Update'>Update</a>;</code></pre> +<p>If <a href="/bots/inline#collecting-feedback">feedback collection</a> is enabled, the bot may receive an <a href="/constructor/updateBotInlineSend">updateBotInlineSend</a> when the user <a href="#sending-the-inline-query-result">chooses and sends</a> an inline result. </p> +<p>Even if the <a href="/bots/inline#collecting-feedback">probability setting is set to 100%</a>, not all inline results may be reported due to caching (see the <code>cache_time</code> parameter in <a href="/api/bots/buttons#answering-a-callback-query">Answering a callback query</a>).<br> +<a href="/bots/inline#collecting-feedback">Feedback collection</a> can also create load issues for popular bots, so adjust the probability setting to a lower value in such cases.</p> +<p>Either way, feedback collection should only be used for statistical purposes rather than functional. </p> +<p>The <a href="/constructor/updateBotInlineSend">updateBotInlineSend</a> will contain: </p> +<ul> +<li><code>id</code> - The ID of the chosen result</li> +<li><code>msg_id</code> - The ID of the sent inline message</li> +<li><code>user_id</code> - The ID of the user that chose the result</li> +<li><code>query</code> - The query string that was used to obtain the result</li> +<li><code>geo</code> - For bots requiring <a href="/bots/inline#location-based-results">location-based inline results</a>, the user's location</li> +</ul> +<h3><a class="anchor" href="#editing-sent-inline-messages" id="editing-sent-inline-messages" name="editing-sent-inline-messages"><i class="anchor-icon"></i></a>Editing sent inline messages</h3> +<pre><code><a href='/constructor/updateInlineBotCallbackQuery'>updateInlineBotCallbackQuery</a>#691e9052 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> msg_id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>; + +<a href='/constructor/inputBotInlineMessageID'>inputBotInlineMessageID</a>#890c3d89 dc_id:<a href='/type/int'>int</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a>; + +---functions--- + +<a href='/method/messages.editInlineBotMessage'>messages.editInlineBotMessage</a>#83557dba flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> message:flags.11?<a href='/type/string'>string</a> media:flags.14?<a href='/type/InputMedia'>InputMedia</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Sent inline messages can be edited by the bot, for example in response to a <a href="/api/bots/buttons#callback-queries">button press callback query</a>. </p> +<p>Simply pass the <a href="/constructor/inputBotInlineMessageID">inputBotInlineMessageID</a> specified in the <a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a> to <a href="/method/messages.editInlineBotMessage">messages.editInlineBotMessage</a> along with the new message, making sure to send the query to the <a href="/api/datacenter">datacenter</a> specified in <code>inputBotInlineMessageID.dc_id</code>.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/channel.html b/data/core.telegram.org/api/channel.html new file mode 100644 index 0000000000..dc13d8d745 --- /dev/null +++ b/data/core.telegram.org/api/channel.html @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Channels</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to handle channels, supergroups, groups, and what's the difference between them."> + <meta property="og:title" content="Channels"> + <meta property="og:image" content="2831d0518f782d1977"> + <meta property="og:description" content="How to handle channels, supergroups, groups, and what's the difference between them."> + <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?215" 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/channel" >Channels</a></li></ul></div> + <h1 id="dev_page_title">Channels</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<h3><a class="anchor" href="#channels-chats-supergroups--gigagroups" id="channels-chats-supergroups--gigagroups" name="channels-chats-supergroups--gigagroups"><i class="anchor-icon"></i></a>Channels, chats, supergroups & gigagroups</h3> +<p><a href="https://telegram.org/tour/channels">Channels</a> are a tool for broadcasting your messages to large audiences. They can have an unlimited number of subscribers, they can be public with a permanent URL and each post in a channel has its own view counter.<br> +Technically, they are represented by <a href="/constructor/channel">channel</a> constructors. </p> +<p><a href="https://telegram.org/tour/groups">Supergroups</a> are a powerful tool for building communities and can support up to 200,000 members each.<br> +Technically, supergroups are actually channels: they are represented by <a href="/constructor/channel">channel</a> constructors, with the <code>megagroup</code> flag set to true. </p> +<p>Gigagroups are something inbetween a channel and a supergroup.<br> +An admin, <a href="/api/config#channel-suggestions">when prompted by the API using suggestions »</a>, can convert a megagroup into a gigagroup using <a href="/method/channels.convertToGigagroup">channels.convertToGigagroup</a> (one way only).<br> +After that, only admins will be able to write in the group (like when <a href="#rights"><code>send_messages</code> rights are disabled for all group participants by default</a>), but the participant limit is removed and the group can become much bigger than a supergroup (e.g. >200,000 currently).<br> +Also, one can't invite people into gigagroups and participants of voice chats in gigagroups are muted by default. </p> +<p>Channels and supergroup can be created using the <a href="/method/channels.createChannel">channels.createChannel</a> method, by setting the appropriate <code>broadcast</code> or <code>megagroup</code> flags.<br> +Supergroups can also be assigned a <code>geo_point</code> to become <a href="https://telegram.org/blog/contacts-local-groups">geochats</a>. </p> +<p>In previous versions of telegram, only normal groups (represented by <a href="/constructor/chat">chat</a> constructors) could be created using <a href="/method/messages.createChat">messages.createChat</a>: these groups have fewer features, and can only have 200 members at max.</p> +<h3><a class="anchor" href="#migration" id="migration" name="migration"><i class="anchor-icon"></i></a>Migration</h3> +<p>To upgrade a legacy group to a supergroup, <a href="/method/messages.migrateChat">messages.migrateChat</a> can be used. +The <code>chats</code> field of the result will have two objects: </p> +<ul> +<li>A <a href="/constructor/chat">chat</a> constructor with a <code>migrated_to</code> field, indicating the address of the new supergroup</li> +<li>The new <a href="/constructor/channel">channel</a> megagroup constructor</li> +</ul> +<p>When <a href="/method/channels.getFullChannel">getting full info</a> about the migrated channel, the <a href="/constructor/channelFull">channelFull</a> object will have <code>migrated_from_chat_id</code> and <code>migrated_from_max_id</code> fields indicating the original ID of the chat, and the message ID in the original chat at which the group was migrated.</p> +<p>All users of the chat will receive an <a href="/constructor/updateNewMessage">updateNewMessage</a> from the old chat with a <a href="/constructor/messageService">messageService</a> containing a <a href="/constructor/messageActionChatMigrateTo">messageActionChatMigrateTo</a> constructor.</p> +<p>All new messages have to be sent to the new supergroup.</p> +<p>When working with migrated groups clients need to handle loading of the message history (as well as search results et cetera) from both the legacy group and the new supergroup. This is done by merging the two messages lists (requested with different <a href="/type/Peer">Peer</a> values) client side.</p> +<h3><a class="anchor" href="#rights" id="rights" name="rights"><i class="anchor-icon"></i></a>Rights</h3> +<p>Channels, legacy groups and supergroups allow setting <a href="https://telegram.org/blog/permissions-groups-undo">granular permissions</a> both for admins and specific users; channels, supergroups and legacy groups also allow setting global granular permissions for users.</p> +<p>For more info on how to set and modify rights, see <a href="/api/rights">here »</a>.</p> +<h3><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a>Pinned messages</h3> +<p>Telegram allows pinning multiple messages on top in a chat, group, supergroup or channel. </p> +<p>See <a href="/api/pin">here »</a> for more info on pinning and unpinning messages. </p> +<h3><a class="anchor" href="#discussion" id="discussion" name="discussion"><i class="anchor-icon"></i></a>Discussion</h3> +<p>Groups can be associated to a channel as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts. </p> +<p>For more info on how to set a discussion group in channel, see <a href="/api/discussion">here »</a></p> +<h3><a class="anchor" href="#recent-actions" id="recent-actions" name="recent-actions"><i class="anchor-icon"></i></a>Recent actions</h3> +<p>Both supergroups and channels offer a so-called <a href="https://telegram.org/blog/admin-revolution">admin log</a>, a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more.</p> +<p>See <a href="/api/recent-actions">here »</a> for more info.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/config.html b/data/core.telegram.org/api/config.html new file mode 100644 index 0000000000..5e804b24ce --- /dev/null +++ b/data/core.telegram.org/api/config.html @@ -0,0 +1,422 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Client configuration</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods."> + <meta property="og:title" content="Client configuration"> + <meta property="og:image" content=""> + <meta property="og:description" content="The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods."> + <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?215" 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/config" >Client configuration</a></li></ul></div> + <h1 id="dev_page_title">Client configuration</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods. </p> +<h3><a class="anchor" href="#mtproto-configuration" id="mtproto-configuration" name="mtproto-configuration"><i class="anchor-icon"></i></a>MTProto configuration</h3> +<pre><code><a href='/constructor/config'>config</a>#330b4067 flags:<a href='/type/%23'>#</a> phonecalls_enabled:flags.1?<a href='/constructor/true'>true</a> default_p2p_contacts:flags.3?<a href='/constructor/true'>true</a> preload_featured_stickers:flags.4?<a href='/constructor/true'>true</a> ignore_phone_entities:flags.5?<a href='/constructor/true'>true</a> revoke_pm_inbox:flags.6?<a href='/constructor/true'>true</a> blocked_mode:flags.8?<a href='/constructor/true'>true</a> pfs_enabled:flags.13?<a href='/constructor/true'>true</a> date:<a href='/type/int'>int</a> expires:<a href='/type/int'>int</a> test_mode:<a href='/type/Bool'>Bool</a> this_dc:<a href='/type/int'>int</a> dc_options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DcOption'>DcOption</a>> dc_txt_domain_name:<a href='/type/string'>string</a> chat_size_max:<a href='/type/int'>int</a> megagroup_size_max:<a href='/type/int'>int</a> forwarded_count_max:<a href='/type/int'>int</a> online_update_period_ms:<a href='/type/int'>int</a> offline_blur_timeout_ms:<a href='/type/int'>int</a> offline_idle_timeout_ms:<a href='/type/int'>int</a> online_cloud_timeout_ms:<a href='/type/int'>int</a> notify_cloud_delay_ms:<a href='/type/int'>int</a> notify_default_delay_ms:<a href='/type/int'>int</a> push_chat_period_ms:<a href='/type/int'>int</a> push_chat_limit:<a href='/type/int'>int</a> saved_gifs_limit:<a href='/type/int'>int</a> edit_time_limit:<a href='/type/int'>int</a> revoke_time_limit:<a href='/type/int'>int</a> revoke_pm_time_limit:<a href='/type/int'>int</a> rating_e_decay:<a href='/type/int'>int</a> stickers_recent_limit:<a href='/type/int'>int</a> stickers_faved_limit:<a href='/type/int'>int</a> channels_read_media_period:<a href='/type/int'>int</a> tmp_sessions:flags.0?<a href='/type/int'>int</a> pinned_dialogs_count_max:<a href='/type/int'>int</a> pinned_infolder_count_max:<a href='/type/int'>int</a> call_receive_timeout_ms:<a href='/type/int'>int</a> call_ring_timeout_ms:<a href='/type/int'>int</a> call_connect_timeout_ms:<a href='/type/int'>int</a> call_packet_timeout_ms:<a href='/type/int'>int</a> me_url_prefix:<a href='/type/string'>string</a> autoupdate_url_prefix:flags.7?<a href='/type/string'>string</a> gif_search_username:flags.9?<a href='/type/string'>string</a> venue_search_username:flags.10?<a href='/type/string'>string</a> img_search_username:flags.11?<a href='/type/string'>string</a> static_maps_provider:flags.12?<a href='/type/string'>string</a> caption_length_max:<a href='/type/int'>int</a> message_length_max:<a href='/type/int'>int</a> webfile_dc_id:<a href='/type/int'>int</a> suggested_lang_code:flags.2?<a href='/type/string'>string</a> lang_pack_version:flags.2?<a href='/type/int'>int</a> base_lang_pack_version:flags.2?<a href='/type/int'>int</a> = <a href='/type/Config'>Config</a>; +<a href='/constructor/nearestDc'>nearestDc</a>#8e1a1775 country:<a href='/type/string'>string</a> this_dc:<a href='/type/int'>int</a> nearest_dc:<a href='/type/int'>int</a> = <a href='/type/NearestDc'>NearestDc</a>; + +---functions--- + +<a href='/method/help.getConfig'>help.getConfig</a>#c4f9186b = <a href='/type/Config'>Config</a>; +<a href='/method/help.getNearestDc'>help.getNearestDc</a>#1fb33026 = <a href='/type/NearestDc'>NearestDc</a>;</code></pre> +<p>The huge <a href="/constructor/config">config</a> constructor contains lots of useful information, from chat and message size limitations, to privacy settings, online status refresh interval and timeout, VoIP configuration, default inline bot usernames for GIF, image and venue lookup, and lots of other global and user-specific information, check out the <a href="/constructor/config">constructor page</a> for more information.</p> +<h3><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a>Client configuration</h3> +<pre><code><a href='/constructor/jsonObjectValue'>jsonObjectValue</a>#c0de1bd9 key:<a href='/type/string'>string</a> value:<a href='/type/JSONValue'>JSONValue</a> = <a href='/type/JSONObjectValue'>JSONObjectValue</a>; + +<a href='/constructor/jsonNull'>jsonNull</a>#3f6d7b68 = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonBool'>jsonBool</a>#c7345e6a value:<a href='/type/Bool'>Bool</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonNumber'>jsonNumber</a>#2be0dfa4 value:<a href='/type/double'>double</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonString'>jsonString</a>#b71e767a value:<a href='/type/string'>string</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonArray'>jsonArray</a>#f7444763 value:<a href='/type/Vector%20t'>Vector</a><<a href='/type/JSONValue'>JSONValue</a>> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonObject'>jsonObject</a>#99c1d49d value:<a href='/type/Vector%20t'>Vector</a><<a href='/type/JSONObjectValue'>JSONObjectValue</a>> = <a href='/type/JSONValue'>JSONValue</a>; + +---functions--- + +<a href='/method/help.getAppConfig'>help.getAppConfig</a>#98914110 = <a href='/type/JSONValue'>JSONValue</a>;</code></pre> +<p>The <a href="/method/help.getAppConfig">help.getAppConfig</a> method returns a JSON object containing rapidly evolving, client-specific configuration parameters.<br> +While <a href="/method/help.getConfig">help.getConfig</a> returns MTProto-specific configuration with information about server-side limitations and other MTProto-related information, <a href="/method/help.getAppConfig">help.getAppConfig</a> returns configuration parameters useful for graphical Telegram clients.</p> +<p>Typical fields included in the resulting JSON object are: </p> +<ul> +<li><code>emojies_animated_zoom</code> - <a href="/api/animated-emojis">Animated emojis</a> and <a href="/api/dice">animated dice</a> should be scaled by this factor before being shown to the user (float)</li> +<li><code>keep_alive_service</code> - Whether app clients should start a keepalive service to keep the app running and fetch updates even when the app is closed (boolean)</li> +<li><code>background_connection</code> - Whether app clients should start a background TCP connection for MTProto update fetching (boolean)</li> +<li><code>emojies_send_dice</code> - A list of supported <a href="/api/dice">animated dice</a> stickers (array of strings).</li> +<li><code>emojies_send_dice_success</code> - For <a href="/api/dice">animated dice</a> emojis other than the basic <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />, indicates the winning dice value and the final frame of the animated sticker, at which to show the fireworks <img class="emoji" src="//telegram.org/img/emoji/40/F09F8E86.png" width="20" height="20" alt="🎆" /> (object with emoji keys and object values, containing <code>value</code> and <code>frame_start</code> float values)</li> +<li><code>emojies_sounds</code> - A map of soundbites to be played when the user clicks on the specified <a href="/api/animated-emojis">animated emoji</a>; the <a href="/api/file_reference">file reference field</a> should be base64-decoded before <a href="/api/files">downloading the file</a> (map of <a href="/api/files">file IDs</a>, with emoji string keys)</li> +<li><code>gif_search_branding</code> - Specifies the name of the service providing GIF search through <a href="#mtproto-configuration">gif_search_username</a> (string)</li> +<li><code>gif_search_emojies</code> - Specifies a list of emojies that should be suggested as search term in a bar above the GIF search box (array of string emojis)</li> +<li><code>stickers_emoji_suggest_only_api</code> - Specifies that the app should not display local sticker suggestions for emojis at all and just use the result of <a href="/method/messages.getStickers">messages.getStickers</a> (bool)</li> +<li><code>stickers_emoji_cache_time</code> - Specifies the validity period of the local cache of <a href="/method/messages.getStickers">messages.getStickers</a>, also relevant when generating the <a href="/api/offsets#hash-generation">pagination hash</a> when invoking the method. (int)</li> +<li><code>qr_login_camera</code> - Whether the Settings->Devices menu should show an option to scan a <a href="/api/qr-login">QR login code</a> (boolean)</li> +<li><code>qr_login_code</code> - Whether the login screen should show a <a href="/api/qr-login">QR code login option</a>, possibly as default login method (string, "disabled", "primary" or "secondary")</li> +<li><code>dialog_filters_enabled</code> - Whether clients should show an option for managing <a href="/api/folders">dialog filters AKA folders</a> (boolean)</li> +<li><code>dialog_filters_tooltip</code> - Whether clients should actively show a tooltip, inviting the user to configure <a href="/api/folders">dialog filters AKA folders</a>; typically this happens when the chat list is long enough to start getting cluttered. (boolean)</li> +<li><code>autoarchive_setting_available</code> - Whether clients <em>can</em> invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a> with <a href="/constructor/globalPrivacySettings"><code>globalPrivacySettings.archive_and_mute_new_noncontact_peers = boolTrue</code></a>, to automatically archive and mute new incoming chats from non-contacts. (boolean)</li> +<li><code>pending_suggestions</code> - Contains a list of suggestions that should be actively shown as a tooltip to the user. (Array of strings, possible values shown <a href="#suggestions">in the suggestions section »</a>. </li> +<li><code>url_auth_domains</code> - A list of domains that support automatic login with manual user confirmation, <a href="/api/url-authorization#link-url-authorization">click here for more info on URL authorization »</a>. (array of strings)</li> +<li><code>autologin_domains</code> - A list of Telegram domains that support automatic login with no user confirmation, <a href="/api/url-authorization#link-url-authorization">click here for more info on URL authorization »</a>. (array of strings)</li> +<li><code>autologin_token</code> - Autologin token, <a href="/api/url-authorization#link-url-authorization">click here for more info on URL authorization »</a>. (string)</li> +<li><code>round_video_encoding</code> - Contains a set of recommended codec parameters for round videos. </li> +<li><code>chat_read_mark_size_threshold</code> - Per-user read receipts, fetchable using <a href="/method/messages.getMessageReadParticipants">messages.getMessageReadParticipants</a> will be available in groups with less than <code>chat_read_mark_size_threshold</code> participants. (int)</li> +<li><code>chat_read_mark_expire_period</code> - To protect user privacy, read receipts are only stored for <code>chat_read_mark_expire_period</code> seconds after the message was sent. (int)</li> +</ul> +<p>Example value: </p> +<pre><code class="language-json">{ + "test": 1, + "emojies_animated_zoom": 0.625, + "emojies_send_dice": [ + "\ud83c\udfb2", + "\ud83c\udfaf", + "\ud83c\udfc0", + "\u26bd", + "\u26bd\ufe0f", + "\ud83c\udfb0", + "\ud83c\udfb3" + ], + "emojies_send_dice_success": { + "\ud83c\udfaf": { + "value": 6, + "frame_start": 62 + }, + "\ud83c\udfc0": { + "value": 5, + "frame_start": 110 + }, + "\u26bd": { + "value": 5, + "frame_start": 110 + }, + "\u26bd\ufe0f": { + "value": 5, + "frame_start": 110 + }, + "\ud83c\udfb0": { + "value": 64, + "frame_start": 110 + }, + "\ud83c\udfb3": { + "value": 6, + "frame_start": 110 + } + }, + "emojies_sounds": { + "\ud83c\udf83": { + "id": "4956223179606458539", + "access_hash": "-2107001400913062971", + "file_reference_base64": "AGFhvoKbftK5O9K9RpgN1ZtgSzWy" + }, + "\u26b0": { + "id": "4956223179606458540", + "access_hash": "-1498869544183595185", + "file_reference_base64": "AGFhvoJIm8Uz0qSMIdm3AsKlK7wJ" + }, + "\ud83e\udddf\u200d\u2642": { + "id": "4960929110848176331", + "access_hash": "3986395821757915468", + "file_reference_base64": "AGFhvoLtXSSIclmvfg6ePz3KsHQF" + }, + "\ud83e\udddf": { + "id": "4960929110848176332", + "access_hash": "-8929417974289765626", + "file_reference_base64": "AGFhvoImaz5Umt4GvMUD5nocIu0W" + }, + "\ud83e\udddf\u200d\u2640": { + "id": "4960929110848176333", + "access_hash": "9161696144162881753", + "file_reference_base64": "AGFhvoIm1QZsb48xlpRfh4Mq7EMG" + }, + "\ud83c\udf51": { + "id": "4963180910661861548", + "access_hash": "-7431729439735063448", + "file_reference_base64": "AGFhvoKLrwl_WKr5LR0Jjs7o3RyT" + }, + "\ud83c\udf8a": { + "id": "5094064004578410732", + "access_hash": "8518192996098758509", + "file_reference_base64": "AGFhvoKMNffRV2J3vKED0O6d8e42" + }, + "\ud83c\udf84": { + "id": "5094064004578410733", + "access_hash": "-4142643820629256996", + "file_reference_base64": "AGFhvoJ1ulPBbXEURlTZWwJFx6xZ" + }, + "\ud83e\uddbe": { + "id": "5094064004578410734", + "access_hash": "-8934384022571962340", + "file_reference_base64": "AGFhvoL4zdMRmYv9z3L8KPaX4JQL" + } + }, + "gif_search_branding": "tenor", + "gif_search_emojies": [ + "\ud83d\udc4d", + "\ud83d\ude18", + "\ud83d\ude0d", + "\ud83d\ude21", + "\ud83e\udd73", + "\ud83d\ude02", + "\ud83d\ude2e", + "\ud83d\ude44", + "\ud83d\ude0e", + "\ud83d\udc4e" + ], + "stickers_emoji_suggest_only_api": false, + "stickers_emoji_cache_time": 86400, + "qr_login_camera": false, + "qr_login_code": "disabled", + "dialog_filters_enabled": true, + "dialog_filters_tooltip": false, + "autoarchive_setting_available": false, + "pending_suggestions": [ + "AUTOARCHIVE_POPULAR", + "VALIDATE_PASSWORD", + "VALIDATE_PHONE_NUMBER", + "NEWCOMER_TICKS" + ], + "autologin_token": "string", + "autologin_domains": [ + "instantview.telegram.org", + "translations.telegram.org", + "contest.dev", + "contest.com", + "bugs.telegram.org", + "suggestions.telegram.org", + "themes.telegram.org" + ], + "url_auth_domains": [ + "somedomain.telegram.org" + ], + "round_video_encoding": { + "diameter": 384, + "video_bitrate": 1000, + "audio_bitrate": 64, + "max_size": 12582912 + }, + "chat_read_mark_size_threshold": 50, + "chat_read_mark_expire_period": 604800 +}</code></pre> +<h3><a class="anchor" href="#suggestions" id="suggestions" name="suggestions"><i class="anchor-icon"></i></a>Suggestions</h3> +<p>The API can return a set of useful suggestions for users of graphical clients. </p> +<h4><a class="anchor" href="#basic-suggestions" id="basic-suggestions" name="basic-suggestions"><i class="anchor-icon"></i></a>Basic suggestions</h4> +<pre><code><a href='/constructor/jsonObjectValue'>jsonObjectValue</a>#c0de1bd9 key:<a href='/type/string'>string</a> value:<a href='/type/JSONValue'>JSONValue</a> = <a href='/type/JSONObjectValue'>JSONObjectValue</a>; + +<a href='/constructor/jsonNull'>jsonNull</a>#3f6d7b68 = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonBool'>jsonBool</a>#c7345e6a value:<a href='/type/Bool'>Bool</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonNumber'>jsonNumber</a>#2be0dfa4 value:<a href='/type/double'>double</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonString'>jsonString</a>#b71e767a value:<a href='/type/string'>string</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonArray'>jsonArray</a>#f7444763 value:<a href='/type/Vector%20t'>Vector</a><<a href='/type/JSONValue'>JSONValue</a>> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonObject'>jsonObject</a>#99c1d49d value:<a href='/type/Vector%20t'>Vector</a><<a href='/type/JSONObjectValue'>JSONObjectValue</a>> = <a href='/type/JSONValue'>JSONValue</a>; + +---functions--- + +<a href='/method/help.getAppConfig'>help.getAppConfig</a>#98914110 = <a href='/type/JSONValue'>JSONValue</a>;</code></pre> +<p>The <a href="/method/help.getAppConfig">help.getAppConfig</a> method returns a JSON object containing rapidly evolving, client-specific configuration parameters.<br> +A full list of these parameters can be seen in the <a href="#client-configuration">Client Configuration section »</a>, but we're mostly interested in the <code>pending_suggestions</code> and <code>autoarchive_setting_available</code> fields of the returned JSON object: </p> +<ul> +<li><code>autoarchive_setting_available</code> - Whether clients <em>can</em> invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a> with <a href="/constructor/globalPrivacySettings"><code>globalPrivacySettings.archive_and_mute_new_noncontact_peers = boolTrue</code></a>, to automatically archive and mute new incoming chats from non-contacts. (boolean)</li> +<li><code>pending_suggestions</code> - Contains a list of suggestions that should be actively shown as a tooltip to the user. Array of strings, possible values shown below:<ul> +<li><code>"AUTOARCHIVE_POPULAR"</code> - Users <em>should</em> invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a> with <a href="/constructor/globalPrivacySettings"><code>globalPrivacySettings.archive_and_mute_new_noncontact_peers = boolTrue</code></a>, to automatically archive and mute new incoming chats from non-contacts.</li> +<li><code>"VALIDATE_PASSWORD"</code> - Users should make sure they still remember their <a href="/api/srp">2-step verification password</a>.</li> +<li><code>"VALIDATE_PHONE_NUMBER"</code> - Users should check whether their <a href="/api/auth">authorization phone number</a> is correct and change the phone number if it is inaccessible.</li> +<li><code>"NEWCOMER_TICKS"</code> - Show the user a hint about the meaning of one and two ticks on sent messages.</li> +</ul> +</li> +</ul> +<h4><a class="anchor" href="#channel-suggestions" id="channel-suggestions" name="channel-suggestions"><i class="anchor-icon"></i></a>Channel suggestions</h4> +<pre><code><a href='/constructor/messages.chatFull'>messages.chatFull</a>#e5d7d19c full_chat:<a href='/type/ChatFull'>ChatFull</a> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/messages.ChatFull'>messages.ChatFull</a>; + +<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; + +---functions--- + +<a href='/method/channels.getFullChannel'>channels.getFullChannel</a>#8736a09 channel:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/messages.ChatFull'>messages.ChatFull</a>;</code></pre> +<p>Some <a href="/api/channel">channel/supergroup</a>-related suggestions can also be contained in the <code>pending_suggestions</code> field of the <a href="/constructor/channelFull">channelFull</a> constructor, returned by <a href="/method/channels.getFullChannel">channels.getFullChannel</a>.<br> +Here's a list of possible suggestions: </p> +<ul> +<li><code>CONVERT_GIGAGROUP</code> - The <a href="/api/channel">supergroup</a> has many participants: the admin should call <a href="/method/channels.convertToGigagroup">channels.convertToGigagroup</a> to convert it to a gigagroup.</li> +</ul> +<h4><a class="anchor" href="#dismissing-suggestions" id="dismissing-suggestions" name="dismissing-suggestions"><i class="anchor-icon"></i></a>Dismissing suggestions</h4> +<pre><code><a href='/constructor/boolFalse'>boolFalse</a>#bc799737 = <a href='/type/Bool'>Bool</a>; +<a href='/constructor/boolTrue'>boolTrue</a>#997275b5 = <a href='/type/Bool'>Bool</a>; + +---functions--- + +<a href='/method/help.dismissSuggestion'>help.dismissSuggestion</a>#f50dbaa1 peer:<a href='/type/InputPeer'>InputPeer</a> suggestion:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p><a href="/method/help.dismissSuggestion">help.dismissSuggestion</a> can be used to dismiss a suggestion.<br> +Pass <a href="/constructor/inputPeerEmpty">inputPeerEmpty</a> to <code>peer</code> for <a href="#basic-suggestions">basic suggestions</a> and the <a href="/api/channel">channel/supergroup</a>'s peer for <a href="#channel-suggestions">channel suggestions</a>.</p> +<h3><a class="anchor" href="#app-specific-configuration" id="app-specific-configuration" name="app-specific-configuration"><i class="anchor-icon"></i></a>App-specific configuration</h3> +<pre><code><a href='/constructor/help.appUpdate'>help.appUpdate</a>#ccbbce30 flags:<a href='/type/%23'>#</a> can_not_skip:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> version:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> entities:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> document:flags.1?<a href='/type/Document'>Document</a> url:flags.2?<a href='/type/string'>string</a> sticker:flags.3?<a href='/type/Document'>Document</a> = <a href='/type/help.AppUpdate'>help.AppUpdate</a>; +<a href='/constructor/help.noAppUpdate'>help.noAppUpdate</a>#c45a6536 = <a href='/type/help.AppUpdate'>help.AppUpdate</a>; + +<a href='/constructor/updates'>updates</a>#74ae4240 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateServiceNotification'>updateServiceNotification</a>#ebe46819 flags:<a href='/type/%23'>#</a> popup:flags.0?<a href='/constructor/true'>true</a> inbox_date:flags.1?<a href='/type/int'>int</a> type:<a href='/type/string'>string</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> entities:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/Update'>Update</a>; + +<a href='/constructor/help.inviteText'>help.inviteText</a>#18cb9f78 message:<a href='/type/string'>string</a> = <a href='/type/help.InviteText'>help.InviteText</a>; + +---functions--- + +<a href='/method/help.getAppUpdate'>help.getAppUpdate</a>#522d5a7d source:<a href='/type/string'>string</a> = <a href='/type/help.AppUpdate'>help.AppUpdate</a>; +<a href='/method/help.getAppChangelog'>help.getAppChangelog</a>#9010ef6f prev_app_version:<a href='/type/string'>string</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/help.getInviteText'>help.getInviteText</a>#4d392343 = <a href='/type/help.InviteText'>help.InviteText</a>;</code></pre> +<ul> +<li><a href="/method/help.getAppUpdate">help.getAppUpdate</a> - Get info about an application update, can contain the updated application binary in the attached document</li> +<li><a href="/method/help.getAppChangelog">help.getAppChangelog</a> - Get a list of service messages with app-specific changelogs</li> +<li><a href="/method/help.getInviteText">help.getInviteText</a> - Returns a localized invitation message that can be sent via SMS to contacts that haven't signed up to Telegram yet</li> +</ul> +<h3><a class="anchor" href="#terms-of-service" id="terms-of-service" name="terms-of-service"><i class="anchor-icon"></i></a>Terms of service</h3> +<pre><code><a href='/constructor/help.termsOfServiceUpdateEmpty'>help.termsOfServiceUpdateEmpty</a>#e3309f7f expires:<a href='/type/int'>int</a> = <a href='/type/help.TermsOfServiceUpdate'>help.TermsOfServiceUpdate</a>; +<a href='/constructor/help.termsOfServiceUpdate'>help.termsOfServiceUpdate</a>#28ecf961 expires:<a href='/type/int'>int</a> terms_of_service:<a href='/type/help.TermsOfService'>help.TermsOfService</a> = <a href='/type/help.TermsOfServiceUpdate'>help.TermsOfServiceUpdate</a>; + +<a href='/constructor/help.termsOfService'>help.termsOfService</a>#780a0310 flags:<a href='/type/%23'>#</a> popup:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/DataJSON'>DataJSON</a> text:<a href='/type/string'>string</a> entities:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> min_age_confirm:flags.1?<a href='/type/int'>int</a> = <a href='/type/help.TermsOfService'>help.TermsOfService</a>; + +<a href='/constructor/auth.authorizationSignUpRequired'>auth.authorizationSignUpRequired</a>#44747e9a flags:<a href='/type/%23'>#</a> terms_of_service:flags.0?<a href='/type/help.TermsOfService'>help.TermsOfService</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>; + +---functions--- + +<a href='/method/help.getTermsOfServiceUpdate'>help.getTermsOfServiceUpdate</a>#2ca51fd1 = <a href='/type/help.TermsOfServiceUpdate'>help.TermsOfServiceUpdate</a>; +<a href='/method/help.acceptTermsOfService'>help.acceptTermsOfService</a>#ee72f79a id:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/Bool'>Bool</a>; + +<a href='/method/auth.signIn'>auth.signIn</a>#bcd51581 phone_number:<a href='/type/string'>string</a> phone_code_hash:<a href='/type/string'>string</a> phone_code:<a href='/type/string'>string</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>; + +<a href='/method/account.deleteAccount'>account.deleteAccount</a>#418d4e0b reason:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>These methods can be used for managing consent to Telegram's <a href="https://telegram.org/tos">Terms Of Service</a>. </p> +<p>Typically, before a user <a href="/api/auth#sign-insign-up">signs up</a> by invoking <a href="/method/auth.signUp">auth.signUp</a>, apps should show a pop-up (if the <code>popup</code> flag of the <a href="/constructor/help.termsOfService">help.termsOfService</a> method is set), asking the user to accept Telegram's terms of service; in case of denial, the user is to be returned to the initial page of the login flow. </p> +<p>When signing up for the first time, the <a href="/constructor/help.termsOfService">help.termsOfService</a> is to be obtained from the <a href="/constructor/auth.authorizationSignUpRequired">auth.authorizationSignUpRequired</a> constructor returned by the <a href="/method/auth.signIn">auth.signIn</a>. </p> +<p>After signing up, or when logging in as an existing user, apps are supposed to call <a href="/method/help.getTermsOfServiceUpdate">help.getTermsOfServiceUpdate</a> to check for any updates to the Terms of Service; this call should be repeated after <code>expires</code> seconds have elapsed.<br> +If an update to the Terms Of Service is available, clients are supposed to show a consent popup; if accepted, clients should call <a href="/method/help.acceptTermsOfService">help.acceptTermsOfService</a>, providing the <a href="/constructor/help.termsOfService">termsOfService <code>id</code> JSON object</a>; in case of denial, clients are to delete the account using <a href="/method/account.deleteAccount">account.deleteAccount</a>, providing <code>Decline ToS update</code> as deletion <code>reason</code>. </p> +<p>Example implementation: <a href="https://github.com/DrKLO/Telegram/blob/dbf81a34affcd1c24d78e1403347ea8b3a186154/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java#L3510">android (signup)</a>, <a href="https://github.com/DrKLO/Telegram/blob/ed9e38da5b3b6ca80a7cb719a000d310d07497b0/TMessagesProj/src/main/java/org/telegram/ui/Components/TermsOfServiceView.java">android (after login)</a></p> +<h3><a class="anchor" href="#telegram-support-info" id="telegram-support-info" name="telegram-support-info"><i class="anchor-icon"></i></a>Telegram support info</h3> +<pre><code><a href='/constructor/user'>user</a>#3ff6ecb0 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> fake:flags.26?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> = <a href='/type/User'>User</a>; + +<a href='/constructor/help.support'>help.support</a>#17c6b5f6 phone_number:<a href='/type/string'>string</a> user:<a href='/type/User'>User</a> = <a href='/type/help.Support'>help.Support</a>; +<a href='/constructor/help.supportName'>help.supportName</a>#8c05f1c9 name:<a href='/type/string'>string</a> = <a href='/type/help.SupportName'>help.SupportName</a>; + +---functions--- + +<a href='/method/help.getSupport'>help.getSupport</a>#9cdf08cd = <a href='/type/help.Support'>help.Support</a>; +<a href='/method/help.getSupportName'>help.getSupportName</a>#d360e72c = <a href='/type/help.SupportName'>help.SupportName</a>;</code></pre> +<p>These methods can be used for fetching info about Telegram's support user, that users can use to get support and ask questions about the app. </p> +<ul> +<li><a href="/method/help.getSupport">help.getSupport</a> - Will return the <a href="/constructor/user">user</a> object that can be used for contacting support.</li> +<li><a href="/method/help.getSupportName">help.getSupportName</a> - Will return a localized name for the support chat.</li> +</ul> +<h3><a class="anchor" href="#country-information-and-login-phone-patterns" id="country-information-and-login-phone-patterns" name="country-information-and-login-phone-patterns"><i class="anchor-icon"></i></a>Country information and login phone patterns</h3> +<pre><code><a href='/constructor/help.countryCode'>help.countryCode</a>#4203c5ef flags:<a href='/type/%23'>#</a> country_code:<a href='/type/string'>string</a> prefixes:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> patterns:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> = <a href='/type/help.CountryCode'>help.CountryCode</a>; + +<a href='/constructor/help.country'>help.country</a>#c3878e23 flags:<a href='/type/%23'>#</a> hidden:flags.0?<a href='/constructor/true'>true</a> iso2:<a href='/type/string'>string</a> default_name:<a href='/type/string'>string</a> name:flags.1?<a href='/type/string'>string</a> country_codes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/help.CountryCode'>help.CountryCode</a>> = <a href='/type/help.Country'>help.Country</a>; + +<a href='/constructor/help.countriesListNotModified'>help.countriesListNotModified</a>#93cc1f32 = <a href='/type/help.CountriesList'>help.CountriesList</a>; +<a href='/constructor/help.countriesList'>help.countriesList</a>#87d0759e countries:<a href='/type/Vector%20t'>Vector</a><<a href='/type/help.Country'>help.Country</a>> hash:<a href='/type/int'>int</a> = <a href='/type/help.CountriesList'>help.CountriesList</a>; + +---functions--- +<a href='/method/help.getCountriesList'>help.getCountriesList</a>#735787a8 lang_code:<a href='/type/string'>string</a> hash:<a href='/type/int'>int</a> = <a href='/type/help.CountriesList'>help.CountriesList</a>;</code></pre> +<p><a href="/method/help.getCountriesList">help.getCountriesList</a> can be used to fetch a list of localized names for all available countries and phone code patterns for logging in. </p> +<p>The phone code pattern should be used when showing the <a href="/api/auth">login</a> screen, or when changing phone number: for example, a pattern value of <code>XXX XXX XXX</code> with <code>country_code</code> <code>+39</code> indicates that the phone field for login should accept a spaced pattern like <code>+39 123 456 789</code>.<br> +Also, the beginning of the national part of the phone number (<code>123 456 789</code>) should match one of the <code>prefixes</code>, if any were returned. </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/datacenter.html b/data/core.telegram.org/api/datacenter.html new file mode 100644 index 0000000000..f660f4af74 --- /dev/null +++ b/data/core.telegram.org/api/datacenter.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Working with Different Data Centers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to connect to the closest DC access point for faster interaction with the API, and things to watch out for when developing a client."> + <meta property="og:title" content="Working with Different Data Centers"> + <meta property="og:image" content="5bb32ac46255f88a6c"> + <meta property="og:description" content="How to connect to the closest DC access point for faster interaction with the API, and things to watch out for when developing a client."> + <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?215" 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/datacenter" >Working with Different Data Centers</a></li></ul></div> + <h1 id="dev_page_title">Working with Different Data Centers</h1> + + <div id="dev_page_content"><p>The servers are divided into several data centers (hereinafter “DCs”) in different parts of the world. +A complete list of proxy access points for these DCs may be obtained using <a href="/method/help.getConfig">help.getConfig</a>:</p> +<pre><code><a href='/constructor/dcOption'>dcOption</a>#18b7a10d flags:<a href='/type/%23'>#</a> ipv6:flags.0?<a href='/constructor/true'>true</a> media_only:flags.1?<a href='/constructor/true'>true</a> tcpo_only:flags.2?<a href='/constructor/true'>true</a> cdn:flags.3?<a href='/constructor/true'>true</a> static:flags.4?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> ip_address:<a href='/type/string'>string</a> port:<a href='/type/int'>int</a> secret:flags.10?<a href='/type/bytes'>bytes</a> = <a href='/type/DcOption'>DcOption</a>; +<a href='/constructor/config'>config</a>#330b4067 flags:<a href='/type/%23'>#</a> phonecalls_enabled:flags.1?<a href='/constructor/true'>true</a> default_p2p_contacts:flags.3?<a href='/constructor/true'>true</a> preload_featured_stickers:flags.4?<a href='/constructor/true'>true</a> ignore_phone_entities:flags.5?<a href='/constructor/true'>true</a> revoke_pm_inbox:flags.6?<a href='/constructor/true'>true</a> blocked_mode:flags.8?<a href='/constructor/true'>true</a> pfs_enabled:flags.13?<a href='/constructor/true'>true</a> date:<a href='/type/int'>int</a> expires:<a href='/type/int'>int</a> test_mode:<a href='/type/Bool'>Bool</a> this_dc:<a href='/type/int'>int</a> dc_options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DcOption'>DcOption</a>> dc_txt_domain_name:<a href='/type/string'>string</a> chat_size_max:<a href='/type/int'>int</a> megagroup_size_max:<a href='/type/int'>int</a> forwarded_count_max:<a href='/type/int'>int</a> online_update_period_ms:<a href='/type/int'>int</a> offline_blur_timeout_ms:<a href='/type/int'>int</a> offline_idle_timeout_ms:<a href='/type/int'>int</a> online_cloud_timeout_ms:<a href='/type/int'>int</a> notify_cloud_delay_ms:<a href='/type/int'>int</a> notify_default_delay_ms:<a href='/type/int'>int</a> push_chat_period_ms:<a href='/type/int'>int</a> push_chat_limit:<a href='/type/int'>int</a> saved_gifs_limit:<a href='/type/int'>int</a> edit_time_limit:<a href='/type/int'>int</a> revoke_time_limit:<a href='/type/int'>int</a> revoke_pm_time_limit:<a href='/type/int'>int</a> rating_e_decay:<a href='/type/int'>int</a> stickers_recent_limit:<a href='/type/int'>int</a> stickers_faved_limit:<a href='/type/int'>int</a> channels_read_media_period:<a href='/type/int'>int</a> tmp_sessions:flags.0?<a href='/type/int'>int</a> pinned_dialogs_count_max:<a href='/type/int'>int</a> pinned_infolder_count_max:<a href='/type/int'>int</a> call_receive_timeout_ms:<a href='/type/int'>int</a> call_ring_timeout_ms:<a href='/type/int'>int</a> call_connect_timeout_ms:<a href='/type/int'>int</a> call_packet_timeout_ms:<a href='/type/int'>int</a> me_url_prefix:<a href='/type/string'>string</a> autoupdate_url_prefix:flags.7?<a href='/type/string'>string</a> gif_search_username:flags.9?<a href='/type/string'>string</a> venue_search_username:flags.10?<a href='/type/string'>string</a> img_search_username:flags.11?<a href='/type/string'>string</a> static_maps_provider:flags.12?<a href='/type/string'>string</a> caption_length_max:<a href='/type/int'>int</a> message_length_max:<a href='/type/int'>int</a> webfile_dc_id:<a href='/type/int'>int</a> suggested_lang_code:flags.2?<a href='/type/string'>string</a> lang_pack_version:flags.2?<a href='/type/int'>int</a> base_lang_pack_version:flags.2?<a href='/type/int'>int</a> = <a href='/type/Config'>Config</a>; +---functions--- +<a href='/method/help.getConfig'>help.getConfig</a>#c4f9186b = <a href='/type/Config'>Config</a>;</code></pre> +<p>In this context, <strong>this_dc</strong> is the number of the current DC, <strong>dc_options</strong> is a list of all DCs available at the moment, each of which has an <strong>id</strong>, <strong>ip</strong>, and <strong>port</strong> for establishing a connection. Please note that <strong>ip</strong> and <strong>port</strong> may change frequently, based on proxy server load and the user's current location.<br> +Typically, each DC has at least one IPv4 and one IPv6 endpoint available. </p> +<p>To optimize client communication with the API, each client must use the connection to the closest access point for its main queries (sending messages, getting contacts, etc.). Therefore, knowing how to select a DC is required before communicating with the API.</p> +<h3><a class="anchor" href="#registrationauthorization" id="registrationauthorization" name="registrationauthorization"><i class="anchor-icon"></i></a>Registration/Authorization</h3> +<p>The <a href="/method/auth.sendCode">auth.sendCode</a> method is the basic entry point when registering a new user or authorizing an existing user. 95% of all redirection cases to a different DC will occure when invoking this method.</p> +<p>The client does not yet know which DC it will be associated with; therefore, it establishes an encrypted connection to a random address and sends its query to that address. +Having received a <strong>phone_number</strong> from a client, we can find out whether or not it is registered in the system. If it is, then, if necessary, instead of sending a text message, we request that it establish a connection with a different DC first (PHONE_MIGRATE_X error). +If we do not yet have a user with this number, we examine its IP-address. We can use it to identify the closest DC. Again, if necessary, we redirect the user to a different DC (NETWORK_MIGRATE_X error).</p> +<h4><a class="anchor" href="#testing-redirects" id="testing-redirects" name="testing-redirects"><i class="anchor-icon"></i></a>Testing Redirects</h4> +<p>There are reserved phone number prefixes to test the correctness of the application’s handling of redirects between DCs. Read more in <a href="https://core.telegram.org/api/auth#test-phone-numbers">User Authorization</a> article.</p> +<h3><a class="anchor" href="#file-access" id="file-access" name="file-access"><i class="anchor-icon"></i></a>File Access</h3> +<p>A file saved by a user with <a href="/method/upload.saveFilePart">upload.saveFilePart</a> will be available for direct download only from the DC where the query was executed. That is why each file has a <strong>dc_id</strong> parameter:</p> +<pre><code><a href='/constructor/document'>document</a>#1e87342b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumbs:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_thumbs:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/Document'>Document</a>; +<a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>; + +<a href='/constructor/encryptedFile'>encryptedFile</a>#4a70994c id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/EncryptedFile'>EncryptedFile</a>; + +<a href='/constructor/userProfilePhoto'>userProfilePhoto</a>#82d1f706 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> stripped_thumb:flags.1?<a href='/type/bytes'>bytes</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/UserProfilePhoto'>UserProfilePhoto</a>; +<a href='/constructor/chatPhoto'>chatPhoto</a>#1c6e1c11 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> stripped_thumb:flags.1?<a href='/type/bytes'>bytes</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/ChatPhoto'>ChatPhoto</a>;</code></pre> +<p>To download the file, an encrypted connection to DC <strong>dc_id</strong> must be established and used to execute the <a href="/method/upload.getFile">upload.getFile</a> query. +If an attempt is made to download the file over a wrong connection, the FILE_MIGRATE_X error will be returned.</p> +<p>Please note that encryption keys are not copied between DCs; therefore, the process of establishing an encrypted connection is started from the very beginning for each new DC. An issued auth_key can be associated with the current authorized user by using an <a href="#authorization-transfer">authorization transfer</a>.</p> +<h3><a class="anchor" href="#user-migration" id="user-migration" name="user-migration"><i class="anchor-icon"></i></a>User Migration</h3> +<p>During the process of working with the API, user information is accumulated in the DC with which the user is associated. This is the reason a user cannot be associated with a different DC by means of the client. However, in the future, during prolonged communication from an unusual location, we may decide that the user’s data must be moved to a different DC. After some time, the data will be copied and the association will be updated. Once this happens, when executing any query transmitted to the old DC, the API will return the USER_MIGRATE_X error. The client will then have to establish a connection with the new DC and repeat the query.</p> +<h3><a class="anchor" href="#authorization-transfer" id="authorization-transfer" name="authorization-transfer"><i class="anchor-icon"></i></a>Authorization Transfer</h3> +<p>The following methods can be used to eliminate the need for users to enter the code from a text message every time:</p> +<pre><code><a href='/constructor/auth.exportedAuthorization'>auth.exportedAuthorization</a>#b434e2b8 id:<a href='/type/long'>long</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.ExportedAuthorization'>auth.ExportedAuthorization</a>; +<a href='/constructor/auth.authorization'>auth.authorization</a>#cd050916 flags:<a href='/type/%23'>#</a> tmp_sessions:flags.0?<a href='/type/int'>int</a> user:<a href='/type/User'>User</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>; +---functions--- +<a href='/method/auth.importAuthorization'>auth.importAuthorization</a>#a57a7dad id:<a href='/type/long'>long</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>; +<a href='/method/auth.exportAuthorization'>auth.exportAuthorization</a>#e5bfffcd dc_id:<a href='/type/int'>int</a> = <a href='/type/auth.ExportedAuthorization'>auth.ExportedAuthorization</a>;</code></pre> +<p><a href="/method/auth.exportAuthorization">auth.exportAuthorization</a> must be executed in the current DC (the DC with which a connection has already been established), passing in <strong>dc_id</strong> as the value for the new DC. The method should return the user identifier and a long string of random data. An import operation can be performed at the new DC by sending it what was received. Queries requiring authorization can then be successfully executed in the new DC.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/dice.html b/data/core.telegram.org/api/dice.html new file mode 100644 index 0000000000..3fd5d73de0 --- /dev/null +++ b/data/core.telegram.org/api/dice.html @@ -0,0 +1,149 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Dice</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram supports sending [animated dice](https://telegram.org/blog/folders#and-one-more-thing) emojis."> + <meta property="og:title" content="Dice"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram supports sending [animated dice](https://telegram.org/blog/folders#and-one-more-thing) emojis."> + <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?215" 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/dice" >Dice</a></li></ul></div> + <h1 id="dev_page_title">Dice</h1> + + <div id="dev_page_content"><p>Telegram supports sending <a href="https://telegram.org/blog/folders#and-one-more-thing">animated dice</a> emojis.<br> +This is implemented by using the dice constructors: </p> +<pre><code><a href='/constructor/inputMediaDice'>inputMediaDice</a>#e66fbf7b emoticon:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>; +<a href='/constructor/messageMediaDice'>messageMediaDice</a>#3f7ee58b value:<a href='/type/int'>int</a> emoticon:<a href='/type/string'>string</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/inputStickerSetDice'>inputStickerSetDice</a>#e67f520e emoticon:<a href='/type/string'>string</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>; + +<a href='/constructor/messages.stickerSet'>messages.stickerSet</a>#b60a24a6 set:<a href='/type/StickerSet'>StickerSet</a> packs:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StickerPack'>StickerPack</a>> documents:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Document'>Document</a>> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/messages.getStickerSet'>messages.getStickerSet</a>#2619a90e stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +<a href='/method/help.getAppConfig'>help.getAppConfig</a>#98914110 = <a href='/type/JSONValue'>JSONValue</a>;</code></pre> +<p>On startup, clients should fetch <a href="/api/config#client-configuration">app configuration using help.getAppConfig</a>.<br> +Then, for each dice emoji contained in the <code>emojies_send_dice</code> field, clients should fetch the dice emoji stickerset by calling the <a href="/method/messages.getStickerSet">messages.getStickerSet</a> method, providing the properly populated <a href="/constructor/inputStickerSetDice">inputStickerSetDice</a> to the <code>stickerset</code> field.<br> +The returned stickerset will contain a set of animated stickers, one for each of the dice outcomes, plus a first looping sticker that should be shown as preview to the user before actually sending the dice. </p> +<p>If a user attempts to send a single emoji from the ones specified in <code>emojies_send_dice</code>, the dice should be sent using <a href="/method/messages.sendMedia">messages.sendMedia</a>, providing the dice emoji to the <code>emoticon</code> field. </p> +<p>Incoming dice stickers will be received as a <a href="/constructor/messageMediaDice">messageMediaDice</a> constructor, along with a randomly generated server-side value, ranging from 1 to the maximum allowed value for this type of dice.<br> +Clients should display the correct dice animated sticker for the specified value: since dice values start from 1, and the first animated sticker in dice stickerset is the preview, <code>value</code> can be used to directly index the <code>documents</code> sticker array from the animated stickerset. </p> +<p>The <code>emojies_send_dice_success</code> configuration parameter contains more info about dice emojis other than the basic <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />: </p> +<pre><code> "emojies_send_dice_success": { + "\ud83c\udfaf": { + "value": 6, + "frame_start": 62 + }, + "\ud83c\udfc0": { + "value": 5, + "frame_start": 110 + } + }</code></pre> +<p>For each of the dice emojis, a maximum "winning" value is specified, along with the frame number at which to show the fireworks <img class="emoji" src="//telegram.org/img/emoji/40/F09F8E86.png" width="20" height="20" alt="🎆" />.<br> +Please note that dice animated stickers should loop only once, right after being sent/received <strong>for the first time</strong>; clicking on the dice sticker should bring up a popup, inviting the user to send a new dice of the same type. </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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/discussion.html b/data/core.telegram.org/api/discussion.html new file mode 100644 index 0000000000..d1181b0f5f --- /dev/null +++ b/data/core.telegram.org/api/discussion.html @@ -0,0 +1,151 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Discussion groups</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="[Groups](/api/channel) can be associated to a [channel](/api/channel) as a [discussion group](https://telegram.org/blog/privacy-discussions-web-bots), to allow users to discuss about posts."> + <meta property="og:title" content="Discussion groups"> + <meta property="og:image" content=""> + <meta property="og:description" content="[Groups](/api/channel) can be associated to a [channel](/api/channel) as a [discussion group](https://telegram.org/blog/privacy-discussions-web-bots), to allow users to discuss about posts."> + <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?215" 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/discussion" >Discussion groups</a></li></ul></div> + <h1 id="dev_page_title">Discussion groups</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><a href="/api/channel">Groups</a> can be associated to a <a href="/api/channel">channel</a> as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts. </p> +<pre><code><a href='/constructor/boolFalse'>boolFalse</a>#bc799737 = <a href='/type/Bool'>Bool</a>; +<a href='/constructor/boolTrue'>boolTrue</a>#997275b5 = <a href='/type/Bool'>Bool</a>; + +<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; + +<a href='/constructor/messages.chats'>messages.chats</a>#64ff9fd5 chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> = <a href='/type/messages.Chats'>messages.Chats</a>; + +---functions--- + +<a href='/method/channels.setDiscussionGroup'>channels.setDiscussionGroup</a>#40582bb2 broadcast:<a href='/type/InputChannel'>InputChannel</a> group:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/Bool'>Bool</a>; +<a href='/method/channels.getGroupsForDiscussion'>channels.getGroupsForDiscussion</a>#f5dad378 = <a href='/type/messages.Chats'>messages.Chats</a>;</code></pre> +<p>A discussion group can be associated to a channel using <a href="/method/channels.setDiscussionGroup">channels.setDiscussionGroup</a>.<br> +The discussion group can be accessed in the client by clicking on the discuss button of the channel, or by accessing the <a href="/api/threads">comment section</a> of a specific post; the discussion group ID is also present in the <code>linked_chat_id</code> field of the <a href="/constructor/channelFull">channelFull</a> constructor. </p> +<p>All messages sent to the channel will also be sent to the linked group (with sender peer <code>from_id</code> equal to the peer of the linked channel); those messages will also be automatically <a href="/api/pin">pinned</a> in the group.</p> +<h3><a class="anchor" href="#linking-a-discussion-group" id="linking-a-discussion-group" name="linking-a-discussion-group"><i class="anchor-icon"></i></a>Linking a discussion group</h3> +<p>To obtain a list of admined supergroups that a channel admin can possibly associate to a channel, use <a href="/method/channels.getGroupsForDiscussion">channels.getGroupsForDiscussion</a>.<br> +Returned <a href="/api/channel">legacy group chats</a> must be first <a href="/api/channel#migration">upgraded to supergroups</a> before they can be set as a discussion group.<br> +Before linking a supergroup to a channel, access to the supergroup's old messages must also be enabled using <a href="/method/channels.togglePreHistoryHidden">channels.togglePreHistoryHidden</a>. </p> +<p>To set a returned supergroup as a discussion group use <a href="/method/channels.setDiscussionGroup">channels.setDiscussionGroup</a>.</p> +<p>Schema: </p> +<pre><code><a href='/constructor/boolFalse'>boolFalse</a>#bc799737 = <a href='/type/Bool'>Bool</a>; +<a href='/constructor/boolTrue'>boolTrue</a>#997275b5 = <a href='/type/Bool'>Bool</a>; + +<a href='/constructor/messages.chats'>messages.chats</a>#64ff9fd5 chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> = <a href='/type/messages.Chats'>messages.Chats</a>; + +---functions--- + +<a href='/method/channels.setDiscussionGroup'>channels.setDiscussionGroup</a>#40582bb2 broadcast:<a href='/type/InputChannel'>InputChannel</a> group:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/Bool'>Bool</a>; +<a href='/method/channels.getGroupsForDiscussion'>channels.getGroupsForDiscussion</a>#f5dad378 = <a href='/type/messages.Chats'>messages.Chats</a>; + +<a href='/method/channels.togglePreHistoryHidden'>channels.togglePreHistoryHidden</a>#eabbb94c channel:<a href='/type/InputChannel'>InputChannel</a> enabled:<a href='/type/Bool'>Bool</a> = <a href='/type/Updates'>Updates</a>;</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="/">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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/drafts.html b/data/core.telegram.org/api/drafts.html new file mode 100644 index 0000000000..b6ffd788e0 --- /dev/null +++ b/data/core.telegram.org/api/drafts.html @@ -0,0 +1,131 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Message drafts</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to handle message drafts"> + <meta property="og:title" content="Message drafts"> + <meta property="og:image" content="89f7ae8e51fc1ce19f"> + <meta property="og:description" content="How to handle message drafts"> + <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?215" 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/drafts" >Message drafts</a></li></ul></div> + <h1 id="dev_page_title">Message drafts</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Message <a href="https://telegram.org/blog/drafts">drafts</a> in Telegram allow syncing the text typed into message fields between devices.</p> +<h3><a class="anchor" href="#drafts" id="drafts" name="drafts"><i class="anchor-icon"></i></a>Drafts</h3> +<p>Drafts are represented by the <a href="/type/DraftMessage">DraftMessage</a> constructors. +The parameters of the peer-specific draft should be used as defaults when composing a message to be sent to a certain peer (in the case of media, the same draft should still be used as base, the message will become the caption). +If the user exits the app before sending the message, the message should be saved as a draft:</p> +<h3><a class="anchor" href="#saving-drafts" id="saving-drafts" name="saving-drafts"><i class="anchor-icon"></i></a>Saving drafts</h3> +<p>Drafts can be saved using the <a href="/method/messages.saveDraft">messages.saveDraft</a> method.</p> +<h3><a class="anchor" href="#downloading-drafts" id="downloading-drafts" name="downloading-drafts"><i class="anchor-icon"></i></a>Downloading drafts</h3> +<p>New drafts are automatically sent to all devices via <a href="/constructor/updateDraftMessage">updateDraftMessage</a> updates.</p> +<p><a href="/constructor/dialog">Dialog</a> objects fetched via the API also contain the draft associated with the dialog.</p> +<h3><a class="anchor" href="#clearing-drafts" id="clearing-drafts" name="clearing-drafts"><i class="anchor-icon"></i></a>Clearing drafts</h3> +<p>Drafts can be cleared by setting the <code>clear_draft</code> flag when sending messages or media using <a href="/method/messages.sendMessage">messages.sendMessage</a>, <a href="/method/messages.sendMedia">messages.sendMedia</a>, <a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a>, <a href="/method/messages.sendInlineBotResult">messages.sendInlineBotResult</a> and similar or manually by passing empty values to <a href="/method/messages.saveDraft">messages.saveDraft</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/end-to-end/video-calls.html b/data/core.telegram.org/api/end-to-end/video-calls.html new file mode 100644 index 0000000000..f0e546831e --- /dev/null +++ b/data/core.telegram.org/api/end-to-end/video-calls.html @@ -0,0 +1,215 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>End-to-End Encrypted Voice and Video Calls</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="This article describes the end-to-end encryption used for Telegram voice and video calls. +Related Articles +End-to-End Encryption…"> + <meta property="og:title" content="End-to-End Encrypted Voice and Video Calls"> + <meta property="og:image" content=""> + <meta property="og:description" content="This article describes the end-to-end encryption used for Telegram voice and video calls. +Related Articles +End-to-End Encryption…"> + <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?215" 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/end-to-end%2Fvideo-calls" >End-to-End Encrypted Voice and Video Calls</a></li></ul></div> + <h1 id="dev_page_title">End-to-End Encrypted Voice and Video Calls</h1> + + <div id="dev_page_content"><p>This article describes the end-to-end encryption used for Telegram <strong>voice</strong> and <strong>video calls</strong>.</p> +<h5><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related Articles</h5> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="/api/end-to-end">End-to-End Encryption in Secret Chats</a></li> +<li><a href="/mtproto/security_guidelines">Security Guidelines for Client Developers</a> +</div></li> +</ul> +<hr> +<h2><a class="anchor" href="#establishing-calls" id="establishing-calls" name="establishing-calls"><i class="anchor-icon"></i></a>Establishing Calls</h2> +<p>Before a call is ready, some preliminary actions have to be performed. The calling party needs to contact the party to be called and check whether it is ready to accept the call. Besides that, the parties have to negotiate the protocols to be used, learn the IP addresses of each other or of the Telegram relay servers to be used (so-called <em>reflectors</em>), and generate a one-time encryption key for this voice call with the aid of <em>Diffie--Hellman key exchange</em>. All of this is accomplished in parallel with the aid of several Telegram API methods and related notifications. This document covers details related to key generation, encryption and security.</p> +<h2><a class="anchor" href="#key-generation" id="key-generation" name="key-generation"><i class="anchor-icon"></i></a>Key Generation</h2> +<p>The Diffie-Hellman key exchange, as well as the whole protocol used to create a new voice call, is quite similar to the one used for <a href="/api/end-to-end#key-generation">Secret Chats</a>. We recommend studying the linked article before proceeding.</p> +<p>However, we have introduced some important changes to facilitate the <a href="#key-verification">key verification process</a>. Below is the entire exchange between the two communicating parties, the Caller (A) and the Callee (B), through the Telegram servers (S).</p> +<ul> +<li><em>A</em> executes <a href="/method/messages.getDhConfig">messages.getDhConfig</a> to find out the 2048-bit Diffie-Hellman prime <em>p</em> and generator <em>g</em>. The client is expected to check whether <em>p</em> is a safe prime and perform all the <a href="/api/end-to-end#sending-a-request">security checks</a> necessary for secret chats.</li> +<li><em>A</em> chooses a random value of <em>a</em>, 1 < a < p-1, and computes <em>g_a:=power(g,a) mod p</em> (a 256-byte number) and <em>g_a_hash:=SHA256(g_a)</em> (32 bytes long).</li> +<li><em>A</em> invokes (sends to server <em>S</em>) <a href="/method/phone.requestCall">phone.requestCall</a>, which has the field <code>g_a_hash:bytes</code>, among others. For this call, this field is to be filled with <em>g_a_hash</em>, <strong>not</strong> <em>g_a</em> itself.</li> +<li>The Server <em>S</em> performs privacy checks and sends an <a href="/constructor/updatePhoneCall">updatePhoneCall</a> update with a <a href="/constructor/phoneCallRequested">phoneCallRequested</a> constructor to all of <em>B</em>'s active devices. This update, apart from the identity of <em>A</em> and other relevant parameters, contains the <em>g_a_hash</em> field, filled with the value obtained from <em>A</em>.</li> +<li><em>B</em> accepts the call on one of their devices, stores the received value of <em>g_a_hash</em> for this instance of the voice call creation protocol, chooses a random value of <em>b</em>, 1 < b < p-1, computes <em>g_b:=power(g,b) mod p</em>, performs all the required security checks, and invokes the <a href="/method/phone.acceptCall">phone.acceptCall</a> method, which has a <em>g_b:bytes</em> field (among others), to be filled with the value of <em>g_b</em> itself (not its hash).</li> +<li>The Server <em>S</em> sends an <a href="/constructor/updatePhoneCall">updatePhoneCall</a> with the <a href="/constructor/phoneCallDiscarded">phoneCallDiscarded</a> constructor to all other devices <em>B</em> has authorized, to prevent accepting the same call on any of the other devices. From this point on, the server <em>S</em> works only with that of <em>B</em>'s devices which has invoked <a href="/method/phone.acceptCall">phone.acceptCall</a> first.</li> +<li>The Server <em>S</em> sends to <em>A</em> an <a href="/constructor/updatePhoneCall">updatePhoneCall</a> update with <a href="/constructor/phoneCallAccepted">phoneCallAccepted</a> constructor, containing the value of <em>g_b</em> received from <em>B</em>.</li> +<li><em>A</em> performs all the usual security checks on <em>g_b</em> and <em>a</em>, computes the Diffie--Hellman key <em>key:=power(g_b,a) mod p</em> and its fingerprint <em>key_fingerprint:long</em>, equal to the lower 64 bits of <em>SHA1(key)</em>, the same as with secret chats. Then <em>A</em> invokes the <a href="/method/phone.confirmCall">phone.confirmCall</a> method, containing <code>g_a:bytes</code> and <code>key_fingerprint:long</code>.</li> +<li>The Server <em>S</em> sends to <em>B</em> an <a href="/constructor/updatePhoneCall">updatePhoneCall</a> update with the <a href="/constructor/phoneCall">phoneCall</a> constructor, containing the value of <em>g_a</em> in <em>g_a_or_b:bytes</em> field, and <em>key_fingerprint:long</em></li> +<li>At this point <em>B</em> receives the value of <em>g_a</em>. It checks that <em>SHA256(g_a)</em> is indeed equal to the previously received value of <em>g_a_hash</em>, performs all the <a href="/mtproto/security_guidelines">usual Diffie-Hellman security checks</a>, and computes the key <em>key:=power(g_a,b) mod p</em> and its fingerprint, equal to the lower 64 bits of <em>SHA1(key)</em>. Then it checks that this fingerprint equals the value of <code>key_fingerprint:long</code> received from the other side, as an implementation sanity check.</li> +</ul> +<p>At this point, the Diffie--Hellman key exchange is complete, and both parties have a 256-byte shared secret key <em>key</em> which is used to encrypt all further exchanges between <em>A</em> and <em>B</em>.</p> +<p>It is of paramount importance to accept each update only once for each instance of the key generation protocol, discarding any duplicates or alternative versions of already received and processed messages (updates).</p> +<h2><a class="anchor" href="#encryption" id="encryption" name="encryption"><i class="anchor-icon"></i></a>Encryption</h2> +<blockquote> +<p>This document describes encryption in <strong>voice and video calls</strong> as implemented in Telegram apps with versions <strong>7.0</strong> and above. See <a href="https://core.telegram.org/api/end-to-end/voice-calls">this document</a> for details on encryption used in <strong>voice calls</strong> in app versions released before <strong>August 14, 2020</strong>.</p> +</blockquote> +<p>The <a href="https://github.com/TelegramMessenger/tgcalls">Telegram Voice and Video Call Library</a> uses an optimized version of <a href="/">MTProto 2.0</a> to send and receive <strong>packets</strong>, consisting of one or more end-to-end encrypted <strong>messages</strong> of various types (<a href="https://webrtcglossary.com/ice/"><em>ice</em></a> <em>candidates list, video formats, remote video status, audio stream data, video stream data, message ack</em> or <em>empty</em>).</p> +<p>This document describes only the encryption process, leaving out encoding and network-dependent parts.</p> +<p>The library starts working with:</p> +<ul> +<li>An <a href="#encryption-key">encryption key</a> <code>key</code> shared between the parties, as generated above.</li> +<li>Information whether the call is <strong>outgoing</strong> or <strong>incoming</strong>.</li> +<li>Two data transfer channels: <strong>signaling</strong>, offered by the Telegram API, and <strong>transport</strong> based on WebRTC.</li> +</ul> +<p>Both data transfer channels are unreliable (messages may get lost), but <strong>signaling</strong> is slower and more reliable.</p> +<h3><a class="anchor" href="#encrypting-call-data" id="encrypting-call-data" name="encrypting-call-data"><i class="anchor-icon"></i></a>Encrypting Call Data</h3> +<p>The body of a packet (<code>decrypted_body</code>) consists of several messages and their respective <code>seq</code> numbers concatenated together.</p> +<ul> +<li>decrypted_body = message_seq1 + message_body1 + message_seq2 + message_body2</li> +</ul> +<p>Each <code>decrypted_body</code> is unique because no two <code>seq</code> numbers of the first message can be the same. If only old messages need to be re-sent, an <em>empty</em> message with new unique <code>seq</code> is added to the packet first.</p> +<p>The <a href="#key-generation">encryption key</a> <code>key</code> is used to compute a 128-bit <code>msg_key</code> and then a 256-bit <code>aes_key</code> and a 128-bit <code>aes_iv</code>:</p> +<ul> +<li>msg_key_large = SHA256 (substr(key, 88+x, 32) + decrypted_body);</li> +<li>msg_key = substr (msg_key_large, 8, 16);</li> +<li>sha256_a = SHA256 (msg_key + substr (key, x, 36));</li> +<li>sha256_b = SHA256 (substr (key, 40+x, 36) + msg_key);</li> +<li>aes_key = substr (sha256_a, 0, 8) + substr (sha256_b, 8, 16) + substr (sha256_a, 24, 8);</li> +<li>aes_iv = substr (sha256_b, 0, 4) + substr (sha256_a, 8, 8) + substr (sha256_b, 24, 4);</li> +</ul> +<p><code>x</code> depends on whether the call is <strong>outgoing</strong> or <strong>incoming</strong> and on the connection type:</p> +<ul> +<li>x = 0 for <strong>outgoing</strong> + <strong>transport</strong></li> +<li>x = 8 for <strong>incoming</strong> + <strong>transport</strong></li> +<li>x = 128 for <strong>outgoing</strong> + <strong>signaling</strong></li> +<li>x = 136 for <strong>incoming</strong> + <strong>signaling</strong></li> +</ul> +<p>This allows apps to decide which packet types will be sent to which connections and work in these connections independently (with each having its own <code>seq</code> counter).</p> +<p>The resulting <code>aes_key</code> and <code>aes_iv</code> are used to encrypt <code>decrypted_body</code>:</p> +<ul> +<li>encrypted_body = AES_CTR (decrypted_body, aes_key, aes_iv)</li> +</ul> +<p>The packet that gets sent consists of <code>msg_key</code> and <code>encrypted_body</code>:</p> +<ul> +<li>packet_bytes = msg_key + encrypted_body</li> +</ul> +<p>When received, the packet gets decrypted using <code>key</code> and <code>msg_key</code>, after which <code>msg_key</code> is checked against the relevant <code>SHA256</code> substring. If the check fails, the packet <strong>must</strong> be discarded.</p> +<h3><a class="anchor" href="#protecting-against-replay-attacks" id="protecting-against-replay-attacks" name="protecting-against-replay-attacks"><i class="anchor-icon"></i></a>Protecting Against Replay Attacks</h3> +<p>Each of the peers maintains its own 32-bit monotonically increasing counter for outgoing messages, <code>seq</code>, starting with <code>1</code>. This <code>seq</code> counter is prepended to each sent message and increased by <code>1</code> for each new message. No two <code>seq</code> numbers of the first message in a packet can be the same. If only old messages need to be re-sent, an <em>empty</em> message with a new unique <code>seq</code> is added to the packet first. When the <code>seq</code> counter reaches <code>2^30</code>, the call must be aborted. Each peer stores <code>seq</code> values of all the messages it has received (and processed) which are larger than <code>max_received_seq - 64</code>, where <code>max_received_seq</code> is the largest <code>seq</code> number received so far.</p> +<p>If a packet is received, the first message of which has a <code>seq</code> that is smaller or equal to <code>max_received_seq - 64</code> or its <code>seq</code> had already been received, the message is discarded. Otherwise, the <code>seq</code> values of all incoming messages are memorized and <code>max_received_seq</code> is adjusted. This guarantees that no two packets will be processed twice.</p> +<h2><a class="anchor" href="#key-verification" id="key-verification" name="key-verification"><i class="anchor-icon"></i></a>Key Verification</h2> +<p>To verify the key, and ensure that no MITM attack is taking place, both parties concatenate the secret key <em>key</em> with the value <em>g_a</em> of the Caller ( <em>A</em> ), compute SHA256 and use it to generate a sequence of emoticons. More precisely, the SHA256 hash is split into four 64-bit integers; each of them is divided by the total number of emoticons used (currently 333), and the remainder is used to select specific emoticons. The specifics of the protocol guarantee that comparing four emoticons out of a set of 333 is sufficient to prevent eavesdropping (MiTM attack on DH) with a probability of <strong>0.9999999999</strong>.</p> +<p>This is because instead of the standard Diffie-Hellman key exchange which requires only two messages between the parties:</p> +<ul> +<li>A->B : (generates a and) sends g_a := g^a</li> +<li>B->A : (generates b and true key (g_a)^b, then) sends g_b := g^b</li> +<li>A : computes key (g_b)^a</li> +</ul> +<p>we use a <strong>three-message modification</strong> thereof that works well when both parties are online (which also happens to be a requirement for voice calls):</p> +<ul> +<li>A->B : (generates a and) sends g_a_hash := hash(g^a)</li> +<li>B->A : (stores g_a_hash, generates b and) sends g_b := g^b</li> +<li>A->B : (computes key (g_b)^a, then) sends g_a := g^a</li> +<li>B : checks hash(g_a) == g_a_hash, then computes key (g_a)^b</li> +</ul> +<p>The idea here is that <em>A</em> commits to a specific value of <em>a</em> (and of <em>g_a</em>) without disclosing it to <em>B</em>. <em>B</em> has to choose its value of <em>b</em> and <em>g_b</em> without knowing the true value of <em>g_a</em>, so that it cannot try different values of <em>b</em> to force the final key <em>(g_a)^b</em> to have any specific properties (such as fixed lower 32 bits of SHA256(key)). At this point, <em>B</em> commits to a specific value of <em>g_b</em> without knowing <em>g_a</em>. Then <em>A</em> has to send its value <em>g_a</em>; it cannot change it even though it knows <em>g_b</em> now, because the other party <em>B</em> would accept only a value of <em>g_a</em> that has a hash specified in the very first message of the exchange.</p> +<p>If some impostor is pretending to be either <em>A</em> or <em>B</em> and tries to perform a Man-in-the-Middle Attack on this Diffie--Hellman key exchange, the above still holds. Party <em>A</em> will generate a shared key with <em>B</em> -- or whoever pretends to be <em>B</em> -- without having a second chance to change its exponent <em>a</em> depending on the value <em>g_b</em> received from the other side; and the impostor will not have a chance to adapt his value of <em>b</em> depending on <em>g_a</em>, because it has to commit to a value of <em>g_b</em> before learning <em>g_a</em>. The same is valid for the key generation between the impostor and the party <em>B</em>.</p> +<p>The use of hash commitment in the DH exchange constrains the attacker to only <strong>one guess</strong> to generate the correct visualization in their attack, which means that using just over 33 bits of entropy represented by four emoji in the visualization is enough to make a successful attack highly improbable.</p> +<blockquote> +<p>For a slightly more user-friendly explanation of the above see: <a href="https://core.telegram.org/techfaq#q-how-are-voice-calls-authenticated">How are calls authenticated?</a></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/entities.html b/data/core.telegram.org/api/entities.html new file mode 100644 index 0000000000..5229175237 --- /dev/null +++ b/data/core.telegram.org/api/entities.html @@ -0,0 +1,137 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Styled text with message entities</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to create styled text with message entities"> + <meta property="og:title" content="Styled text with message entities"> + <meta property="og:image" content="d2441cad7ecfa0d622"> + <meta property="og:description" content="How to create styled text with message entities"> + <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?215" 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/entities" >Styled text with message entities</a></li></ul></div> + <h1 id="dev_page_title">Styled text with message entities</h1> + + <div id="dev_page_content"><p>Telegram supports styled text using <a href="/type/MessageEntity">message entities</a>.</p> +<p>A client that wants to send styled messages would simply have to integrate a <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a>/<a href="https://en.wikipedia.org/wiki/HTML">HTML</a> parser, and generate an array of message entities by iterating through the parsed tags.</p> +<p>Special care must be taken to consider the UTF-8 length of strings when generating message entities, see example implementations: <a href="https://github.com/tdlib/td/tree/master/td/telegram/MessageEntity.cpp">tdlib</a>, <a href="https://github.com/danog/MadelineProto/blob/master/src/danog/MadelineProto/TL/Conversion/BotAPI.php">MadelineProto</a>.</p> +<p>Nested entities are supported.<br> +For example the following HTML/Markdown aliases for message entities can be used:</p> +<ul> +<li><a href="https://core.telegram.org/constructor/messageEntityBold"><strong>messageEntityBold</strong></a> => <code><b>bold</b></code>, <code><strong>bold</strong></code>, <code>**bold**</code></li> +<li><a href="https://core.telegram.org/constructor/messageEntityItalic"><em>messageEntityItalic</em></a> => <code><i>italic</i></code>, <code><em>italic</em></code> <code>*italic*</code></li> +<li><a href="https://core.telegram.org/constructor/messageEntityCode"><code>messageEntityCode</code></a> => <code><code>code</code></code>, <code>`code`</code></li> +<li><a href="https://core.telegram.org/constructor/messageEntityStrike"><del>messageEntityStrike</del></a> => <code><s>strike</s></code>, <code><strike>strike</strike></code>, <code><del>strike</del></code>, <code>~~strike~~</code></li> +<li><a href="https://core.telegram.org/constructor/messageEntityUnderline"><u>messageEntityUnderline</u></a> => <code><u>underline</u></code></li> +<li><a href="https://core.telegram.org/constructor/messageEntityPre"><code>messageEntityPre</code></a> => <code><pre language="c++">code</pre></code>, </li> +</ul> +<pre> +```c++ +code +``` +</pre> +<p>The following entities can also be used to <a href="/api/mentions">mention</a> users:</p> +<ul> +<li><a href="/constructor/inputMessageEntityMentionName">inputMessageEntityMentionName</a> => <a href="https://t.me/botfather">Mention a user</a></li> +<li><a href="/constructor/inputMessageEntityMentionName">messageEntityMention</a> => <a href="https://t.me/botfather">@botfather</a> (this mention is generated automatically server-side for @usernames in messages)</li> +</ul></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/errors.html b/data/core.telegram.org/api/errors.html new file mode 100644 index 0000000000..f195781ddd --- /dev/null +++ b/data/core.telegram.org/api/errors.html @@ -0,0 +1,189 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Error handling </title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to handle API return errors correctly."> + <meta property="og:title" content="Error handling "> + <meta property="og:image" content="80b44334eec2aec564"> + <meta property="og:description" content="How to handle API return errors correctly."> + <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?215" 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/errors" >Error handling </a></li></ul></div> + <h1 id="dev_page_title">Error handling </h1> + + <div id="dev_page_content"><p>There will be errors when working with the API, and they must be correctly handled on the client.</p> +<p>An error is characterized by several parameters:</p> +<h4><a class="anchor" href="#error-code" id="error-code" name="error-code"><i class="anchor-icon"></i></a>Error Code</h4> +<p>Numerical value similar to HTTP status. Contains information on the type of error that occurred: for example, a data input error, privacy error, or server error. This is a required parameter.</p> +<h4><a class="anchor" href="#error-type" id="error-type" name="error-type"><i class="anchor-icon"></i></a>Error Type</h4> +<p>A string literal in the form of <code>/[A-Z_0-9]+/</code>, which summarizes the problem. For example, <code>AUTH_KEY_UNREGISTERED</code>. This is an optional parameter.</p> +<hr> +<h4><a class="anchor" href="#error-constructors" id="error-constructors" name="error-constructors"><i class="anchor-icon"></i></a>Error Constructors</h4> +<p>There should be a way to handle errors that are returned in <a href="/mtproto/service_messages#rpc-error">rpc_error</a> constructors.</p> +<p>Below is a list of error codes and their meanings:</p> +<h3><a class="anchor" href="#303-see-other" id="303-see-other" name="303-see-other"><i class="anchor-icon"></i></a>303 SEE_OTHER</h3> +<p>The request must be repeated, but directed to a different data center.</p> +<h4><a class="anchor" href="#examples-of-errors" id="examples-of-errors" name="examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4> +<ul> +<li>FILE_MIGRATE_X: the file to be accessed is currently stored in a different data center.</li> +<li>PHONE_MIGRATE_X: the phone number a user is trying to use for authorization is associated with a different data center.</li> +<li>NETWORK_MIGRATE_X: the source IP address is associated with a different data center (for registration)</li> +<li>USER_MIGRATE_X: the user whose identity is being used to execute queries is associated with a different data center (for registration)</li> +</ul> +<p>In all these cases, the error description’s string literal contains the number of the data center (instead of the X) to which the repeated query must be sent. +<a href="/api/datacenter">More information about redirects between data centers »</a></p> +<h3><a class="anchor" href="#400-bad-request" id="400-bad-request" name="400-bad-request"><i class="anchor-icon"></i></a>400 BAD_REQUEST</h3> +<p>The query contains errors. In the event that a request was created using a form and contains user generated data, the user should be notified that the data must be corrected before the query is repeated.</p> +<h4><a class="anchor" href="#examples-of-errors" id="examples-of-errors" name="examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4> +<ul> +<li>FIRSTNAME_INVALID: The first name is invalid</li> +<li>LASTNAME_INVALID: The last name is invalid</li> +<li>PHONE_NUMBER_INVALID: The phone number is invalid</li> +<li>PHONE_CODE_HASH_EMPTY: phone_code_hash is missing</li> +<li>PHONE_CODE_EMPTY: phone_code is missing</li> +<li>PHONE_CODE_EXPIRED: The confirmation code has expired</li> +<li>API_ID_INVALID: The api_id/api_hash combination is invalid</li> +<li>PHONE_NUMBER_OCCUPIED: The phone number is already in use</li> +<li>PHONE_NUMBER_UNOCCUPIED: The phone number is not yet being used</li> +<li>USERS_TOO_FEW: Not enough users (to create a chat, for example)</li> +<li>USERS_TOO_MUCH: The maximum number of users has been exceeded (to create a chat, for example)</li> +<li>TYPE_CONSTRUCTOR_INVALID: The type constructor is invalid</li> +<li>FILE_PART_INVALID: The file part number is invalid</li> +<li>FILE_PARTS_INVALID: The number of file parts is invalid</li> +<li>FILE_PART_Х_MISSING: Part X (where X is a number) of the file is missing from storage</li> +<li>MD5_CHECKSUM_INVALID: The MD5 checksums do not match</li> +<li>PHOTO_INVALID_DIMENSIONS: The photo dimensions are invalid</li> +<li>FIELD_NAME_INVALID: The field with the name FIELD_NAME is invalid</li> +<li>FIELD_NAME_EMPTY: The field with the name FIELD_NAME is missing</li> +<li>MSG_WAIT_FAILED: A request that must be completed before processing the current request returned an error</li> +<li>MSG_WAIT_TIMEOUT: A request that must be completed before processing the current request didn't finish processing yet</li> +</ul> +<h3><a class="anchor" href="#401-unauthorized" id="401-unauthorized" name="401-unauthorized"><i class="anchor-icon"></i></a>401 UNAUTHORIZED</h3> +<p>There was an unauthorized attempt to use functionality available only to authorized users.</p> +<h4><a class="anchor" href="#examples-of-errors" id="examples-of-errors" name="examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4> +<ul> +<li>AUTH_KEY_UNREGISTERED: The key is not registered in the system</li> +<li>AUTH_KEY_INVALID: The key is invalid</li> +<li>USER_DEACTIVATED: The user has been deleted/deactivated</li> +<li>SESSION_REVOKED: The authorization has been invalidated, because of the user terminating all sessions</li> +<li>SESSION_EXPIRED: The authorization has expired</li> +<li>AUTH_KEY_PERM_EMPTY: The method is unavailble for temporary authorization key, not bound to permanent</li> +</ul> +<h3><a class="anchor" href="#403-forbidden" id="403-forbidden" name="403-forbidden"><i class="anchor-icon"></i></a>403 FORBIDDEN</h3> +<p>Privacy violation. For example, an attempt to write a message to someone who has blacklisted the current user.</p> +<h3><a class="anchor" href="#404-not-found" id="404-not-found" name="404-not-found"><i class="anchor-icon"></i></a>404 NOT_FOUND</h3> +<p>An attempt to invoke a non-existent object, such as a method.</p> +<h3><a class="anchor" href="#406-not-acceptable" id="406-not-acceptable" name="406-not-acceptable"><i class="anchor-icon"></i></a>406 NOT_ACCEPTABLE</h3> +<p>Similar to <a href="#400-bad-request">400 BAD_REQUEST</a>, but the app should not display any error messages to user in UI as a result of this response. The error message will be delivered via <a href="/constructor/updateServiceNotification">updateServiceNotification</a> instead.</p> +<h3><a class="anchor" href="#420-flood" id="420-flood" name="420-flood"><i class="anchor-icon"></i></a>420 FLOOD</h3> +<p>The maximum allowed number of attempts to invoke the given method with the given input parameters has been exceeded. For example, in an attempt to request a large number of text messages (SMS) for the same phone number.</p> +<h4><a class="anchor" href="#error-example" id="error-example" name="error-example"><i class="anchor-icon"></i></a>Error Example:</h4> +<ul> +<li>FLOOD_WAIT_X: A wait of X seconds is required (where X is a number)</li> +</ul> +<h3><a class="anchor" href="#500-internal" id="500-internal" name="500-internal"><i class="anchor-icon"></i></a>500 INTERNAL</h3> +<p>An internal server error occurred while a request was being processed; for example, there was a disruption while accessing a database or file storage.</p> +<p>If a client receives a 500 error, or you believe this error should not have occurred, please collect as much information as possible about the query and error and send it to the developers.</p> +<h3><a class="anchor" href="#other-error-codes" id="other-error-codes" name="other-error-codes"><i class="anchor-icon"></i></a>Other Error Codes</h3> +<p>If a server returns an error with a code other than the ones listed above, it may be considered the same as a 500 error and treated as an <a href="#500-internal">internal server error</a>.</p></div> + +</div> + + </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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/file_reference.html b/data/core.telegram.org/api/file_reference.html new file mode 100644 index 0000000000..96f184d1dc --- /dev/null +++ b/data/core.telegram.org/api/file_reference.html @@ -0,0 +1,125 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>File references</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to handle file references."> + <meta property="og:title" content="File references"> + <meta property="og:image" content="c06d4e41a64b660b9f"> + <meta property="og:description" content="How to handle file references."> + <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?215" 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/file_reference" >File references</a></li></ul></div> + <h1 id="dev_page_title">File references</h1> + + <div id="dev_page_content"><p>File references are strings of bytes, that can be encountered in the <code>file_reference</code> fields of <a href="/constructor/document">document</a> and <a href="/constructor/photo">photo</a> objects.</p> +<p>They must be cached by the client, along with the <strong>origin context</strong> where the document/photo object was found, in order to be refetched when the file reference expires.</p> +<p>Example implementation of a reference database: <a href="https://github.com/danog/MadelineProto/blob/master/src/danog/MadelineProto/MTProtoTools/ReferenceDatabase.php">MadelineProto</a>, <a href="https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/FileRefController.java">android</a>, <a href="https://github.com/telegramdesktop/tdesktop/blob/bec39d89e19670eb436dc794a8f20b657cb87c71/Telegram/SourceFiles/data/data_file_origin.cpp">telegram desktop</a>, <a href="https://github.com/tdlib/td/blob/56163c2460a65afc4db2c57ece576b8c38ea194b/td/telegram/FileReferenceManager.cpp">tdlib</a>.</p> +<h4><a class="anchor" href="#another-example" id="another-example" name="another-example"><i class="anchor-icon"></i></a>Another example:</h4> +<p>Assume you receive a <a href="/constructor/message">message</a> from your friend: that message contains a <a href="/constructor/messageMediaPhoto">messageMediaPhoto</a> with a <a href="/constructor/photo">photo</a>.</p> +<p>Your client has to cache not only the <code>file_reference</code> field of the photo, but also the context in which the file reference was seen (in this case, a message coming from a specific user).</p> +<p>The context info is in this case, <a href="https://github.com/danog/MadelineProto/blob/master/src/danog/MadelineProto/MTProtoTools/ReferenceDatabase.php#L74">an origin context of type message</a>, containing the message ID and the peer ID of the chat/channel/user where the message was seen.</p> +<p>The context info has to be associated with the file reference: when downloading a file using <a href="/method/upload.getFile">upload.getFile</a>, a <code>FILE_REFERENCE_EXPIRED</code> error (or another error starting with <code>FILE_REFERENCE_</code>) may be returned.<br> +If this happens, the context info must be used to refetch the object that contained the file reference: in this example, the peer info and the message ID have to be used with <a href="/method/channels.getMessages">channels.getMessages</a> or <a href="/method/messages.getMessages">messages.getMessages</a> to <a href="https://github.com/danog/MadelineProto/blob/master/src/danog/MadelineProto/MTProtoTools/ReferenceDatabase.php#L481">refetch the message</a>, recache the file reference and use it in a new file download request.</p> +<p>More than one origin context can be associated to one file reference, for greater resilience (in the case of a message that was deleted in one chat but was also forwarded in another chat, the file reference can be refetched from the second chat, instead).</p> +<p>Origin contexts for objects returned by method calls with certain parameters can be considered, too (for example, in the case of favorited sticker sets returned by <a href="/method/messages.getFavedStickers">messages.getFavedStickers</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/files.html b/data/core.telegram.org/api/files.html new file mode 100644 index 0000000000..3747d36865 --- /dev/null +++ b/data/core.telegram.org/api/files.html @@ -0,0 +1,568 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Uploading and Downloading Files</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to transfer large data batches correctly."> + <meta property="og:title" content="Uploading and Downloading Files"> + <meta property="og:image" content="1937a1be855ea8fce8"> + <meta property="og:description" content="How to transfer large data batches correctly."> + <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?215" 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/files" >Uploading and Downloading Files</a></li></ul></div> + <h1 id="dev_page_title">Uploading and Downloading Files</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>When working with the API, it is sometimes necessary to send a relatively large file to the server. For example, when sending a message with a photo/video attachment or when setting the current user’s profile picture.</p> +<h3><a class="anchor" href="#uploading-files" id="uploading-files" name="uploading-files"><i class="anchor-icon"></i></a>Uploading files</h3> +<p>There are a number of API methods to save files. The schema of the types and methods used is presented below:</p> +<pre><code><a href='/constructor/inputFile'>inputFile</a>#f52ff27f id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> name:<a href='/type/string'>string</a> md5_checksum:<a href='/type/string'>string</a> = <a href='/type/InputFile'>InputFile</a>; +<a href='/constructor/inputFileBig'>inputFileBig</a>#fa4f0bb5 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> name:<a href='/type/string'>string</a> = <a href='/type/InputFile'>InputFile</a>; + + +<a href='/constructor/inputEncryptedFileUploaded'>inputEncryptedFileUploaded</a>#64bd0306 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> md5_checksum:<a href='/type/string'>string</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>; +<a href='/constructor/inputEncryptedFileBigUploaded'>inputEncryptedFileBigUploaded</a>#2dc173c8 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>; + +<a href='/constructor/inputSecureFileUploaded'>inputSecureFileUploaded</a>#3334b0f0 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> md5_checksum:<a href='/type/string'>string</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; +<a href='/constructor/inputSecureFile'>inputSecureFile</a>#5367e5be id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; + +<a href='/constructor/inputMediaUploadedPhoto'>inputMediaUploadedPhoto</a>#1e287d04 flags:<a href='/type/%23'>#</a> file:<a href='/type/InputFile'>InputFile</a> stickers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputDocument'>InputDocument</a>> ttl_seconds:flags.1?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; +<a href='/constructor/inputMediaUploadedDocument'>inputMediaUploadedDocument</a>#5b38c6c1 flags:<a href='/type/%23'>#</a> nosound_video:flags.3?<a href='/constructor/true'>true</a> force_file:flags.4?<a href='/constructor/true'>true</a> file:<a href='/type/InputFile'>InputFile</a> thumb:flags.2?<a href='/type/InputFile'>InputFile</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> stickers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputDocument'>InputDocument</a>> ttl_seconds:flags.1?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; + +<a href='/constructor/inputChatUploadedPhoto'>inputChatUploadedPhoto</a>#c642724e flags:<a href='/type/%23'>#</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> = <a href='/type/InputChatPhoto'>InputChatPhoto</a>; + + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/method/messages.uploadMedia'>messages.uploadMedia</a>#519bc2b1 peer:<a href='/type/InputPeer'>InputPeer</a> media:<a href='/type/InputMedia'>InputMedia</a> = <a href='/type/MessageMedia'>MessageMedia</a>; +<a href='/method/messages.sendEncryptedFile'>messages.sendEncryptedFile</a>#5559481d flags:<a href='/type/%23'>#</a> silent:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> random_id:<a href='/type/long'>long</a> data:<a href='/type/bytes'>bytes</a> file:<a href='/type/InputEncryptedFile'>InputEncryptedFile</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>; + +<a href='/method/photos.uploadProfilePhoto'>photos.uploadProfilePhoto</a>#89f30f69 flags:<a href='/type/%23'>#</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> = <a href='/type/photos.Photo'>photos.Photo</a>; + +<a href='/method/upload.saveFilePart'>upload.saveFilePart</a>#b304a621 file_id:<a href='/type/long'>long</a> file_part:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/Bool'>Bool</a>; +<a href='/method/upload.saveBigFilePart'>upload.saveBigFilePart</a>#de7b673d file_id:<a href='/type/long'>long</a> file_part:<a href='/type/int'>int</a> file_total_parts:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Before transmitting the contents of the file itself, the file has to be assigned a unique 64-bit client identifier: <strong>file_id</strong>.</p> +<p>The file’s binary content is then split into parts. All parts must have the same size ( <strong>part_size</strong> ) and the following conditions must be met:</p> +<ul> +<li><code>part_size % 1024 = 0</code> (divisible by 1KB)</li> +<li><code>524288 % part_size = 0</code> (512KB must be evenly divisible by <strong>part_size</strong>)</li> +</ul> +<p>The last part does not have to satisfy these conditions, provided its size is less than <strong>part_size</strong>.</p> +<p>Each part should have a sequence number, <strong>file_part</strong>, with a value ranging from 0 to 2,999.</p> +<p>After the file has been partitioned you need to choose a method for saving it on the server. Use <a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a> in case the full size of the file is more than <strong>10 MB</strong> and <a href="/method/upload.saveFilePart">upload.saveFilePart</a> for smaller files.</p> +<p>Each call saves a portion of the data in a temporary location on the server to be used later. The storage life of each portion of data is between several minutes and several hours (depending on how busy the storage area is). After this time, the file part will become unavailable. To increase the time efficiency of a file save operation, we recommend using a call queue, so X pieces of the file are being saved at any given moment in time. Each successful operation to save a part invokes the method call to save the next part. The value of X can be tuned to achieve maximum performance.</p> +<p>When using one of the methods mentioned above to save file parts, one of the following <a href="/api/errors#400-bad-request">data input errors</a> may be returned:</p> +<ul> +<li>FILE_PARTS_INVALID - Invalid number of parts. The value is not between <code>1..3000</code></li> +<li>FILE_PART_INVALID: The file part number is invalid. The value is not between <code>0 and 2,999</code>.</li> +<li>FILE_PART_TOO_BIG: The size limit (512 KB) for the content of the file part has been exceeded</li> +<li>FILE_PART_EMPTY: The file part sent is empty</li> +<li>FILE_PART_SIZE_INVALID - 512KB cannot be evenly divided by <strong>part_size</strong></li> +<li>FILE_PART_SIZE_CHANGED - The part size is different from the size of one of the previous parts in the same file</li> +</ul> +<p>While the parts are being uploaded, an <a href="https://en.wikipedia.org/wiki/MD5">MD5 hash</a> of the file contents can also be computed to be used later as the <strong>md5_checksum</strong> parameter in the <a href="/constructor/inputFile">inputFile</a> constructor (since it is checked only by the server, for encrypted secret chat files it must be generated from the encrypted file). +After the entire file is successfully saved, the final method may be called and passed the generated <a href="/type/InputFile">inputFile</a> object. In case the <a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a> method is used, the <a href="/constructor/inputFileBig">inputFileBig</a> constructor must be passed, in other cases use <a href="/constructor/inputFile">inputFile</a>.</p> +<ul> +<li><a href="/method/messages.sendMedia">messages.sendMedia</a> - Sends a media file to a chat</li> +<li><a href="/method/messages.uploadMedia">messages.uploadMedia</a> - Uploads a media file to a chat, without sending it, returning only a <a href="/type/MessageMedia">MessageMedia</a> constructor that can be used to later send the file to multiple chats, without reuploading it every time. </li> +<li><a href="/method/photos.uploadProfilePhoto">photos.uploadProfilePhoto</a> - Used to set a <a href="#uploading-profile-or-chat-pictures">profile or chat picture or video</a></li> +</ul> +<p>The file save operation may return one of the following <a href="/api/errors#400-bad-request">data input errors</a>:</p> +<ul> +<li>FILE_PARTS_INVALID: The number of file parts is invalid The value is not between 1 and 3,000.</li> +<li>FILE_PART_Х_MISSING: Part X (where X is a number) of the file is missing from storage. Try repeating the method call to resave the part.</li> +<li>MD5_CHECKSUM_INVALID: The file’s checksum did not match the <strong>md5_checksum</strong> parameter</li> +</ul> +<h4><a class="anchor" href="#albums-grouped-media" id="albums-grouped-media" name="albums-grouped-media"><i class="anchor-icon"></i></a>Albums, grouped media</h4> +<pre><code><a href='/constructor/inputMediaUploadedPhoto'>inputMediaUploadedPhoto</a>#1e287d04 flags:<a href='/type/%23'>#</a> file:<a href='/type/InputFile'>InputFile</a> stickers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputDocument'>InputDocument</a>> ttl_seconds:flags.1?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; +<a href='/constructor/inputMediaUploadedDocument'>inputMediaUploadedDocument</a>#5b38c6c1 flags:<a href='/type/%23'>#</a> nosound_video:flags.3?<a href='/constructor/true'>true</a> force_file:flags.4?<a href='/constructor/true'>true</a> file:<a href='/type/InputFile'>InputFile</a> thumb:flags.2?<a href='/type/InputFile'>InputFile</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> stickers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputDocument'>InputDocument</a>> ttl_seconds:flags.1?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; + +<a href='/constructor/inputSingleMedia'>inputSingleMedia</a>#1cc6e91f flags:<a href='/type/%23'>#</a> media:<a href='/type/InputMedia'>InputMedia</a> random_id:<a href='/type/long'>long</a> message:<a href='/type/string'>string</a> entities:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/InputSingleMedia'>InputSingleMedia</a>; + +---functions--- + +<a href='/method/messages.sendMultiMedia'>messages.sendMultiMedia</a>#cc0110cb flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> multi_media:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputSingleMedia'>InputSingleMedia</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Telegram allows grouping photos into <a href="https://telegram.org/blog/albums-saved-messages">albums</a> and generic files (audio, docuemnts) into media groups. </p> +<p>To do this, <a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a> is used, wrapping each <a href="/type/InputMedia">InputMedia</a> constructor (uploaded or pre-existing, maximum 10 per media group) into an <a href="/constructor/inputSingleMedia">inputSingleMedia</a> constructor, optionally providing a custom per-file caption in <code>message</code>. </p> +<p>For photo albums, clients should display an album caption only if exactly one photo in the group has a caption, otherwise no album caption should be displayed, and only when viewing in detail a specific photo of the group the caption should be shown.<br> +Other grouped media can display a caption under each file. </p> +<h4><a class="anchor" href="#re-using-pre-uploaded-files" id="re-using-pre-uploaded-files" name="re-using-pre-uploaded-files"><i class="anchor-icon"></i></a>Re-using pre-uploaded files</h4> +<pre><code><a href='/constructor/document'>document</a>#1e87342b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumbs:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_thumbs:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/Document'>Document</a>; + +---functions--- + +<a href='/method/messages.getDocumentByHash'>messages.getDocumentByHash</a>#338e2464 sha256:<a href='/type/bytes'>bytes</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/Document'>Document</a>;</code></pre> +<p>For some types of documents like GIFs, <a href="/method/messages.getDocumentByHash">messages.getDocumentByHash</a> can be used to search for the document on Telegram servers. +The SHA256 hash of the file is computed, and it is passed along with the file's mime type and size to the method: if the file type is correct and the file is found, a <a href="/constructor/document">document</a> is returned.</p> +<h3><a class="anchor" href="#uploading-profile-or-chat-pictures" id="uploading-profile-or-chat-pictures" name="uploading-profile-or-chat-pictures"><i class="anchor-icon"></i></a>Uploading profile or chat pictures</h3> +<pre><code><a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>; + +<a href='/constructor/photos.photo'>photos.photo</a>#20212ca8 photo:<a href='/type/Photo'>Photo</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/photos.Photo'>photos.Photo</a>; + +<a href='/constructor/inputPhoto'>inputPhoto</a>#3bb3b94a id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> = <a href='/type/InputPhoto'>InputPhoto</a>; + +<a href='/constructor/inputFile'>inputFile</a>#f52ff27f id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> name:<a href='/type/string'>string</a> md5_checksum:<a href='/type/string'>string</a> = <a href='/type/InputFile'>InputFile</a>; + +<a href='/constructor/inputChatUploadedPhoto'>inputChatUploadedPhoto</a>#c642724e flags:<a href='/type/%23'>#</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> = <a href='/type/InputChatPhoto'>InputChatPhoto</a>; +<a href='/constructor/inputChatPhoto'>inputChatPhoto</a>#8953ad37 id:<a href='/type/InputPhoto'>InputPhoto</a> = <a href='/type/InputChatPhoto'>InputChatPhoto</a>; + +---functions--- + +<a href='/method/photos.updateProfilePhoto'>photos.updateProfilePhoto</a>#72d4742c id:<a href='/type/InputPhoto'>InputPhoto</a> = <a href='/type/photos.Photo'>photos.Photo</a>; +<a href='/method/photos.uploadProfilePhoto'>photos.uploadProfilePhoto</a>#89f30f69 flags:<a href='/type/%23'>#</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> = <a href='/type/photos.Photo'>photos.Photo</a>; + +<a href='/method/messages.editChatPhoto'>messages.editChatPhoto</a>#35ddd674 chat_id:<a href='/type/long'>long</a> photo:<a href='/type/InputChatPhoto'>InputChatPhoto</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/channels.editPhoto'>channels.editPhoto</a>#f12e57c9 channel:<a href='/type/InputChannel'>InputChannel</a> photo:<a href='/type/InputChatPhoto'>InputChatPhoto</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>User profile pictures can be uploaded using the <a href="/method/photos.updateProfilePhoto">photos.uploadProfilePhoto</a> method: the actual profile picture has to be <a href="#uploading-files">uploaded as for normal files</a>.<br> +<a href="/method/photos.updateProfilePhoto">photos.uploadProfilePhoto</a> can also be used to reupload previously uploaded profile pictures. </p> +<h4><a class="anchor" href="#animated-profile-pictures" id="animated-profile-pictures" name="animated-profile-pictures"><i class="anchor-icon"></i></a>Animated profile pictures</h4> +<p>Animated profile pictures are also supported, by populating the <code>video</code> constructor: square MPEG4 videos up to <code>1080x1080</code> are supported, <code>800x800</code> is the recommended resolution.<br> +The <code>video_start_ts</code> is a floating point UNIX timestamp in seconds, indicating the frame of the video that should be used as static preview. </p> +<p><a href="/api/channel">Chat, channel and supergroup</a> profile photos and videos can be uploaded using <a href="/method/messages.editChatPhoto">messages.editChatPhoto</a> (<a href="/api/channel">legacy groups</a>) or <a href="/method/channels.editPhoto">channels.editPhoto</a> (<a href="/api/channel">channels, supergroups</a>).<br> +Use the <a href="/constructor/inputChatPhoto">inputChatPhoto</a> to reuse previously uploaded profile pictures. </p> +<h3><a class="anchor" href="#downloading-files" id="downloading-files" name="downloading-files"><i class="anchor-icon"></i></a>Downloading files</h3> +<p>There are methods available to download files which have been successfully uploaded. The schema of the types and methods used is presented below:</p> +<pre><code><a href='/constructor/upload.file'>upload.file</a>#96a18d5 type:<a href='/type/storage.FileType'>storage.FileType</a> mtime:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/upload.File'>upload.File</a>; +<a href='/constructor/upload.fileCdnRedirect'>upload.fileCdnRedirect</a>#f18cda44 dc_id:<a href='/type/int'>int</a> file_token:<a href='/type/bytes'>bytes</a> encryption_key:<a href='/type/bytes'>bytes</a> encryption_iv:<a href='/type/bytes'>bytes</a> file_hashes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/FileHash'>FileHash</a>> = <a href='/type/upload.File'>upload.File</a>; + +<a href='/constructor/storage.fileUnknown'>storage.fileUnknown</a>#aa963b05 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileJpeg'>storage.fileJpeg</a>#7efe0e = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileGif'>storage.fileGif</a>#cae1aadf = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.filePng'>storage.filePng</a>#a4f63c0 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMp3'>storage.fileMp3</a>#528a0677 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMov'>storage.fileMov</a>#4b09ebbc = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.filePartial'>storage.filePartial</a>#40bc6f52 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMp4'>storage.fileMp4</a>#b3cea0e4 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileWebp'>storage.fileWebp</a>#1081464c = <a href='/type/storage.FileType'>storage.FileType</a>; + +---functions--- + +<a href='/method/upload.getFile'>upload.getFile</a>#b15a9afc flags:<a href='/type/%23'>#</a> precise:flags.0?<a href='/constructor/true'>true</a> cdn_supported:flags.1?<a href='/constructor/true'>true</a> location:<a href='/type/InputFileLocation'>InputFileLocation</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/upload.File'>upload.File</a>;</code></pre> +<p>Any file can be downloaded by calling <a href="/method/upload.getFile">upload.getFile</a>. +The data for the input parameter of the <a href="/type/InputFileLocation">InputFileLocation</a> type is generated as follows:</p> +<pre><code><a href='/constructor/inputFileLocation'>inputFileLocation</a>#dfdaabe1 volume_id:<a href='/type/long'>long</a> local_id:<a href='/type/int'>int</a> secret:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputEncryptedFileLocation'>inputEncryptedFileLocation</a>#f5235d55 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputDocumentFileLocation'>inputDocumentFileLocation</a>#bad07584 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> thumb_size:<a href='/type/string'>string</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputSecureFileLocation'>inputSecureFileLocation</a>#cbc7ee28 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputTakeoutFileLocation'>inputTakeoutFileLocation</a>#29be5899 = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputPhotoFileLocation'>inputPhotoFileLocation</a>#40181ffe id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> thumb_size:<a href='/type/string'>string</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputPhotoLegacyFileLocation'>inputPhotoLegacyFileLocation</a>#d83466f3 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> volume_id:<a href='/type/long'>long</a> local_id:<a href='/type/int'>int</a> secret:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputPeerPhotoFileLocation'>inputPeerPhotoFileLocation</a>#37257e99 flags:<a href='/type/%23'>#</a> big:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> photo_id:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputStickerSetThumb'>inputStickerSetThumb</a>#9d84f3db stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> thumb_version:<a href='/type/int'>int</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputGroupCallStream'>inputGroupCallStream</a>#598a92a flags:<a href='/type/%23'>#</a> call:<a href='/type/InputGroupCall'>InputGroupCall</a> time_ms:<a href='/type/long'>long</a> scale:<a href='/type/int'>int</a> video_channel:flags.0?<a href='/type/int'>int</a> video_quality:flags.0?<a href='/type/int'>int</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; + +<a href='/constructor/inputStickerSetEmpty'>inputStickerSetEmpty</a>#ffb62b95 = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetID'>inputStickerSetID</a>#9de7a269 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetShortName'>inputStickerSetShortName</a>#861cc8a0 short_name:<a href='/type/string'>string</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetAnimatedEmoji'>inputStickerSetAnimatedEmoji</a>#28703c8 = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetDice'>inputStickerSetDice</a>#e67f520e emoticon:<a href='/type/string'>string</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetAnimatedEmojiAnimations'>inputStickerSetAnimatedEmojiAnimations</a>#cde3739 = <a href='/type/InputStickerSet'>InputStickerSet</a>; + +<a href='/constructor/inputPeerSelf'>inputPeerSelf</a>#7da07ec9 = <a href='/type/InputPeer'>InputPeer</a>; +<a href='/constructor/inputPeerChat'>inputPeerChat</a>#35a95cb9 chat_id:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>; +<a href='/constructor/inputPeerUser'>inputPeerUser</a>#dde8a54c user_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>; +<a href='/constructor/inputPeerChannel'>inputPeerChannel</a>#27bcbbfc channel_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>; + +<a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>; +<a href='/constructor/document'>document</a>#1e87342b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumbs:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_thumbs:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/Document'>Document</a>; + +<a href='/constructor/photoSize'>photoSize</a>#75c78e60 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoCachedSize'>photoCachedSize</a>#21e1ad6 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>; + +<a href='/constructor/chatPhoto'>chatPhoto</a>#1c6e1c11 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> stripped_thumb:flags.1?<a href='/type/bytes'>bytes</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/ChatPhoto'>ChatPhoto</a>; +<a href='/constructor/userProfilePhoto'>userProfilePhoto</a>#82d1f706 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> stripped_thumb:flags.1?<a href='/type/bytes'>bytes</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/UserProfilePhoto'>UserProfilePhoto</a>;</code></pre> +<ul> +<li> +<p>For photos, <a href="/constructor/inputPhotoFileLocation">inputPhotoFileLocation</a> is used:</p> +<ul> +<li><code>id</code>, <code>file_reference</code> and <code>access_hash</code> taken from the <a href="/constructor/photo">photo</a> constructor</li> +<li><code>thumb_size</code> taken from the <code>type</code> field of the desired <a href="/type/PhotoSize">PhotoSize</a> of the <a href="/constructor/photo">photo</a></li> +</ul> +</li> +<li> +<p>For profile pictures of users, channels, supergroups and groups, <a href="/constructor/inputPeerPhotoFileLocation">inputPeerPhotoFileLocation</a> has to be used:</p> +<ul> +<li><code>peer</code> is the identifier of the peer whose photo we want to download</li> +<li><code>big</code> is used to choose whether to download the full-resolution picture, or just the thumbnail</li> +<li><code>photo_id</code> is extracted from the <a href="/constructor/chatPhoto">chatPhoto</a> or <a href="/constructor/userProfilePhoto">userProfilePhoto</a> of the desired profile photo</li> +</ul> +</li> +<li> +<p>For documents, <a href="/constructor/inputDocumentFileLocation">inputDocumentFileLocation</a> is used:</p> +<ul> +<li><code>id</code>, <code>file_reference</code> and <code>access_hash</code> taken from the <a href="/constructor/document">document</a> constructor</li> +<li>If downloading the thumbnail of a document, <code>thumb_size</code> should be taken from the <code>type</code> field of the desired <a href="/type/PhotoSize">PhotoSize</a> of the <a href="/constructor/photo">photo</a>; otherwise, provide an empty string.</li> +</ul> +</li> +<li> +<p>For previews of sticker sets, <a href="/constructor/inputStickerSetThumb">inputStickerSetThumb</a> is used (note: to download stickers and previews of stickers use the document method described above for documents):</p> +<ul> +<li><code>stickerset</code> is set to the <a href="/type/InputStickerSet">InputStickerSet</a> constructor generated from <a href="/constructor/stickerSet">stickerSet</a></li> +<li><code>thumb_version</code> is copied from the same field in <a href="/constructor/stickerSet">stickerSet</a></li> +</ul> +</li> +<li> +<p>For encrypted secret chat and telegram passport documents, respectively <a href="/constructor/inputEncryptedFileLocation">inputEncryptedFileLocation</a> and <a href="/constructor/inputSecureFileLocation">inputSecureFileLocation</a> have to be used, with parameters extracted from <a href="/constructor/encryptedFile">encryptedFile</a> and <a href="/constructor/secureFile">secureFile</a> (<a href="/passport">passport docs</a>).</p> +</li> +<li> +<p>For livestream chunks, <a href="/constructor/inputGroupCallStream">inputGroupCallStream</a> is used:</p> +<ul> +<li><code>call</code> contains the related group call ID+access hash, taken from the <a href="/constructor/groupCall">groupCall</a> constructor.</li> +<li><code>time_ms</code> specifies the timestamp to fetch</li> +<li><code>scale</code> specifies the duration of the video segment to fetch in milliseconds, by bitshifting <code>1000</code> to the right <code>scale</code> times: <code>duration_ms := 1000 >> scale</code></li> +<li><code>video_channel</code> specifies the video channel to fetch</li> +<li><code>video_quality</code> specifies the selected video quality (0 = lowest, 1 = medium, 2 = best)</li> +</ul> +</li> +<li> +<p>For old <strong>deprecated</strong> photos, if the client has cached some old fileLocations with the <strong>deprecated</strong> <code>secret</code> identifier, <a href="/constructor/inputFileLocation">inputFileLocation</a> or <a href="/constructor/inputPhotoLegacyFileLocation">inputPhotoLegacyFileLocation</a> is used (this is mainly used for backwards compatiblity with bot API file IDs, all user clients must use the modern <a href="/constructor/inputPhotoFileLocation">inputPhotoFileLocation</a> file IDs): </p> +<ul> +<li>All fields are taken from the previously cached fileLocation except for <code>file_reference</code>, <code>access_hash</code> and <code>id</code>, which are taken from the <a href="/constructor/photo">photo</a> constructor (the last two fields are used only if available, in which case <a href="/constructor/inputPhotoLegacyFileLocation">inputPhotoLegacyFileLocation</a> is used instead of <a href="/constructor/inputFileLocation">inputFileLocation</a>).</li> +</ul> +</li> +</ul> +<p>The size of each file in bytes is available, which makes it possible to download the file in parts using the parameters <strong>offset</strong> and <strong>limit</strong>, similar to the way files are uploaded.</p> +<p>If <strong>precise</strong> flag is not specified, then </p> +<ul> +<li>The parameter <strong>offset</strong> must be divisible by 4 KB.</li> +<li>The parameter <strong>limit</strong> must be divisible by 4 KB.</li> +<li>1048576 (1 MB) must be divisible by <strong>limit</strong>.</li> +</ul> +<p>If <strong>precise</strong> is specified, then</p> +<ul> +<li>The parameter <strong>offset</strong> must be divisible by 1 KB.</li> +<li>The parameter <strong>limit</strong> must be divisible by 1 KB.</li> +<li><strong>limit</strong> must not exceed 1048576 (1 MB).</li> +</ul> +<p>In any case the requested part should be within one 1 MB chunk from the beginning of the file, i. e.</p> +<ul> +<li><strong>offset</strong> / (1024 * 1024) == (<strong>offset</strong> + <strong>limit</strong> - 1) / (1024 * 1024).</li> +</ul> +<p>The file download operation may return a <code>FILE_REFERENCE_EXPIRED</code> error (or another error starting with <code>FILE_REFERENCE_</code>): in this case, the <code>file_reference</code> field of the input location must be <a href="/api/file_reference">refreshed</a>. +The file download operation may return an <a href="/constructor/upload.fileCdnRedirect">upload.fileCdnRedirect</a> constructor: in this case, <a href="/cdn">these</a> instructions must be followed for downloading CDN files. +The file download operation may also return one of the following <a href="/api/errors#400-bad-request">data input errors</a>:</p> +<ul> +<li>FILE_ID_INVALID: The file address is invalid</li> +<li>OFFSET_INVALID: The <strong>offset</strong> value is invalid</li> +<li>LIMIT_INVALID: The <strong>limit</strong> value is invalid</li> +<li>FILE_MIGRATE_X: The file is in the datacenter No. X</li> +</ul> +<h4><a class="anchor" href="#verifying-downloaded-chunks" id="verifying-downloaded-chunks" name="verifying-downloaded-chunks"><i class="anchor-icon"></i></a>Verifying downloaded chunks</h4> +<pre><code><a href='/constructor/fileHash'>fileHash</a>#6242c773 offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/FileHash'>FileHash</a>; + +---functions--- + +<a href='/method/upload.getFileHashes'>upload.getFileHashes</a>#c7025931 location:<a href='/type/InputFileLocation'>InputFileLocation</a> offset:<a href='/type/int'>int</a> = <a href='/type/Vector%20t'>Vector</a><<a href='/type/FileHash'>FileHash</a>>;</code></pre> +<p>In order to confirm the integrity of the downloaded file, clients are recommended to verify hashes for each downloaded part, as for <a href="/cdn">CDN DCs</a>. +<a href="/method/upload.getFileHashes">upload.getFileHashes</a> contain <a href="/type/FileHash">FileHash</a> constructors. Each of these constructors contains the SHA-256 hash of a part of the file that starts with <code>offset</code> and takes <code>limit</code> bytes.</p> +<p>Before saving each portion of the data received from the DC into the file, the client can confirm that its hash matches the hash that was received from the master DC. If missing a hash for any file part, client developers must use the <a href="/method/upload.getFileHashes">upload.getFileHashes</a> method to obtain the missing hash.</p> +<h4><a class="anchor" href="#handling-audio-video-and-vector-previews" id="handling-audio-video-and-vector-previews" name="handling-audio-video-and-vector-previews"><i class="anchor-icon"></i></a>Handling audio, video and vector previews</h4> +<p>Schema:</p> +<pre><code><a href='/constructor/photoSizeEmpty'>photoSizeEmpty</a>#e17e23c type:<a href='/type/string'>string</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoSize'>photoSize</a>#75c78e60 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoCachedSize'>photoCachedSize</a>#21e1ad6 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoStrippedSize'>photoStrippedSize</a>#e0b0bc2e type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoSizeProgressive'>photoSizeProgressive</a>#fa3efb95 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoPathSize'>photoPathSize</a>#d8214d41 type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>; + +<a href='/constructor/videoSize'>videoSize</a>#de33b094 flags:<a href='/type/%23'>#</a> type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> video_start_ts:flags.0?<a href='/type/double'>double</a> = <a href='/type/VideoSize'>VideoSize</a>; + +<a href='/constructor/document'>document</a>#1e87342b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumbs:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_thumbs:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/Document'>Document</a>; +<a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>; + +<a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>;</code></pre> +<p>Telegram attaches a vector of thumbnails with reduced resolution to all uploaded media.<br> +The server also generates a trimmed and scaled down video preview for videos, GIFs and animated profile pictures. </p> +<h4><a class="anchor" href="#image-thumbnail-types" id="image-thumbnail-types" name="image-thumbnail-types"><i class="anchor-icon"></i></a>Image thumbnail types</h4> +<p>Each photo preview has a specific <code>type</code>, indicating the resolution and image transform that was applied server-side. </p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Image filter</th> +<th>Size</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>s</code></td> +<td>box</td> +<td>100x100</td> +</tr> +<tr> +<td><code>m</code></td> +<td>box</td> +<td>320x320</td> +</tr> +<tr> +<td><code>x</code></td> +<td>box</td> +<td>800x800</td> +</tr> +<tr> +<td><code>y</code></td> +<td>box</td> +<td>1280x1280</td> +</tr> +<tr> +<td><code>w</code></td> +<td>box</td> +<td>2560x2560</td> +</tr> +<tr> +<td><code>a</code></td> +<td>crop</td> +<td>160x160</td> +</tr> +<tr> +<td><code>b</code></td> +<td>crop</td> +<td>320x320</td> +</tr> +<tr> +<td><code>c</code></td> +<td>crop</td> +<td>640x640</td> +</tr> +<tr> +<td><code>d</code></td> +<td>crop</td> +<td>1280x1280</td> +</tr> +</tbody> +</table> +<p>Special types:</p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Image filter</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>i</code></td> +<td>strip</td> +</tr> +<tr> +<td><code>j</code></td> +<td>outline</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#stripped-thumbnails" id="stripped-thumbnails" name="stripped-thumbnails"><i class="anchor-icon"></i></a>Stripped thumbnails</h4> +<pre><code><a href='/constructor/photoStrippedSize'>photoStrippedSize</a>#e0b0bc2e type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;</code></pre> +<p>A <a href="/constructor/photoStrippedSize">photoStrippedSize</a> (with type <code>i</code>) is an extremely low-res thumbnail, embedded directly inside media location objects.<br> +It should be shown to the user in chat message previews, or while still downloading the most appropriately sized <a href="/constructor/photoSize">photoSize</a> through the media DCs as <a href="#downloading-files">described above</a>. </p> +<p>The stripped <code>bytes</code> payload should be inflated to a JPG payload as seen <a href="https://github.com/telegramdesktop/tdesktop/blob/1757dd856b84d23f83d4e562c94dde825f6eb40c/Telegram/SourceFiles/ui/image/image.cpp#L43">here »</a>.</p> +<h4><a class="anchor" href="#vector-thumbnails" id="vector-thumbnails" name="vector-thumbnails"><i class="anchor-icon"></i></a>Vector thumbnails</h4> +<pre><code><a href='/constructor/photoPathSize'>photoPathSize</a>#d8214d41 type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;</code></pre> +<p>Messages with <a href="/animated_stickers">animated stickers</a> can have a compressed svg (< 300 bytes) to show the outline of the sticker before fetching the actual lottie animation. +Animated sticker outlines will have a <code>j</code> type <a href="/constructor/photoPathSize">photoPathSize</a> thumbnail. </p> +<p>This specific vector thumbnail consists in an <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths">SVG path</a>, specially encoded to save space.<br> +This path will be the outline of the animated sticker, and should be shown to the user while downloading the actual sticker. </p> +<p>As for stripped sizes, the payload should be inflated using the following algorithm:</p> +<pre><code>encoded := photoPathSize.bytes + +lookup := "AACAAAAHAAALMAAAQASTAVAAAZaacaaaahaaalmaaaqastava.az0123456789-," + +path := "M" + +len := strlen(encoded) +for (i = 0; i < len; i++) { + num := ord(encoded[i]) + if (num >= 128 + 64) { + path += lookup[num - 128 - 64] + } else { + if (num >= 128) { + path += ',' + } else if (num >= 64) { + path += '-' + } + path += itoa(num & 63) + } +} +path += "z"</code></pre> +<p><code>path</code> will contain the actual SVG path that can be directly inserted in the <code>d</code> attribute of an <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path">svg <path> element</a>: </p> +<pre><code><?xml version="1.0" encoding="utf-8"?> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" + viewBox="0 0 512 512" xml:space="preserve"> +<path d="{$path}"/> +</svg></code></pre> +<h4><a class="anchor" href="#video-types" id="video-types" name="video-types"><i class="anchor-icon"></i></a>Video types</h4> +<pre><code><a href='/constructor/videoSize'>videoSize</a>#de33b094 flags:<a href='/type/%23'>#</a> type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> video_start_ts:flags.0?<a href='/type/double'>double</a> = <a href='/type/VideoSize'>VideoSize</a>;</code></pre> +<p>A <a href="/constructor/videoSize">videoSize</a> constructor is typically used for <a href="#animated-profile-pictures">animated profile pictures</a> and video previews.</p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Description</th> +<th>Format</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>u</code></td> +<td>Animated profile picture</td> +<td>MPEG4</td> +</tr> +<tr> +<td><code>v</code></td> +<td>Video preview</td> +<td>MPEG4</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#downloading-webfiles" id="downloading-webfiles" name="downloading-webfiles"><i class="anchor-icon"></i></a>Downloading webfiles</h3> +<p>Remote HTTP files sent by inline bots <a href="/type/BotInlineResult">in response to inline queries</a> and in other places are represented by <a href="/type/WebDocument">WebDocument</a> constructors. +When forwarding such remote HTTP files, they should be sent using <a href="/type/InputMedia">external InputMedia constructors</a>. +Remote HTTP files can only be downloaded directly by the client if contained in a <a href="/constructor/webDocumentNoProxy">webDocumentNoProxy</a> constructor: in this case, the file is deemed safe to download (this is the case for HTTPS files from certain trusted domains).</p> +<p>However, if the remote file is contained in a <a href="/constructor/webDocument">webDocument</a>, to avoid leaking sensitive information the file must be downloaded through telegram's servers. +This can be done in a manner similar to <a href="#downloading-files">normal files</a>, with the difference that <a href="/method/upload.getWebFile">upload.getWebFile</a> must be used, instead.</p> +<pre><code><a href='/constructor/upload.webFile'>upload.webFile</a>#21e753bc size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> file_type:<a href='/type/storage.FileType'>storage.FileType</a> mtime:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/upload.WebFile'>upload.WebFile</a>; + +<a href='/constructor/storage.fileUnknown'>storage.fileUnknown</a>#aa963b05 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileJpeg'>storage.fileJpeg</a>#7efe0e = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileGif'>storage.fileGif</a>#cae1aadf = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.filePng'>storage.filePng</a>#a4f63c0 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMp3'>storage.fileMp3</a>#528a0677 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMov'>storage.fileMov</a>#4b09ebbc = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.filePartial'>storage.filePartial</a>#40bc6f52 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMp4'>storage.fileMp4</a>#b3cea0e4 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileWebp'>storage.fileWebp</a>#1081464c = <a href='/type/storage.FileType'>storage.FileType</a>; + + ---functions--- + +<a href='/method/upload.getWebFile'>upload.getWebFile</a>#24e6818d location:<a href='/type/InputWebFileLocation'>InputWebFileLocation</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/upload.WebFile'>upload.WebFile</a>;</code></pre> +<p>The <a href="/type/InputWebFileLocation">InputWebFileLocation</a> constructor is generated as follows.</p> +<pre><code><a href='/constructor/inputWebFileLocation'>inputWebFileLocation</a>#c239d686 url:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputWebFileLocation'>InputWebFileLocation</a>; +<a href='/constructor/inputWebFileGeoPointLocation'>inputWebFileGeoPointLocation</a>#9f2221c9 geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> access_hash:<a href='/type/long'>long</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> zoom:<a href='/type/int'>int</a> scale:<a href='/type/int'>int</a> = <a href='/type/InputWebFileLocation'>InputWebFileLocation</a>; + +<a href='/constructor/webDocument'>webDocument</a>#1c570ed1 url:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/WebDocument'>WebDocument</a>; + +<a href='/constructor/inputGeoPoint'>inputGeoPoint</a>#48222faf flags:<a href='/type/%23'>#</a> lat:<a href='/type/double'>double</a> long:<a href='/type/double'>double</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/InputGeoPoint'>InputGeoPoint</a>; + +<a href='/constructor/geoPoint'>geoPoint</a>#b2a2f663 flags:<a href='/type/%23'>#</a> long:<a href='/type/double'>double</a> lat:<a href='/type/double'>double</a> access_hash:<a href='/type/long'>long</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/GeoPoint'>GeoPoint</a>;</code></pre> +<ul> +<li><a href="/constructor/inputWebFileLocation">inputWebFileLocation</a> is simply generated by taking the <code>url</code> and <code>access_hash</code> fields of the <a href="/constructor/webDocument">webDocument</a> constructor.</li> +<li><a href="/constructor/inputWebFileGeoPointLocation">inputWebFileGeoPointLocation</a> is used to download a server-generated image with the map preview from a <a href="/constructor/geoPoint">geoPoint</a>.<ul> +<li><code>geo_point</code> is generated from the <code>lat</code>, <code>long</code> <code>accuracy_radius</code> parameters of the <a href="/constructor/geoPoint">geoPoint</a></li> +<li><code>access_hash</code> is the access hash of the <a href="/constructor/geoPoint">geoPoint</a></li> +<li><code>w</code> - Map width in pixels before applying scale; 16-1024</li> +<li><code>h</code> - Map height in pixels before applying scale; 16-1024</li> +<li><code>zoom</code> - Map zoom level; 13-20</li> +<li><code>scale</code> - Map scale; 1-3</li> +</ul> +</li> +</ul> +<h3><a class="anchor" href="#general-considerations" id="general-considerations" name="general-considerations"><i class="anchor-icon"></i></a>General Considerations</h3> +<p>It is recommended that large queries (<a href="/method/upload.getFile">upload.getFile</a>, <a href="/method/upload.saveFilePart">upload.saveFilePart</a>, <a href="/method/upload.getWebFile">upload.getWebFile</a>) be handled through a separate session and a separate connection, in which no methods other than these should be executed. If this is done, then data transfer will cause less interference with <a href="/api/updates">getting updates</a> and other method calls.</p> +<h3><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h3> +<h4><a class="anchor" href="#handling-file-references" id="handling-file-references" name="handling-file-references"><i class="anchor-icon"></i></a><a href="/api/file_reference">Handling file references</a></h4> +<p>How to handle file references.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/folders.html b/data/core.telegram.org/api/folders.html new file mode 100644 index 0000000000..e53ea25ae5 --- /dev/null +++ b/data/core.telegram.org/api/folders.html @@ -0,0 +1,179 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Folders</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists."> + <meta property="og:title" content="Folders"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists."> + <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?215" 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/folders" >Folders</a></li></ul></div> + <h1 id="dev_page_title">Folders</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.<br> +In the API, folders are called "dialog filters"; in the UI, they are typically represented as tabs. </p> +<p>Schema:</p> +<pre><code><a href='/constructor/dialogFilter'>dialogFilter</a>#7438f7e8 flags:<a href='/type/%23'>#</a> contacts:flags.0?<a href='/constructor/true'>true</a> non_contacts:flags.1?<a href='/constructor/true'>true</a> groups:flags.2?<a href='/constructor/true'>true</a> broadcasts:flags.3?<a href='/constructor/true'>true</a> bots:flags.4?<a href='/constructor/true'>true</a> exclude_muted:flags.11?<a href='/constructor/true'>true</a> exclude_read:flags.12?<a href='/constructor/true'>true</a> exclude_archived:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> title:<a href='/type/string'>string</a> emoticon:flags.25?<a href='/type/string'>string</a> pinned_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputPeer'>InputPeer</a>> include_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputPeer'>InputPeer</a>> exclude_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputPeer'>InputPeer</a>> = <a href='/type/DialogFilter'>DialogFilter</a>; + +<a href='/constructor/dialogFilterSuggested'>dialogFilterSuggested</a>#77744d4a filter:<a href='/type/DialogFilter'>DialogFilter</a> description:<a href='/type/string'>string</a> = <a href='/type/DialogFilterSuggested'>DialogFilterSuggested</a>; + +<a href='/constructor/updateDialogFilter'>updateDialogFilter</a>#26ffde7d flags:<a href='/type/%23'>#</a> id:<a href='/type/int'>int</a> filter:flags.0?<a href='/type/DialogFilter'>DialogFilter</a> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updateDialogFilterOrder'>updateDialogFilterOrder</a>#a5d72105 order:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updateDialogFilters'>updateDialogFilters</a>#3504914f = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getDialogFilters'>messages.getDialogFilters</a>#f19ed96d = <a href='/type/Vector%20t'>Vector</a><<a href='/type/DialogFilter'>DialogFilter</a>>; +<a href='/method/messages.getSuggestedDialogFilters'>messages.getSuggestedDialogFilters</a>#a29cd42c = <a href='/type/Vector%20t'>Vector</a><<a href='/type/DialogFilterSuggested'>DialogFilterSuggested</a>>; +<a href='/method/messages.updateDialogFilter'>messages.updateDialogFilter</a>#1ad4a04a flags:<a href='/type/%23'>#</a> id:<a href='/type/int'>int</a> filter:flags.0?<a href='/type/DialogFilter'>DialogFilter</a> = <a href='/type/Bool'>Bool</a>; +<a href='/method/messages.updateDialogFiltersOrder'>messages.updateDialogFiltersOrder</a>#c563c1e4 order:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Bool'>Bool</a>; + +<a href='/method/help.getAppConfig'>help.getAppConfig</a>#98914110 = <a href='/type/JSONValue'>JSONValue</a>;</code></pre> +<h3><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a>Folders</h3> +<p>On startup, clients call: </p> +<ul> +<li><a href="/method/messages.getDialogFilters">messages.getDialogFilters</a> to fetch a list of previously configured folders.</li> +<li><a href="/method/messages.getSuggestedDialogFilters">messages.getSuggestedDialogFilters</a> to fetch a list of suggested folder combinations.</li> +<li><a href="/method/help.getAppConfig">help.getAppConfig</a> to fetch app-specific configuration parameters. </li> +</ul> +<p>The boolean under the <code>dialog_filters_tooltip</code> JSON key in the result of <a href="/method/help.getAppConfig">help.getAppConfig</a> can be used to determine whether a folder tooltip should be presented to the user right away.<br> +The UI should then show a list of suggested folder combinations. </p> +<p>Once configuration is finished, apps call <a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a> to create or update existing folders.<br> +As per the <a href="/constructor/dialogFilter">dialogFilter</a> constructor, folders have multiple flags that can be combined to determine which chats should be included in (or excluded from) the folder.<br> +Folders can also have unlimited pinned chats, as determined by the <code>pinned_peers</code> field.</p> +<p>To reorder existing folders, <a href="/method/messages.updateDialogFiltersOrder">messages.updateDialogFiltersOrder</a> should be used with the IDs of the various dialog filters.</p> +<p>To delete folders, use <a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a> without populating the <code>filter</code> flag field. </p> +<p>Clients can receive <a href="/constructor/updateDialogFilter">updateDialogFilter</a>, <a href="/constructor/updateDialogFilterOrder">updateDialogFilterOrder</a> updates with new filter information, generated by other clients when modifying folder info.<br> +Clients can also receive <a href="/constructor/updateDialogFilters">updateDialogFilters</a>, in which case folder info should be refetched manually using <a href="/method/messages.getDialogFilters">messages.getDialogFilters</a>.</p> +<h3><a class="anchor" href="#peer-folders" id="peer-folders" name="peer-folders"><i class="anchor-icon"></i></a>Peer folders</h3> +<p>The API also has another method for identifying groups of peers, typically used only by archived chats.</p> +<p>Schema:</p> +<pre><code><a href='/constructor/inputDialogPeer'>inputDialogPeer</a>#fcaafeb7 peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/InputDialogPeer'>InputDialogPeer</a>; +<a href='/constructor/inputDialogPeerFolder'>inputDialogPeerFolder</a>#64600527 folder_id:<a href='/type/int'>int</a> = <a href='/type/InputDialogPeer'>InputDialogPeer</a>; + +<a href='/constructor/dialogPeer'>dialogPeer</a>#e56dbf05 peer:<a href='/type/Peer'>Peer</a> = <a href='/type/DialogPeer'>DialogPeer</a>; +<a href='/constructor/dialogPeerFolder'>dialogPeerFolder</a>#514519e2 folder_id:<a href='/type/int'>int</a> = <a href='/type/DialogPeer'>DialogPeer</a>; + +<a href='/constructor/updateFolderPeers'>updateFolderPeers</a>#19360dc0 folder_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/FolderPeer'>FolderPeer</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/updates'>updates</a>#74ae4240 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +---functions--- + +<a href='/method/folders.editPeerFolders'>folders.editPeerFolders</a>#6847d0ab folder_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputFolderPeer'>InputFolderPeer</a>> = <a href='/type/Updates'>Updates</a>; +<a href='/method/folders.deleteFolder'>folders.deleteFolder</a>#1c295881 folder_id:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>API peer folders are typically used only by <a href="https://telegram.org/blog/archive-and-new-design">archived chats</a>, and are really handy for distinguishing groups of peers, since most peer-related constructors (updates, chat info) will contain the <code>folder_id</code> assigned the the specified chat. </p> +<p>In Telegram apps, API peer folders are used only to implement the chat archive, identified by <code>folder_id</code> <code>1</code>; all other peers are in <code>folder_id</code> <code>0</code> by default; no other <code>folder_id</code> is allowed at the moment.</p> +<ul> +<li><a href="/method/folders.editPeerFolders">folders.editPeerFolders</a> can be used to add and remove peers from peer folders.</li> +<li><a href="/method/folders.deleteFolder">folders.deleteFolder</a> can be used to delete peer folders, moving all peers previously present in that folder to the default <code>0</code> folder.</li> +</ul> +<p>Both methods return an <a href="/constructor/updates">updates</a> constructor, containing a single <a href="/constructor/updateFolderPeers">updateFolderPeers</a> with the new <code>folder_id</code> of moved peers.<br> +Clients can also receive <a href="/constructor/updateFolderPeers">updateFolderPeers</a> as a normal <a href="/api/updates">update</a>, generated by other clients when modifying peer folders.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/import.html b/data/core.telegram.org/api/import.html new file mode 100644 index 0000000000..c087e55134 --- /dev/null +++ b/data/core.telegram.org/api/import.html @@ -0,0 +1,173 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Imported messages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows importing messages and media from foreign chat apps."> + <meta property="og:title" content="Imported messages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows importing messages and media from foreign chat apps."> + <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?215" 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/import" >Imported messages</a></li></ul></div> + <h1 id="dev_page_title">Imported messages</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows importing messages and media from foreign chat apps.</p> +<blockquote> +<p>Note: This article is intended for MTProto API developers. If you're looking for a way to move history from other chat apps into Telegram, check out the related <a href="https://telegram.org/blog/move-history">Telegram blog post</a>.</p> +</blockquote> +<h3><a class="anchor" href="#1-validate-the-chat-export-file" id="1-validate-the-chat-export-file" name="1-validate-the-chat-export-file"><i class="anchor-icon"></i></a>1. Validate the chat export file</h3> +<pre><code><a href='/constructor/messages.historyImportParsed'>messages.historyImportParsed</a>#5e0fb7b9 flags:<a href='/type/%23'>#</a> pm:flags.0?<a href='/constructor/true'>true</a> group:flags.1?<a href='/constructor/true'>true</a> title:flags.2?<a href='/type/string'>string</a> = <a href='/type/messages.HistoryImportParsed'>messages.HistoryImportParsed</a>; + +---functions--- + +<a href='/method/messages.checkHistoryImport'>messages.checkHistoryImport</a>#43fe19f3 import_head:<a href='/type/string'>string</a> = <a href='/type/messages.HistoryImportParsed'>messages.HistoryImportParsed</a>;</code></pre> +<p>The import process begins by calling <a href="/method/messages.checkHistoryImport">messages.checkHistoryImport</a>, passing to <code>import_head</code> up to 100 lines of the chat export file, starting from the beginning of the file.</p> +<p>The returned constructor contains information about the exported chat, including its title or type. +If the <code>pm</code> flag is set, the chat export file was generated from a private chat. +If the <code>group</code> flag is set, the chat export file was generated from a group chat. +If neither the <code>pm</code> or <code>group</code> flags are set, the specified chat export was generated from a chat of unknown type.</p> +<h3><a class="anchor" href="#2-choosing-a-destination-telegram-chat" id="2-choosing-a-destination-telegram-chat" name="2-choosing-a-destination-telegram-chat"><i class="anchor-icon"></i></a>2. Choosing a destination Telegram chat</h3> +<pre><code><a href='/constructor/messages.checkedHistoryImportPeer'>messages.checkedHistoryImportPeer</a>#a24de717 confirm_text:<a href='/type/string'>string</a> = <a href='/type/messages.CheckedHistoryImportPeer'>messages.CheckedHistoryImportPeer</a>; + +---functions--- + +<a href='/method/messages.checkHistoryImportPeer'>messages.checkHistoryImportPeer</a>#5dc60f03 peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/messages.CheckedHistoryImportPeer'>messages.CheckedHistoryImportPeer</a>;</code></pre> +<p>Using <a href="/method/messages.checkHistoryImportPeer">messages.checkHistoryImportPeer</a>, check whether chat history exported from another chat app can be imported into a specific Telegram <code>peer</code>, chosen by the user.<br> +Typically, history imports are allowed for private chats with a mutual contact or <a href="/api/channel">supergroups</a> with <a href="/api/rights"><code>change_info</code> administrator rights »</a>.</p> +<p>If the check succeeds, and no RPC errors are returned, a <a href="/type/messages.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</a> constructor will be returned, with a confirmation text to be shown to the user in a confirmation prompt.<br> +Upon final user confirmation, <a href="#3-initialize-the-import">the import process is initialized</a>. </p> +<h3><a class="anchor" href="#3-initialize-the-import" id="3-initialize-the-import" name="3-initialize-the-import"><i class="anchor-icon"></i></a>3. Initialize the import</h3> +<pre><code><a href='/constructor/messages.historyImport'>messages.historyImport</a>#1662af0b id:<a href='/type/long'>long</a> = <a href='/type/messages.HistoryImport'>messages.HistoryImport</a>; + +---functions--- + +<a href='/method/messages.initHistoryImport'>messages.initHistoryImport</a>#34090c3b peer:<a href='/type/InputPeer'>InputPeer</a> file:<a href='/type/InputFile'>InputFile</a> media_count:<a href='/type/int'>int</a> = <a href='/type/messages.HistoryImport'>messages.HistoryImport</a>;</code></pre> +<p>Use <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a> to initialize the import process, passing the following parameters: </p> +<ul> +<li><code>peer</code> - The Telegram chat where the history should be imported.</li> +<li><code>file</code> - The chat export file.</li> +<li><code>media_count</code> - The number of media files associated with the export, to be uploaded in <a href="#4-uploading-media">the next step</a>. </li> +</ul> +<h3><a class="anchor" href="#4-uploading-media" id="4-uploading-media" name="4-uploading-media"><i class="anchor-icon"></i></a>4. Uploading media</h3> +<pre><code>---functions--- + +<a href='/method/messages.uploadImportedMedia'>messages.uploadImportedMedia</a>#2a862092 peer:<a href='/type/InputPeer'>InputPeer</a> import_id:<a href='/type/long'>long</a> file_name:<a href='/type/string'>string</a> media:<a href='/type/InputMedia'>InputMedia</a> = <a href='/type/MessageMedia'>MessageMedia</a>;</code></pre> +<p>Use <a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a> to upload media files eventually associated with the chat export.<br> +<code>import_id</code> is the <code>id</code> contained in the <a href="/constructor/messages.historyImport">messages.historyImport</a> constructor, returned by <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a> <a href="#3-initialize-the-import">in the previous step</a>. </p> +<h3><a class="anchor" href="#5-finalize-the-import" id="5-finalize-the-import" name="5-finalize-the-import"><i class="anchor-icon"></i></a>5. Finalize the import</h3> +<pre><code><a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/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>; + +---functions--- + +<a href='/method/messages.startHistoryImport'>messages.startHistoryImport</a>#b43df344 peer:<a href='/type/InputPeer'>InputPeer</a> import_id:<a href='/type/long'>long</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Finally, invoke <a href="/method/messages.startHistoryImport">messages.startHistoryImport</a> to complete the <a href="/api/import">history import process</a>, importing all messages into the chat.<br> +As usual, <code>import_id</code> is the <code>id</code> contained in the <a href="/constructor/messages.historyImport">messages.historyImport</a> constructor, returned by <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a>. </p> +<p>Imported messages will show in the chat history as <a href="/constructor/message">messages</a> containing a <code>fwd_from</code> <a href="/constructor/messageFwdHeader">messageFwdHeader</a> constructor with the <code>imported</code> flag, and should be appropriately marked in the UI as messages imported from a foreign chat app.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/invoking.html b/data/core.telegram.org/api/invoking.html new file mode 100644 index 0000000000..d49e333bc7 --- /dev/null +++ b/data/core.telegram.org/api/invoking.html @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Calling API Methods</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Additional options for calling methods."> + <meta property="og:title" content="Calling API Methods"> + <meta property="og:image" content="5901cb4c908e540453"> + <meta property="og:description" content="Additional options for calling methods."> + <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?215" 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/invoking" >Calling API Methods</a></li></ul></div> + <h1 id="dev_page_title">Calling API Methods</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<h3><a class="anchor" href="#layers" id="layers" name="layers"><i class="anchor-icon"></i></a>Layers</h3> +<p>Versioning in the API is supported by so-called TL layers.</p> +<p>The need to add a new object constructor or to add/remove a field in a constructor creates a backwards compatibility problem for previous versions of API clients. After all, simply changing a constructor in a schema also changes its number. To address this problem, each schema update is separated into a layer.</p> +<p>A layer is a collection of updated methods or constructors in a TL schema. Each layer is numbered with sequentially increasing numbers starting with 2. The first layer is the base layer -- the TL schema without any changes.</p> +<p>There is a helper method to let the API know that a client supports the Layer <code>layer</code>:</p> +<pre><code>invokeWithLayer#da9b0d0d {X:Type} layer:int query:!X = X;</code></pre> +<p>The helper method <strong><a href="/method/invokeWithLayer">invokeWithLayer</a></strong> can be used only together with <a href="/method/initConnection">initConnection</a>: the present layer will be saved with all other parameters of the client and any future requests will be using this saved value. <a href="#saving-client-info">See more below</a>.</p> +<h4><a class="anchor" href="#list-of-available-layers" id="list-of-available-layers" name="list-of-available-layers"><i class="anchor-icon"></i></a><a href="/api/layers">List of Available Layers</a></h4> +<h3><a class="anchor" href="#saving-client-info" id="saving-client-info" name="saving-client-info"><i class="anchor-icon"></i></a>Saving Client Info</h3> +<p>It is possible to save information about the current client on the server in conjunction with an authorization key. This may help eliminate client-side problems with certain releases on certain devices or with certain localizations, as well as eliminate the need for sending layer information in each request.</p> +<p>The helper method <strong><a href="/method/initConnection">initConnection</a></strong> accepts client parameters. This method must be called when first calling the API after the application has restarted or in case the value of one of the parameters could have changed.</p> +<p><strong>initConnection</strong> must also be called after each <a href="/method/auth.bindTempAuthKey">auth.bindTempAuthKey</a>.</p> +<p>When calling this method, the current layer used by the client is also saved (the layer in which <a href="/method/initConnection">initConnection</a> was wrapped is used). After a successful call to <a href="/method/initConnection">initConnection</a> it is no longer necessary to wrap each API call in <strong>invokeWithLayerN</strong>.</p> +<h3><a class="anchor" href="#disabling-updates" id="disabling-updates" name="disabling-updates"><i class="anchor-icon"></i></a>Disabling updates</h3> +<pre><code>invokeWithoutUpdates#bf9459b7 {X:Type} query:!X = X;</code></pre> +<p><a href="/method/invokeWithoutUpdates">invokeWithoutUpdates</a> can be used to invoke a request without subscribing the used connection for <a href="/api/updates">updates</a> (this is enabled by default for <a href="/api/files">file queries</a>).</p> +<h3><a class="anchor" href="#sequential-requests" id="sequential-requests" name="sequential-requests"><i class="anchor-icon"></i></a>Sequential Requests</h3> +<p>By default, the server processes parallel requests in arbitrary order. Two helper methods exist for cases when the client needs certain requests to be processed in a certain order and intends to send a new request before the previous one is completed:</p> +<div class="richcode"> +<p><a href="/method/invokeAfterMsg">invokeAfterMsg</a>#cb9f372d {X:Type} msg_id:long query:!X = X;<br> +<a href="/method/invokeAfterMsgs">invokeAfterMsgs</a>#3dc4b4f0 {X:Type} msg_ids:Vector<long> query:!X = X; </long></p> +</div> +<p>They may be used, for example, when a client attempts to send messages that accumulated while waiting for the Internet connection to be restored for a long time. In this case, the 32-bit number <code>0xcb9f372d</code> must be added before the method number in each request, followed by a 64-bit message identifier, msg_id, which contains the previous request in the queue. </p> +<p>The second method is similar, except it takes several messages that must be successfully processed before the current one.</p> +<p>If the waiting period exceeds 0.5 seconds (this value may change in the future) and no result has appeared, the method will return the <a href="/api/errors#400-bad-request">400 MSG_WAIT_TIMEOUT</a> error.</p> +<h4><a class="anchor" href="#helper-method-sequence" id="helper-method-sequence" name="helper-method-sequence"><i class="anchor-icon"></i></a>Helper Method Sequence</h4> +<p><strong>Important:</strong> if the helper methods <strong>invokeAfterMsg</strong> / <strong>invokeAfterMsgs</strong> are used together with <strong>invokeWithLayerN</strong> or other helper methods, <strong>invokeAfterMsg</strong> / <strong>invokeAfterMsgs</strong> must always be the outermost wrapper.</p> +<h3><a class="anchor" href="#data-compression" id="data-compression" name="data-compression"><i class="anchor-icon"></i></a>Data Compression</h3> +<p>We recommend using gzip compression when calling methods to reduce the amount of network traffic.</p> +<p>The schema and constructor information are given in the <a href="/mtproto/service_messages#packed-object">protocol documentation</a>.</p> +<h4><a class="anchor" href="#data-compression-when-making-a-request" id="data-compression-when-making-a-request" name="data-compression-when-making-a-request"><i class="anchor-icon"></i></a>Data Compression when Making a Request</h4> +<p>Before transmitting a query, the string containing the entire body of the serialized high-level query (starting with the method number) must be compressed using gzip. If the resulting string is smaller than the original, it makes sense to transmit the <a href="/mtproto/service_messages#pakovannyy-obekt">gzip_packed</a> constructor.</p> +<p>There is no point in doing the above when transmitting binary multimedia data (photos, videos) or small messages (up to 255 bytes).</p> +<h4><a class="anchor" href="#uncompressing-data" id="uncompressing-data" name="uncompressing-data"><i class="anchor-icon"></i></a>Uncompressing Data</h4> +<p>By default, the server compresses the response to any request as well as <a href="/api/updates">updates</a>, in accordance with the rules stated above. If the <a href="/mtproto/service_messages#packed-object">gzip_packed</a> constructor is received as a response in rpc_result, then the string that follows must be extracted and uncompressed. Processing then continues on the resulting new string.</p></div> + +</div> + + </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/live-location.html b/data/core.telegram.org/api/live-location.html new file mode 100644 index 0000000000..088510459a --- /dev/null +++ b/data/core.telegram.org/api/live-location.html @@ -0,0 +1,178 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Live geolocation</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert."> + <meta property="og:title" content="Live geolocation"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert."> + <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?215" 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/live-location" >Live geolocation</a></li></ul></div> + <h1 id="dev_page_title">Live geolocation</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert. </p> +<h3><a class="anchor" href="#sending-live-locations" id="sending-live-locations" name="sending-live-locations"><i class="anchor-icon"></i></a>Sending live locations</h3> +<pre><code><a href='/constructor/inputGeoPointEmpty'>inputGeoPointEmpty</a>#e4c123d6 = <a href='/type/InputGeoPoint'>InputGeoPoint</a>; + +<a href='/constructor/inputGeoPoint'>inputGeoPoint</a>#48222faf flags:<a href='/type/%23'>#</a> lat:<a href='/type/double'>double</a> long:<a href='/type/double'>double</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/InputGeoPoint'>InputGeoPoint</a>; + +<a href='/constructor/inputMediaGeoLive'>inputMediaGeoLive</a>#971fa843 flags:<a href='/type/%23'>#</a> stopped:flags.0?<a href='/constructor/true'>true</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> heading:flags.2?<a href='/type/int'>int</a> period:flags.1?<a href='/type/int'>int</a> proximity_notification_radius:flags.3?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/messages.editMessage'>messages.editMessage</a>#48f71778 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> message:flags.11?<a href='/type/string'>string</a> media:flags.14?<a href='/type/InputMedia'>InputMedia</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.15?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>To send a live geolocation, use <a href="/method/messages.sendMedia">messages.sendMedia</a> with an <a href="/constructor/inputMediaGeoLive">inputMediaGeoLive</a> <code>media</code> . </p> +<p>The <a href="/constructor/inputMediaGeoLive">inputMediaGeoLive</a> allows sending the geolocation as an <a href="/constructor/inputGeoPoint">inputGeoPoint</a> with floating point latitude and longitude, with an optional <code>accuracy_radius</code> in meters.<br> +Clients can also provide a <code>heading</code>, a direction in degrees (1-360) that can be used to indicate the direction of the user, a validity <code>period</code> for the current location, and a <code>proximity_notification_radius</code> . </p> +<p>The sent geolocation should be updated perioducally using <a href="/method/messages.editMessage">messages.editMessage</a> <strong>at most</strong> every <code>period</code> seconds, in order to implement the "live" part of live geolocations. </p> +<p>To stop sharing the location, pass <a href="/constructor/inputGeoPointEmpty">inputGeoPointEmpty</a> as location and set the <code>stopped</code> flag to true in a last <a href="/method/messages.editMessage">messages.editMessage</a> call. </p> +<h3><a class="anchor" href="#receiving-live-locations" id="receiving-live-locations" name="receiving-live-locations"><i class="anchor-icon"></i></a>Receiving live locations</h3> +<pre><code><a href='/constructor/geoPoint'>geoPoint</a>#b2a2f663 flags:<a href='/type/%23'>#</a> long:<a href='/type/double'>double</a> lat:<a href='/type/double'>double</a> access_hash:<a href='/type/long'>long</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/GeoPoint'>GeoPoint</a>; +<a href='/constructor/messageMediaGeoLive'>messageMediaGeoLive</a>#b940c666 flags:<a href='/type/%23'>#</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> heading:flags.0?<a href='/type/int'>int</a> period:<a href='/type/int'>int</a> proximity_notification_radius:flags.1?<a href='/type/int'>int</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/updateGeoLiveViewed'>updateGeoLiveViewed</a>#871fb939 peer:<a href='/type/Peer'>Peer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;</code></pre> +<p>Clients will receive a message with a <a href="/constructor/messageMediaGeoLive">messageMediaGeoLive</a>, containing the information passed by the sender; when the geolocation message is marked as read, an <a href="/constructor/updateGeoLiveViewed">updateGeoLiveViewed</a> is generated. </p> +<p>Periodically, the geolocation will be updated with <a href="/constructor/updateEditMessage">updateEditMessage</a>/<a href="/constructor/updateEditChannelMessage">updateEditChannelMessage</a> updates. </p> +<h4><a class="anchor" href="#live-location-previews" id="live-location-previews" name="live-location-previews"><i class="anchor-icon"></i></a>Live location previews</h4> +<pre><code><a href='/constructor/inputWebFileGeoPointLocation'>inputWebFileGeoPointLocation</a>#9f2221c9 geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> access_hash:<a href='/type/long'>long</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> zoom:<a href='/type/int'>int</a> scale:<a href='/type/int'>int</a> = <a href='/type/InputWebFileLocation'>InputWebFileLocation</a>; + +<a href='/constructor/inputGeoPoint'>inputGeoPoint</a>#48222faf flags:<a href='/type/%23'>#</a> lat:<a href='/type/double'>double</a> long:<a href='/type/double'>double</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/InputGeoPoint'>InputGeoPoint</a>; + +---functions--- + +<a href='/method/upload.getWebFile'>upload.getWebFile</a>#24e6818d location:<a href='/type/InputWebFileLocation'>InputWebFileLocation</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/upload.WebFile'>upload.WebFile</a>;</code></pre> +<p>A map preview can be generated by passing the received <a href="/constructor/geoPoint">geoPoint</a> to <a href="/api/files#downloading-webfiles">upload.getWebFile</a>, to download an image preview of the map. </p> +<ul> +<li><code>geo_point</code> is generated from the <code>lat</code> , <code>long</code> <code>accuracy_radius</code> parameters of the <a href="/constructor/geoPoint">geoPoint</a></li> +<li><code>access_hash</code> is the access hash of the <a href="/constructor/geoPoint">geoPoint</a></li> +<li><code>w</code> - Map width in pixels before applying scale; 16-1024</li> +<li><code>h</code> - Map height in pixels before applying scale; 16-1024</li> +<li><code>zoom</code> - Map zoom level; 13-20</li> +<li><code>scale</code> - Map scale; 1-3</li> +</ul> +<p>The image is then downloaded as specified <a href="/api/files">here » </a></p> +<h3><a class="anchor" href="#proximity-alert" id="proximity-alert" name="proximity-alert"><i class="anchor-icon"></i></a>Proximity alert</h3> +<pre><code><a href='/constructor/messageActionGeoProximityReached'>messageActionGeoProximityReached</a>#98e0d697 from_id:<a href='/type/Peer'>Peer</a> to_id:<a href='/type/Peer'>Peer</a> distance:<a href='/type/int'>int</a> = <a href='/type/MessageAction'>MessageAction</a>; + +<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;</code></pre> +<p>If:</p> +<ul> +<li>A user sets a <code>proximity_notification_radius</code> when sending a location</li> +<li>Multiple users share their location within the same chat</li> +<li>One of the other users comes within <code>proximity_notification_radius</code> meters of the first user, and updates their location accordingly</li> +</ul> +<p>An <a href="/constructor/updateNewMessage">updateNewMessage</a>/<a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> is generated for all chat members, containing a <a href="/constructor/messageService">messageService</a> with action <a href="/constructor/messageActionGeoProximityReached">messageActionGeoProximityReached</a>:</p> +<ul> +<li><code>messageActionGeoProximityReached.to_id</code> is the peer that enabled proximity alerts</li> +<li><code>messageActionGeoProximityReached.from_id</code> is the peer that is now in proximity of <code>messageActionGeoProximityReached.to_id</code></li> +<li><code>messageActionGeoProximityReached.distance</code> is the distance between them, in meters</li> +</ul></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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/mentions.html b/data/core.telegram.org/api/mentions.html new file mode 100644 index 0000000000..a6db56c9c3 --- /dev/null +++ b/data/core.telegram.org/api/mentions.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Mentions</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible."> + <meta property="og:title" content="Mentions"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible."> + <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?215" 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/mentions" >Mentions</a></li></ul></div> + <h1 id="dev_page_title">Mentions</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p> +<pre><code><a href='/constructor/messageEntityMention'>messageEntityMention</a>#fa04579d offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> = <a href='/type/MessageEntity'>MessageEntity</a>; +<a href='/constructor/messageEntityMentionName'>messageEntityMentionName</a>#dc7b1140 offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> = <a href='/type/MessageEntity'>MessageEntity</a>; +<a href='/constructor/inputMessageEntityMentionName'>inputMessageEntityMentionName</a>#208e68c9 offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> user_id:<a href='/type/InputUser'>InputUser</a> = <a href='/type/MessageEntity'>MessageEntity</a>; + +<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/channelParticipantsMentions'>channelParticipantsMentions</a>#e04b5ceb flags:<a href='/type/%23'>#</a> q:flags.0?<a href='/type/string'>string</a> top_msg_id:flags.1?<a href='/type/int'>int</a> = <a href='/type/ChannelParticipantsFilter'>ChannelParticipantsFilter</a>; + +---functions--- + +<a href='/method/messages.sendMessage'>messages.sendMessage</a>#520c3870 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/channels.getParticipants'>channels.getParticipants</a>#77ced9d0 channel:<a href='/type/InputChannel'>InputChannel</a> filter:<a href='/type/ChannelParticipantsFilter'>ChannelParticipantsFilter</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/channels.ChannelParticipants'>channels.ChannelParticipants</a>;</code></pre> +<p>Mentions are implemented as <a href="/api/entities">message entities</a>, passed to the <a href="/method/messages.sendMessage">messages.sendMessage</a> method:</p> +<ul> +<li><a href="/constructor/inputMessageEntityMentionName">inputMessageEntityMentionName</a> - Used when sending messages, allows mentioning a user <a href="https://t.me/botfather">inline, even for users that don't have a @username</a></li> +<li><a href="/constructor/messageEntityMentionName">messageEntityMentionName</a> - Incoming message counterpart of <a href="/constructor/inputMessageEntityMentionName">inputMessageEntityMentionName</a></li> +<li><a href="/constructor/messageEntityMention">messageEntityMention</a> - <a href="https://t.me/botfather">@botfather</a> (this entity is generated automatically server-side for @usernames in messages, no need to provide it manually)</li> +</ul> +<p>Incoming <a href="/constructor/message">messages</a> mentioning to the current user will have the <code>mentioned</code> flag set, and will contain one or more <a href="/constructor/messageEntityMention">messageEntityMention</a> and <a href="/constructor/messageEntityMentionName">messageEntityMentionName</a> constructors. </p> +<p>Graphical clients can show a list of mentionable users when the user starts entering an <code>@</code> in the text bar; for this purpose, the <a href="/constructor/channelParticipantsMentions">channelParticipantsMentions</a> filter can be used in <a href="/method/channels.getParticipants">channels.getParticipants</a>.<br> +This filter can be enhanced by providing an additional query string <code>q</code> (anything the user enters after <code>@</code>); it will also return non-participant users, in case of channel users commenting in <a href="/api/discussion">post comment sections</a>. </p> +<h3><a class="anchor" href="#dialog-mentions" id="dialog-mentions" name="dialog-mentions"><i class="anchor-icon"></i></a>Dialog mentions</h3> +<pre><code><a href='/constructor/dialog'>dialog</a>#2c171f72 flags:<a href='/type/%23'>#</a> pinned:flags.2?<a href='/constructor/true'>true</a> unread_mark:flags.3?<a href='/constructor/true'>true</a> peer:<a href='/type/Peer'>Peer</a> top_message:<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> unread_mentions_count:<a href='/type/int'>int</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> pts:flags.0?<a href='/type/int'>int</a> draft:flags.1?<a href='/type/DraftMessage'>DraftMessage</a> folder_id:flags.4?<a href='/type/int'>int</a> = <a href='/type/Dialog'>Dialog</a>; + +---functions--- + +<a href='/method/messages.getUnreadMentions'>messages.getUnreadMentions</a>#46578472 peer:<a href='/type/InputPeer'>InputPeer</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> = <a href='/type/messages.Messages'>messages.Messages</a>; +<a href='/method/messages.readMentions'>messages.readMentions</a>#f0189d3 peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/messages.AffectedHistory'>messages.AffectedHistory</a>;</code></pre> +<p>Graphical clients are supposed to show a blue mention indicator next to the message counter of chats in the dialog list.<br> +The <a href="/constructor/dialog">dialog</a> constructor contains an <code>unread_mentions_count</code> field to isolate chats with unread mentions; the actual mention counter should be shown inside of the chat itself, above an <code>@</code> button that can be used, by clicking multiple times, to navigate back (using <a href="/method/messages.getUnreadMentions">messages.getUnreadMentions</a>) through the mention history. </p> +<p>When the last unread mention is read, or when long-clicking on the <code>@</code> button, all mentions for a chat should marked as read using <a href="/method/messages.readMentions">messages.readMentions</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/min.html b/data/core.telegram.org/api/min.html new file mode 100644 index 0000000000..47a60c40eb --- /dev/null +++ b/data/core.telegram.org/api/min.html @@ -0,0 +1,142 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Min constructors</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set. "> + <meta property="og:title" content="Min constructors"> + <meta property="og:image" content="8440249ddd84efacd0"> + <meta property="og:description" content="In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set. "> + <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?215" 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/min" >Min constructors</a></li></ul></div> + <h1 id="dev_page_title">Min constructors</h1> + + <div id="dev_page_content"><p>In some situations <a href="/constructor/user">user</a> and <a href="/constructor/channel">channel</a> constructors have reduced set of fields present (although <code>id</code> is always there) and <code>min</code> flag set. This is done for performance and privacy reasons. </p> +<p>When receiving said constructors, the client must first check if user or chat object without <code>min</code> flag is already present in local cache. If it is present, then the client should just ignore constructors with <code>min</code> flag and use local one instead.</p> +<p><strong>The rest of article assumes the client receives min-constructor without full object in local cache.</strong></p> +<p>The client must store the context (similar to <a href="/api/file_reference">file references</a>) in which the user/channel was seen. Later, when the client needs to pass the user/channel as input argument (e.g. fetch profile, mute, ban etc), the context is used to generate the <code>input*FromMessage</code> constructor, instead of normal <code>inputUser</code>, <code>inputChannel</code> or <code>inputPeer</code>.</p> +<ul> +<li><a href="/constructor/inputPeerUserFromMessage">inputPeerUserFromMessage</a></li> +<li><a href="/constructor/inputPeerChannelFromMessage">inputPeerChannelFromMessage</a></li> +<li><a href="/constructor/inputUserFromMessage">inputUserFromMessage</a></li> +<li><a href="/constructor/inputChannelFromMessage">inputChannelFromMessage</a></li> +</ul> +<p>The <code>access_hash</code> value, if present, is only suitable to use in <a href="/constructor/inputPeerPhotoFileLocation"><code>inputPeerPhotoFileLocation</code></a>, to directly <a href="/api/files">download the profile pictures</a> of channels and users <strong>without</strong> having to generate an <code>inputPeer*FromMessage</code>, simply using <code>inputPeer*</code> with the specified access hash. </p> +<p>Usually <code>min</code> constructors are encountered in messages inside of groups or channels. +When a message mentioning (sender, forwarder or forwardee, et cetera) such a user or channel is found, the constuctor must be associated with the message ID of the message and with the chat where the message was seen.</p> +<h4><a class="anchor" href="#example" id="example" name="example"><i class="anchor-icon"></i></a>Example</h4> +<p>Assume a <a href="/constructor/message">message</a> with id <code>34</code> is received from supergroup (<a href="/api/channel">actually channel</a>) <code>123456789</code>. +Said message was sent by <code>from_id</code> <code>102424212</code>. +The <a href="/api/updates">updates</a> container that contained the message has a user with ID <code>102424212</code> in the <code>users</code> field, but it has the <code>min</code> flag set, and the provided <code>access_hash</code> may be absent, or otherwise can't be used to generate a typical <a href="/constructor/inputPeerUser">inputPeerUser</a> constructor to send messages or do other actions.</p> +<p>What the client does is associate <code>102424212</code> with the channel <code>123456789</code> and message ID <code>34</code>. +When and if the client will need to interact with user <code>102424212</code>, it will generate one of the <code>*FromMessage</code> constructors mentioned above, setting:</p> +<ul> +<li><code>msg_id</code> to <code>34</code></li> +<li><code>peer</code> to the <a href="/type/InputPeer">InputPeer</a> associated with channel <code>123456789</code></li> +<li><code>user_id</code> to <code>102424212</code></li> +</ul> +<p><code>user_id</code> can also be set to the IDs of users met in the <code>fwd_header</code> (messages forwarded from a user can be used to interact with the original sender, if they don't have privacy settings for forwards enabled). +Users mentioned via <a href="/constructor/messageEntityMentionName">messageEntityMentionName</a> in a message can also be used.</p> +<p>The same can be done with <code>min</code> <a href="/api/channel">channels</a>.</p> +<p>Example implementations: <a href="https://github.com/peter-iakovlev/Telegram-iOS">Telegram for iOS</a>, <a href="https://github.com/tdlib/td">tdlib</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/obtaining_api_id.html b/data/core.telegram.org/api/obtaining_api_id.html new file mode 100644 index 0000000000..e91ef8a48b --- /dev/null +++ b/data/core.telegram.org/api/obtaining_api_id.html @@ -0,0 +1,140 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Creating your Telegram Application</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to get your application identifier and create a new Telegram app."> + <meta property="og:title" content="Creating your Telegram Application"> + <meta property="og:image" content="06c229ff662379138f"> + <meta property="og:description" content="How to get your application identifier and create a new Telegram app."> + <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?215" 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/obtaining_api_id" >Creating your Telegram Application</a></li></ul></div> + <h1 id="dev_page_title">Creating your Telegram Application</h1> + + <div id="dev_page_content"><p>We welcome all developers to use our <a href="https://core.telegram.org/api#telegram-api">API</a> and source code to create Telegram-like messaging applications on our platform free of charge.</p> +<blockquote> +<p>In order to ensure consistency and security across the Telegram ecosystem, +<strong>all third-party client apps</strong> must comply with the <a href="/api/terms"><strong>API Terms of Service</strong></a>.</p> +</blockquote> +<h3><a class="anchor" href="#obtaining-api-id" id="obtaining-api-id" name="obtaining-api-id"><i class="anchor-icon"></i></a>Obtaining api_id</h3> +<p>In order to obtain an <strong>API id</strong> and develop your own application using the Telegram API you need to do the following:</p> +<ul> +<li>Sign up for Telegram using any application.</li> +<li>Log in to your Telegram core: <a href="https://my.telegram.org">https://my.telegram.org</a>.</li> +<li>Go to <a href="https://my.telegram.org/apps">'API development tools'</a> and fill out the form.</li> +<li>You will get basic addresses as well as the <strong>api_id</strong> and <strong>api_hash</strong> parameters required for user authorization.</li> +<li>For the moment each number can only have one api_id connected to it.</li> +</ul> +<p>We will be sending important developer notifications to the phone number that you use in this process, so please use an up-to-date number connected to your active Telegram account.</p> +<h3><a class="anchor" href="#using-the-api-id" id="using-the-api-id" name="using-the-api-id"><i class="anchor-icon"></i></a>Using the api_id</h3> +<p>Before using the MTProto Telegram API, please note that all API client libraries are strictly monitored to prevent abuse.</p> +<p>If you use the Telegram API for flooding, spamming, faking subscriber and view counters of channels, you <strong>will be banned forever</strong>. </p> +<p>Due to excessive abuse of the Telegram API, <strong>all accounts</strong> that sign up or log in using unofficial Telegram API clients are automatically put <strong>under observation</strong> to avoid violations of the <a href="/api/terms">Terms of Service</a>. </p> +<p>If you didn't violate the Terms of Service but your account does get banned after using the API, write to <a href="mailto:recover@telegram.org">recover@telegram.org</a> explaining what you intend to do with the API, asking to unban your account.<br> +Please note that emails are checked by a human, so automatically generated emails will be detected and banned.</p> +<h3><a class="anchor" href="#using-telegrams-open-source-code" id="using-telegrams-open-source-code" name="using-telegrams-open-source-code"><i class="anchor-icon"></i></a>Using Telegram's open source code</h3> +<p>Everyone is welcome to use our open source code. We have included a sample API id with the code. This API id is limited on the server side and is not suitable for apps released to end-users — using it for anything but testing purposes will result in the API_ID_PUBLISHED_FLOOD error for your users. It is necessary that you obtain your <strong>own API id</strong> before you publish your app.</p> +<blockquote> +<p>Please remember to publish your code as well in order to comply with the GNU GPL licences.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/offsets.html b/data/core.telegram.org/api/offsets.html new file mode 100644 index 0000000000..bf15c7f46c --- /dev/null +++ b/data/core.telegram.org/api/offsets.html @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Pagination in the API</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to fetch results from large lists of objects."> + <meta property="og:title" content="Pagination in the API"> + <meta property="og:image" content="4dd378cd0f58b0b820"> + <meta property="og:description" content="How to fetch results from large lists of objects."> + <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?215" 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/offsets" >Pagination in the API</a></li></ul></div> + <h1 id="dev_page_title">Pagination in the API</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Lots of Telegram API methods provide access to potentially large lists of objects, which requires pagination.</p> +<p>In order to fetch only relevant subset of results for each request there is a number of available input parameters. Here is a list in order how they are applied in API.</p> +<p>Typically, results are returned in antichronological order with descending object ID values.</p> +<h3><a class="anchor" href="#limit-parameter" id="limit-parameter" name="limit-parameter"><i class="anchor-icon"></i></a><code>limit</code> parameter</h3> +<p>A limit on the number of objects to be returned, typically between 1 and 100. When 0 is provided the limit will often default to an intermediate value like ~20.</p> +<h3><a class="anchor" href="#offset-based-pagination" id="offset-based-pagination" name="offset-based-pagination"><i class="anchor-icon"></i></a><code>offset</code>-based pagination</h3> +<p>For a few methods with mostly static data this parameter allows to skip <code>offset</code> elements from the beginning of list; negative values are ignored.</p> +<h3><a class="anchor" href="#offset-id-based-pagination" id="offset-id-based-pagination" name="offset-id-based-pagination"><i class="anchor-icon"></i></a><code>offset_id</code>-based pagination</h3> +<p>For most methods where results are real-time data (e.g. any chat history) <code>offset</code> value is not passed directly. Instead it is calculated from the passed <code>offset_id</code> and <code>add_offset</code> parameter values as <code>offsetFromID(offset_id) + add_offset</code>, where <code>offsetFromID(offset_id)</code> is a number of results from the beginning of list up to the result with ID <code>offset_id</code>, inclusive.</p> +<p>Sample use cases:</p> +<ul> +<li> +<p>Loading 20 messages, older than message with ID <code>MSGID</code>:</p> +<p>messages.getHistory({offset_id: MSGID, add_offset: 0, limit: 20})</p> +</li> +<li> +<p>Loading 20 messages, newer than message with ID <code>MSGID</code>:</p> +<p>messages.getHistory({offset_id: MSGID, add_offset: -20, limit: 20})</p> +</li> +<li> +<p>Loading 20 messages around message with ID <code>MSGID</code>:</p> +<p>messages.getHistory({offset_id: MSGID, add_offset: -10, limit: 20})</p> +</li> +</ul> +<h3><a class="anchor" href="#additional-filtering" id="additional-filtering" name="additional-filtering"><i class="anchor-icon"></i></a>Additional filtering</h3> +<p>There is a number of parameters, which are applied to the list after slicing with offset and limit, to reduce the result subset even more:</p> +<ul> +<li><strong>max_id</strong>: Can be used to only return results with ID strictly smaller than <code>max_id</code> (e.g. message ID)</li> +<li><strong>min_id</strong>: Can be used to only return results with ID strictly greater than <code>min_id</code>(e.g. message ID)</li> +<li><strong>max_date</strong>: Can be used to only return results that are older than <code>max_date</code>:</li> +<li><strong>min_date</strong>: Can be used to only return results with are newer than <code>min_date</code>:</li> +<li><strong>hash</strong>: See below.</li> +</ul> +<h3><a class="anchor" href="#hash-generation" id="hash-generation" name="hash-generation"><i class="anchor-icon"></i></a>Hash generation</h3> +<p>To further reduce the result subset, there is a mechanism to avoid fetching data if the resulting list hasn't changed from the one stored on client, similar to <a href="https://en.wikipedia.org/wiki/HTTP_ETag">ETag</a>.</p> +<p>When the client has cached results for API request, it can calculate the <code>hash</code> value for it by taking the result IDs (message IDs or other fields with name <code>id</code>) and using them to compute a 64-bit hash with the following algorithm:</p> +<pre><code># Here, ^ indicates a bitwise XOR + +hash = 0 +for id in ids: + hash = hash ^ (id >> 21) + hash = hash ^ (id << 35) + hash = hash ^ (id >> 4) + hash = hash + id</code></pre> +<p>In some cases, the result container already has a <code>hash</code> field, that can be used instead.</p> +<p>When the client passes a correct value, the API will return one of <code>*NotModified</code> constructors, e.g. <a href="/constructor/messages.messagesNotModified">messages.messagesNotModified</a> instead of the actual results.</p> +<h3><a class="anchor" href="#example-methods" id="example-methods" name="example-methods"><i class="anchor-icon"></i></a>Example methods</h3> +<ul> +<li><a href="/method/messages.getHistory">messages.getHistory</a> supports all result navigation parameters including message ID hashes and except filters</li> +<li><a href="/method/channels.getParticipants">channels.getParticipants</a> supports simple navigation using <strong>limit</strong> and <strong>offset</strong>, along with filtering and <code>hash</code> reducing using the user IDs of returned participants</li> +</ul></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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/optimisation.html b/data/core.telegram.org/api/optimisation.html new file mode 100644 index 0000000000..1fc665b082 --- /dev/null +++ b/data/core.telegram.org/api/optimisation.html @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Client-Side Optimization</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Ways to boost API interactions."> + <meta property="og:title" content="Client-Side Optimization"> + <meta property="og:image" content="cc8d9aa19196b9a2dd"> + <meta property="og:description" content="Ways to boost API interactions."> + <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?215" 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/optimisation" >Client-Side Optimization</a></li></ul></div> + <h1 id="dev_page_title">Client-Side Optimization</h1> + + <div id="dev_page_content"><h3><a class="anchor" href="#simplified-acknowledgment-of-message-delivery" id="simplified-acknowledgment-of-message-delivery" name="simplified-acknowledgment-of-message-delivery"><i class="anchor-icon"></i></a>Simplified Acknowledgment of Message Delivery</h3> +<p>An outgoing message may be considered sent once the server has assigned it an identifier. Normally, a client would learn of this from the result of the <a href="/method/messages.sendMessage">messages.sendMessage</a> method. +The MTProto server provides a mechanism for <a href="/mtproto/mtproto-transports#quick-ack">“quick acknowledgments"</a>. Upon receiving such an acknowledgment, the client may be certain that the call to the send message method has at least been fully received by the server and placed in a processing queue, and can inform the user that the delivery was successful. +It is possible that the server’s actual response will never be received by the client (an interrupted connection; or the app restarts at exactly the wrong time). To correctly handle these situations, you can use a special type of notification generated by the server when <a href="/method/updates.getDifference">updates.getDifference</a> is called: <a href="/constructor/updateMessageID">updateMessageID</a>. When processing this notification, the client can use the <strong>random_id</strong> identifier to associate the previously transmitted message with the one delivered to the server. +If such a notification is not issued when <a href="/method/updates.getDifference">updates.getDifference</a> is called for one of the previously sent messages, the message must be marked as undelivered.</p> +<h3><a class="anchor" href="#server-salt" id="server-salt" name="server-salt"><i class="anchor-icon"></i></a>Server Salt</h3> +<p>Server salt is a 64-bit number added to every outgoing and incoming message. At present, a single salt’s lifespan is 1 hour, following which it is considered invalid and the server will return an error for all the messages that contain it. The error message will contain the correct salt, which may be immediately used for sending. Given this approach, there will always be a period of waiting before the client receives a new salt if it connects to the server less frequently than once an hour. +For improved performance, there is a special <a href="/mtproto/service_messages#request-for-several-future-salts">get_future_salts</a> method, which fetches in advance a list of the salts that will be valid during the course of a specified period of time following the call (1 day, for example). A start time and an end time are specified for each salt. The salts overlap one another by half an hour. We recommend always using the record with the longest remaining lifespan.</p> +<h3><a class="anchor" href="#downloading-files-and-uploading-data-to-the-server" id="downloading-files-and-uploading-data-to-the-server" name="downloading-files-and-uploading-data-to-the-server"><i class="anchor-icon"></i></a>Downloading Files and Uploading Data to the Server</h3> +<p>We recommend that separate connections and sessions be created for these tasks. Remember that the extra sessions must be deleted when no longer needed. +It makes sense to download files over several connections (optimally to have a pool). When uploading data to a server one connection is enough to achieve the best results.</p> +<p>The file handling API is designed to perform data operations in parts. In its simplest implementation, the process of uploading files to a server looks like this: send a query, wait for a response, send the next query, etc. This approach does not optimize the use of network resources and the ping time has a huge effect. +The upload and download process is optimal when two or more queries are continuously being executed through one connection. In this arrangement, uploading to the server would look like this:</p> +<ol> +<li>Send Query 1</li> +<li>Send Query 2</li> +<li>Wait for a response to Query 1</li> +<li>Send Query 3</li> +<li>Wait for a response to Query 2</li> +<li>Send Query 4</li> +<li>etc.</li> +</ol> +<p>This will help reduce the effect of ping latency and maximize the channel workload.</p> +<h3><a class="anchor" href="#sending-messages-in-bulk" id="sending-messages-in-bulk" name="sending-messages-in-bulk"><i class="anchor-icon"></i></a>Sending Messages in Bulk</h3> +<p>Sometimes a client needs to transmit several send message method calls to the server all at once in a single message or in several consecutive messages. However, the server may execute these requests out of order (queries are handled by different servers to improve performance, which introduces a degree of randomness to the process). +This requires that dependencies be explicitly stated when processing queries by using the function</p> +<pre><code>invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;</code></pre> +<p>Actually, this means padding the beginning of the query with the 32-bit number <code>0xcb9f372d</code> and the 64-bit message identifier of the query on which the current query is dependent.</p> +<h3><a class="anchor" href="#grouping-updates" id="grouping-updates" name="grouping-updates"><i class="anchor-icon"></i></a>Grouping Updates</h3> +<p>Generating updates (notifications about various server events) and delivering them to the client form two different parts of the system (respectively, the messenger API and MTProto). By itself, MTProto cannot modify in any way the data transmitted to the client, and the server API cannot respond to client-MTProto connection events. +Imagine the situation where a client loses its connection (or is intentionally disconnected from the network) for some time. If lots of different events occur before a new connection is established (contacts come online, typing event messages are sent), then when a connection is established the client will receive lots of data containing all of the intervening events, despite the fact that most of the data is obsolete. +The grouping of messages has been introduced to optimize such situations. If new events occur and the client has not managed to “collect” the previously generated updates, then the server API can combine them into a single package.</p> +<p>A client is able to control when the MTProto server begins to consider that the connection has been lost and grouping can begin (the earlier this occurs when there is no connection, the better for the client). This functionality is implemented through a special type of Ping message, <a href="/mtproto/service_messages#deferred-connection-closure-ping">ping_delay_disconnect</a>, which specifies a time delay following which the server will close the current connection and start grouping messages. </p> +<p>It makes sense to combine the transmission of <a href="/mtproto/service_messages#deferred-connection-closure-ping">ping_delay_disconnect</a> with that of other recurring tasks, such as updating the user status (<a href="/method/account.updateStatus">account.updateStatus</a>).</p> +<h3><a class="anchor" href="#setting-the-typing-status" id="setting-the-typing-status" name="setting-the-typing-status"><i class="anchor-icon"></i></a>Setting the Typing Status</h3> +<p>If a contact is not online, there is no need to invoke <a href="/method/messages.setTyping">messages.setTyping</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/passport.html b/data/core.telegram.org/api/passport.html new file mode 100644 index 0000000000..4527355cfd --- /dev/null +++ b/data/core.telegram.org/api/passport.html @@ -0,0 +1,674 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram passport</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Client-side passport flow"> + <meta property="og:title" content="Telegram passport"> + <meta property="og:image" content="127528a6974e1bc1ac"> + <meta property="og:description" content="Client-side passport flow"> + <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?215" 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/passport" >Telegram passport</a></li></ul></div> + <h1 id="dev_page_title">Telegram passport</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><strong>Telegram Passport</strong> is a unified authorization method for services that require personal identification. Users can upload their documents once, then instantly share their data with services that require real-world ID (finance, ICOs, etc.). Telegram doesn‘t have access to the users’ personal information thanks to end-to-end encryption.</p> +<p>This page describes the request flow that client apps must used to send the requested data to the service.</p> +<h3><a class="anchor" href="#overview" id="overview" name="overview"><i class="anchor-icon"></i></a>Overview</h3> +<p>From the perspective of a service that requires real-world ID, the process looks like this:</p> +<ul> +<li>A user presses “Log in with Telegram” on your website or in your app.</li> +<li>You request the data you need.</li> +<li>The user accepts your privacy policy and agrees to share their data.</li> +<li>The user's Telegram app downloads and decrypts the data you requested from the end-to-end encrypted storage on Telegram.</li> +<li>If some of the data you requested is missing, the user can add it to their Telegram Passport at this point.</li> +<li>The user's app encrypts the data with your public key and sends it to you.</li> +<li>You decrypt the data, check it for errors and re-request any missing or invalid information.</li> +<li>You sign the user up for your service. Tada!</li> +</ul> +<p>See <a href="#as-a-bot">As a bot</a> to see how to request passport data using a bot, through the MTProto API. +Look at the <a href="/passport">Passport Manual</a> to see how to request passport data using a bot, through the simplified bot API.</p> +<p>From the perspective of a user, the process looks something like this:</p> +<ul> +<li>Your app <a href="#receiving-requests">receives an event/intent</a> from one of the <a href="/passport#sdk">SDKs</a>, or from a custom source.</li> +<li>The user accepts your privacy policy and agrees to share their data.</li> +<li>The user's Telegram app <a href="/passport/encryption#fetching-and-deleting-stored-passport-data">downloads the data you requested</a> from the end-to-end encrypted storage on Telegram.</li> +<li>If some of the data you requested is missing, the user can <a href="/passport/encryption#encryption">add it to their Telegram Passport</a> at this point.</li> +<li>The user's app encrypts the data with your public key and sends it to the service.</li> +<li>You sign the user up for your service. Tada!</li> +</ul> +<p>See <a href="#as-a-user">As a user</a> to see how user client apps should send passport data to a service, through the MTProto API.</p> +<h3><a class="anchor" href="#as-a-bot" id="as-a-bot" name="as-a-bot"><i class="anchor-icon"></i></a>As a bot</h3> +<p>A simplified version of this process can be used using the bot API, for more info see the <a href="/passport">Passport Manual</a>.</p> +<p>Using the MTProto API, the process is pretty much the same, up until the actual API calls.</p> +<blockquote> +<p>Note that all binary fields are in raw binary format, unlike in the bot API where they are base64-encoded</p> +</blockquote> +<h4><a class="anchor" href="#setting-up-telegram-passport" id="setting-up-telegram-passport" name="setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting Up Telegram Passport</h4> +<p><a href="/passport#setting-up-telegram-passport">As per the bot API</a>.</p> +<h4><a class="anchor" href="#requesting-information" id="requesting-information" name="requesting-information"><i class="anchor-icon"></i></a>Requesting Information</h4> +<p><a href="/passport#requesting-information">As per the bot API</a>.</p> +<h4><a class="anchor" href="#receiving-information" id="receiving-information" name="receiving-information"><i class="anchor-icon"></i></a>Receiving information</h4> +<p>Schema:</p> +<pre><code><a href='/constructor/secureData'>secureData</a>#8aeabec3 data:<a href='/type/bytes'>bytes</a> data_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureData'>SecureData</a>; + +<a href='/constructor/securePlainPhone'>securePlainPhone</a>#7d6099dd phone:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; +<a href='/constructor/securePlainEmail'>securePlainEmail</a>#21ec5a5f email:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; + +<a href='/constructor/secureFile'>secureFile</a>#e0277a62 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureFile'>SecureFile</a>; + +<a href='/constructor/secureValueTypePersonalDetails'>secureValueTypePersonalDetails</a>#9d2a81e3 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePassport'>secureValueTypePassport</a>#3dac6a00 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeDriverLicense'>secureValueTypeDriverLicense</a>#6e425c4 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeIdentityCard'>secureValueTypeIdentityCard</a>#a0d0744b = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeInternalPassport'>secureValueTypeInternalPassport</a>#99a48f23 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeAddress'>secureValueTypeAddress</a>#cbe31e26 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeUtilityBill'>secureValueTypeUtilityBill</a>#fc36954e = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeBankStatement'>secureValueTypeBankStatement</a>#89137c0d = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeRentalAgreement'>secureValueTypeRentalAgreement</a>#8b883488 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePassportRegistration'>secureValueTypePassportRegistration</a>#99e3806a = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeTemporaryRegistration'>secureValueTypeTemporaryRegistration</a>#ea02ec33 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePhone'>secureValueTypePhone</a>#b320aadb = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeEmail'>secureValueTypeEmail</a>#8e3ca7ee = <a href='/type/SecureValueType'>SecureValueType</a>; + +<a href='/constructor/secureValue'>secureValue</a>#187fa0ca flags:<a href='/type/%23'>#</a> type:<a href='/type/SecureValueType'>SecureValueType</a> data:flags.0?<a href='/type/SecureData'>SecureData</a> front_side:flags.1?<a href='/type/SecureFile'>SecureFile</a> reverse_side:flags.2?<a href='/type/SecureFile'>SecureFile</a> selfie:flags.3?<a href='/type/SecureFile'>SecureFile</a> translation:flags.6?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> files:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> plain_data:flags.5?<a href='/type/SecurePlainData'>SecurePlainData</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureValue'>SecureValue</a>; + +<a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>; + +<a href='/constructor/messageActionSecureValuesSentMe'>messageActionSecureValuesSentMe</a>#1b287353 values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/MessageAction'>MessageAction</a>; +<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updateNewMessage'>updateNewMessage</a>#1f2b0afd message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;</code></pre> +<p>When the user confirms your request by pressing the 'Authorize' button, the MTProto API sends an <a href="/constructor/updateNewMessage">updateNewMessage</a> from the user, with a <a href="/constructor/messageService">messageService</a> constructor, containing a <a href="/constructor/messageActionSecureValuesSentMe">messageActionSecureValuesSentMe</a> constructor that contains the encrypted Telegram Passport data.</p> +<h4><a class="anchor" href="#decrypting-data" id="decrypting-data" name="decrypting-data"><i class="anchor-icon"></i></a>Decrypting data</h4> +<pre><code><a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>; + +<a href='/constructor/messageActionSecureValuesSentMe'>messageActionSecureValuesSentMe</a>#1b287353 values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/MessageAction'>MessageAction</a>; </code></pre> +<p>To decrypt the received data, first, decrypt the credentials contained in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>.</p> +<ol> +<li> +<p>Decrypt the credentials secret ( <em>secret</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) using your <strong>private</strong> key (set OAEP padding option, e.g. <code>OPENSSL_PKCS1_OAEP_PADDING</code> in PHP)</p> +</li> +<li> +<p>Use this secret and the credentials hash ( <em>hash</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) to calculate <em>credentials_key</em> and <em>credentials_iv</em> as described below:</p> +<pre><code> credentials_secret_hash = SHA512( credentials_secret + credentials_hash ) + credentials_key = slice( credentials_secret_hash, 0, 32 ) + credentials_iv = slice( credentials_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Decrypt the credentials data ( <em>data</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) by AES256-CBC using these <em>credentials_key</em> and <em>credentials_iv</em>. <strong>IMPORTANT:</strong> At this step, make sure that the credentials hash is equal to <code>SHA256( credentials_data )</code></p> +</li> +<li> +<p>Credentials data is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of this padding (including this byte). Remove the padding to get the data.</p> +</li> +</ol> +<blockquote> +<p>Note that all hashes are raw binary data, not hexits</p> +</blockquote> +<h4><a class="anchor" href="#credentials" id="credentials" name="credentials"><i class="anchor-icon"></i></a>Credentials</h4> +<p>The credentials are a JSON-serialized object, structured exactly as in the <a href="/passport#credentials">bot API »</a>. +Since decryption credentials are E2E encrypted, apps have to store the decryption credentials as JSON and not TL payloads.</p> +<p>The credentials are used as described in the <a href="/passport#credentials">Passport Manual</a> to decrypt the files attached to the <a href="/constructor/secureValue">secureValue</a>. +In this case, the container for the E2E encrypted data is in TL, while the encrypted data itself is in JSON.</p> +<h5><a class="anchor" href="#securevalue" id="securevalue" name="securevalue"><i class="anchor-icon"></i></a><a href="/constructor/secureValue">secureValue</a></h5> +<pre><code><a href='/constructor/secureValue'>secureValue</a>#187fa0ca flags:<a href='/type/%23'>#</a> type:<a href='/type/SecureValueType'>SecureValueType</a> data:flags.0?<a href='/type/SecureData'>SecureData</a> front_side:flags.1?<a href='/type/SecureFile'>SecureFile</a> reverse_side:flags.2?<a href='/type/SecureFile'>SecureFile</a> selfie:flags.3?<a href='/type/SecureFile'>SecureFile</a> translation:flags.6?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> files:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> plain_data:flags.5?<a href='/type/SecurePlainData'>SecurePlainData</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureValue'>SecureValue</a>; + +<a href='/constructor/messageActionSecureValuesSentMe'>messageActionSecureValuesSentMe</a>#1b287353 values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/MessageAction'>MessageAction</a>; </code></pre> +<p>The schema for the <a href="/constructor/inputSecureValue">secureValue</a> constructor defines the constructor that can be found in each field.</p> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>type</strong></td> +<td><a href="/type/SecureValueType">SecureValueType</a></td> +<td>Secure <a href="/passport">passport</a> value type</td> +</tr> +<tr> +<td><strong>data</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/SecureData">SecureData</a></td> +<td>Encrypted <a href="/passport">Telegram Passport</a> element data</td> +</tr> +<tr> +<td><strong>front_side</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/SecureFile">SecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the front side of the document</td> +</tr> +<tr> +<td><strong>reverse_side</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/SecureFile">SecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the reverse side of the document</td> +</tr> +<tr> +<td><strong>selfie</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/SecureFile">SecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with a selfie of the user holding the document</td> +</tr> +<tr> +<td><strong>translation</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/Vector%20t">Vector</a><<a href="/type/SecureFile">SecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with translated versions of the provided documents</td> +</tr> +<tr> +<td><strong>files</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/SecureFile">SecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with photos the of the documents</td> +</tr> +<tr> +<td><strong>plain_data</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/SecurePlainData">SecurePlainData</a></td> +<td>Plaintext verified <a href="/passport">passport</a> data</td> +</tr> +<tr> +<td><strong>hash</strong></td> +<td><a href="/type/bytes">bytes</a></td> +<td>Data hash</td> +</tr> +</tbody> +</table> +<p>Here's a list of possible <a href="/type/SecureValueType">SecureValueTypes</a>, and the parameters that can be set/requested when using each type.</p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Allowed fields</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/secureValueTypeEmail">secureValueTypeEmail</a></td> +<td><code>plain_data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeEmail">secureValueTypePhone</a></td> +<td><code>plain_data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePersonalDetails">secureValueTypePersonalDetails</a></td> +<td><code>data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassport">secureValueTypePassport</a></td> +<td><code>data</code>, <code>front_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a></td> +<td><code>data</code>, <code>front_side</code>, <code>reverse_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a></td> +<td><code>data</code>, <code>front_side</code>, <code>reverse_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></td> +<td><code>data</code>, <code>front_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeAddress">secureValueTypeAddress</a></td> +<td><code>data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeUtilityBill">secureValueTypeUtilityBill</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeBankStatement">secureValueTypeBankStatement</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeRentalAgreement">secureValueTypeRentalAgreement</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassportRegistration">secureValueTypePassportRegistration</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeTemporaryRegistration">secureValueTypeTemporaryRegistration</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +</tbody> +</table> +<h5><a class="anchor" href="#securedata" id="securedata" name="securedata"><i class="anchor-icon"></i></a><a href="/type/SecureData">SecureData</a></h5> +<pre><code><a href='/constructor/secureData'>secureData</a>#8aeabec3 data:<a href='/type/bytes'>bytes</a> data_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureData'>SecureData</a>;</code></pre> +<p>Data is an encrypted and padded JSON-serialized object of one of the specified JSON types, depending on the chosen <a href="/type/SecureValueType">type</a>.</p> +<table class="table"> +<thead> +<tr> +<th>Chosen type</th> +<th>JSON object</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/secureValueTypePersonalDetails">secureValueTypePersonalDetails</a></td> +<td><a href="/passport#personaldetails">PersonalDetails</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassport">secureValueTypePassport</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeAddress">secureValueTypeAddress</a></td> +<td><a href="/passport#residentialaddress">ResidentialAddress</a></td> +</tr> +</tbody> +</table> +<p><a href="/passport#datacredentials">DataCredentials</a> extracted <a href="#credentials">from the credentials</a> can then be used to decrypt encrypted data from the <em>data</em> field in <a href="/constructor/secureData">secureData</a>. +For more info on how to decrypt the <em>data</em> field, see the <a href="/passport#datacredentials">passport manual</a>.</p> +<h5><a class="anchor" href="#securefile" id="securefile" name="securefile"><i class="anchor-icon"></i></a><a href="/type/SecureFile">SecureFile</a></h5> +<pre><code><a href='/constructor/secureFile'>secureFile</a>#e0277a62 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureFile'>SecureFile</a>; + +<a href='/constructor/inputSecureFileLocation'>inputSecureFileLocation</a>#cbc7ee28 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; + +---functions--- + +<a href='/method/upload.getFile'>upload.getFile</a>#b15a9afc flags:<a href='/type/%23'>#</a> precise:flags.0?<a href='/constructor/true'>true</a> cdn_supported:flags.1?<a href='/constructor/true'>true</a> location:<a href='/type/InputFileLocation'>InputFileLocation</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/upload.File'>upload.File</a>;</code></pre> +<p>Files (JPG format when decrypted, max. 10MB) are downloaded chunk by chunk as described in <a href="/api/files">files »</a>, except that instead of generating an <a href="/constructor/inputFile">inputFileLocation</a>, an <a href="/constructor/inputFileLocation">inputFileLocation</a> should be generated, instead.</p> +<ul> +<li>The <code>id</code> field is the <code>id</code> of the <a href="/constructor/secureFile">secureFile</a></li> +<li>The <code>access_hash</code> field is the <code>access_hash</code> of the <a href="/constructor/secureFile">secureFile</a></li> +</ul> +<p><a href="/passport#filecredentials">FileCredentials</a> extracted <a href="#credentials">from the credentials</a> can then be used to decrypt downloaded encrypted data. +For more info on how to decrypt passport files, see the <a href="/passport#filecredentials">passport manual</a>.</p> +<h5><a class="anchor" href="#secureplaindata" id="secureplaindata" name="secureplaindata"><i class="anchor-icon"></i></a><a href="/type/SecurePlainData">SecurePlainData</a></h5> +<pre><code><a href='/constructor/securePlainPhone'>securePlainPhone</a>#7d6099dd phone:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; +<a href='/constructor/securePlainEmail'>securePlainEmail</a>#21ec5a5f email:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>;</code></pre> +<p>The email/phone is passed in plaintext using the respective <a href="/type/SecurePlainData">SecurePlainData</a> constructor. +Emails and phone numbers sent using telegram passport are <em>already verified</em> as described in the <a href="/passport/encryption#secureplaindata">passport manual</a>.</p> +<h4><a class="anchor" href="#fixing-errors" id="fixing-errors" name="fixing-errors"><i class="anchor-icon"></i></a>Fixing errors</h4> +<pre><code><a href='/constructor/secureValueErrorData'>secureValueErrorData</a>#e8a40bd9 type:<a href='/type/SecureValueType'>SecureValueType</a> data_hash:<a href='/type/bytes'>bytes</a> field:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFrontSide'>secureValueErrorFrontSide</a>#be3dfa type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorReverseSide'>secureValueErrorReverseSide</a>#868a2aa5 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorSelfie'>secureValueErrorSelfie</a>#e537ced6 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFile'>secureValueErrorFile</a>#7a700873 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFiles'>secureValueErrorFiles</a>#666220e9 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueError'>secureValueError</a>#869d758f type:<a href='/type/SecureValueType'>SecureValueType</a> hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorTranslationFile'>secureValueErrorTranslationFile</a>#a1144770 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorTranslationFiles'>secureValueErrorTranslationFiles</a>#34636dd8 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; + +<a href='/constructor/inputUser'>inputUser</a>#f21158c6 user_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputUser'>InputUser</a>; + + +---functions--- + +<a href='/method/users.setSecureValueErrors'>users.setSecureValueErrors</a>#90c894b5 id:<a href='/type/InputUser'>InputUser</a> errors:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueError'>SecureValueError</a>> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>If the data you received contains errors, the bot can use the <a href="/method/users.setSecureValueErrors">users.setSecureValueErrors</a> method to inform the user and <a href="#requesting-information">request information</a> again. The user will not be able to resend the data, until all errors are fixed.</p> +<p>Descriptions of the method parameters can be found in the method's <a href="/method/users.setSecureValueErrors">documentation page »</a>.</p> +<h3><a class="anchor" href="#as-a-user" id="as-a-user" name="as-a-user"><i class="anchor-icon"></i></a>As a user</h3> +<h4><a class="anchor" href="#receiving-requests" id="receiving-requests" name="receiving-requests"><i class="anchor-icon"></i></a>Receiving requests</h4> +<p>The process starts when your app receives an event from one of the <a href="/passport#sdk">SDKs</a>, or from a custom source.</p> +<h4><a class="anchor" href="#uri-format" id="uri-format" name="uri-format"><i class="anchor-icon"></i></a>URI format</h4> +<p>The SDKs trigger a passport authorization request by opening the following Telegram-specific URI:</p> +<pre><code>tg://resolve?params</code></pre> +<p>With the following query string parameters:</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Parameters</strong></td> +<td><strong>Type</strong></td> +<td><strong>Required</strong></td> +</tr> +<tr> +<td>domain</td> +<td>String</td> +<td>Yes</td> +</tr> +<tr> +<td>bot_id</td> +<td>Integer</td> +<td>Yes</td> +</tr> +<tr> +<td>scope</td> +<td><a href="#uripassportscope">UriPassportScope</a></td> +<td>Yes</td> +</tr> +<tr> +<td>public_key</td> +<td>String</td> +<td>Yes</td> +</tr> +<tr> +<td>nonce</td> +<td>String</td> +<td>Yes</td> +</tr> +<tr> +<td>callback_url</td> +<td>String</td> +<td>Optional</td> +</tr> +<tr> +<td>payload</td> +<td>String</td> +<td>Optional</td> +</tr> +</tbody> +</table> +<p>Example URI, generated by the <a href="/passport/example">Telegram Passport Example page</a>:</p> +<pre><code>tg://resolve?domain=telegrampassport&bot_id=543260180&scope=%7B%22v%22%3A1%2C%22d%22%3A%5B%7B%22_%22%3A%22pd%22%2C%22n%22%3A1%7D%2C%22ad%22%2C%22pn%22%2C%22em%22%2C%7B%22_%22%3A%5B%7B%22_%22%3A%22pp%22%2C%22s%22%3A1%2C%22t%22%3A1%7D%2C%22ip%22%2C%22dl%22%2C%22ic%22%5D%7D%2C%7B%22_%22%3A%5B%22ub%22%2C%22bs%22%2C%22ra%22%2C%22pr%22%2C%22tr%22%5D%7D%5D%7D&public_key=-----BEGIN%20PUBLIC%20KEY-----%0AMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv6m1zBF8lZOCqcxf8hnj%0AkvHwuWdU8s4rBWaxKXH%2FvDDUklcCS5uhSnmjhxWca9suubaG3lW4HxlCilkeJPVf%0Ajimg5Q8ZqWrR3OoOihEpcG9iJZTOEpsEk7VtEiabgacBG3Quv9JslTrDe95Fn801%0At9d21HXwgMrHeHpWDOn31Dr%2BwoEH%2BkwySUWa6L%2FZbnGwSNP7eeDTE7Amz1RMDk3t%0A8EWGq58u0IQatPcEH09aUQlKzk6MIiALkZ9ILBKCBk6d2WCokKnsdBctovNbxwSx%0AhP1qst1r%2BYc8iPBZozsDC0ZsC5jXCkcODI3OC0tkNtYzN2XKalW5R0DjDRUDmGhT%0AzQIDAQAB%0A-----END%20PUBLIC%20KEY-----%0A&nonce=b8e892dc2e0afe63424d101b964f1256_32858210_708614a4585b84872e&callback_url=https%3A%2F%2Fcore.telegram.org%2Fpassport%2Fexample%3Fpassport_ssid%3Db8e892dc2e0afe63424d101b964f1256_32858210_db259b427f200751ce&payload=b8e892dc2e0afe63424d101b964f1256_32858210_708614a4585b84872e</code></pre> +<h4><a class="anchor" href="#uripassportscope" id="uripassportscope" name="uripassportscope"><i class="anchor-icon"></i></a>UriPassportScope</h4> +<p>This object represents the data to be requested.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>d</td> +<td>Array of <a href="#uripassportscopeelement">UriPassportScopeElement</a></td> +<td>List of requested elements, each type may be used only once in the entire array of UriPassportScopeElement objects</td> +</tr> +<tr> +<td>v</td> +<td>Integer</td> +<td>Scope version, must be <em>1</em></td> +</tr> +</tbody> +</table> +<h5><a class="anchor" href="#uripassportscopeelement" id="uripassportscopeelement" name="uripassportscopeelement"><i class="anchor-icon"></i></a>UriPassportScopeElement</h5> +<p>This object represents a requested element, should be one of:</p> +<ul> +<li><a href="#uripassportscopeelementoneofseveral">UriPassportScopeElementOneOfSeveral</a> - use to request any one of the documents included in the scope.</li> +<li><a href="#uripassportscopeelementone">UriPassportScopeElementOne</a> – use to request one particular document.</li> +</ul> +<p>Passport document type identifiers are aliased with the following reduced type identifiers:</p> +<table class="table"> +<thead> +<tr> +<th><strong>Full</strong></th> +<th><strong>Alias</strong></th> +</tr> +</thead> +<tbody> +<tr> +<td><code>personal_details</code></td> +<td><code>pd</code></td> +</tr> +<tr> +<td><code>passport</code></td> +<td><code>pp</code></td> +</tr> +<tr> +<td><code>driver_license</code></td> +<td><code>dl</code></td> +</tr> +<tr> +<td><code>identity_card</code></td> +<td><code>ic</code></td> +</tr> +<tr> +<td><code>internal_passport</code></td> +<td><code>ip</code></td> +</tr> +<tr> +<td><code>id_document</code></td> +<td><code>idd</code></td> +</tr> +<tr> +<td><code>address</code></td> +<td><code>ad</code></td> +</tr> +<tr> +<td><code>utility_bill</code></td> +<td><code>ub</code></td> +</tr> +<tr> +<td><code>bank_statement</code></td> +<td><code>bs</code></td> +</tr> +<tr> +<td><code>rental_agreement</code></td> +<td><code>ra</code></td> +</tr> +<tr> +<td><code>passport_registration</code></td> +<td><code>pr</code></td> +</tr> +<tr> +<td><code>temporary_registration</code></td> +<td><code>tr</code></td> +</tr> +<tr> +<td><code>address_document</code></td> +<td><code>add</code></td> +</tr> +<tr> +<td><code>phone_number</code></td> +<td><code>pn</code></td> +</tr> +<tr> +<td><code>email</code></td> +<td><code>em</code></td> +</tr> +</tbody> +</table> +<p>You can use the special type "idd" as an alias for one of "pp", "dl", "ic" and the special type "add" as an alias for one of "ub", "bs", "ra". </p> +<h4><a class="anchor" href="#uripassportscopeelementoneofseveral" id="uripassportscopeelementoneofseveral" name="uripassportscopeelementoneofseveral"><i class="anchor-icon"></i></a>UriPassportScopeElementOneOfSeveral</h4> +<p>This object represents several elements one of which must be provided.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>_</td> +<td>Array of <a href="#uripassportscopeelementone">UriPassportScopeElementOne</a></td> +<td>List of elements one of which must be provided; must contain either several of “pp”, “dl”, “ic”, “ip” <strong>or</strong> several of “ub”, “bs”, “ra”, “pr”, “tr”</td> +</tr> +<tr> +<td>s</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document from this list that the user chooses to upload.</td> +</tr> +<tr> +<td>t</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a translation of the document from this list that the user chooses to upload. <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#uripassportscopeelementone" id="uripassportscopeelementone" name="uripassportscopeelementone"><i class="anchor-icon"></i></a>UriPassportScopeElementOne</h4> +<p>This object represents one particular element that must be provided. If no options are needed, <em>String</em> can be used instead of this object to specify the type of the element.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>_</td> +<td>String</td> +<td>Element type. One of "pd", "pp", "dl", "ic", "ip", "ad", "ub", "bs", "ra", "pr", "tr", "pn", "em"</td> +</tr> +<tr> +<td>s</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document as well. Available for "pp", "dl", "ic" and "ip"</td> +</tr> +<tr> +<td>t</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a translation of the document as well. Available for "pp", "dl", "ic", "ip", "ub", "bs", "ra", "pr" and "tr". <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td> +</tr> +<tr> +<td>n</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter to request the first, last and middle name of the user in the language of the user's country of residence. Available for "pd"</td> +</tr> +</tbody> +</table> +<p>You can also use the special type "idd" as an alias for one of "pp", "dl", "ic" and the special type "add" as an alias for one of "ub", "bs", "ra". </p> +<h4><a class="anchor" href="#setting-up-telegram-passport" id="setting-up-telegram-passport" name="setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting up Telegram Passport</h4> +<p>The next step for the client app is to request the user's 2FA passport, and configure Telegram Passport/fetch and decrypt remotely saved Telegram Passport parameters as described in the <a href="/passport/encryption">Encryption article »</a>.</p> +<h4><a class="anchor" href="#fetching-the-passport-form" id="fetching-the-passport-form" name="fetching-the-passport-form"><i class="anchor-icon"></i></a>Fetching the passport form</h4> +<pre><code><a href='/constructor/account.authorizationForm'>account.authorizationForm</a>#ad2e1cd8 flags:<a href='/type/%23'>#</a> required_types:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureRequiredType'>SecureRequiredType</a>> values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> errors:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueError'>SecureValueError</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> privacy_policy_url:flags.0?<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>; + +---functions--- + +<a href='/method/account.getAuthorizationForm'>account.getAuthorizationForm</a>#a929597a bot_id:<a href='/type/long'>long</a> scope:<a href='/type/string'>string</a> public_key:<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>;</code></pre> +<p>Then, the client app passes the bot ID, scope and public key from the <a href="#receiving-requests">passport authorization request</a> to the Telegram servers using the <a href="/method/account.getAuthorizationForm">account.getAuthorizationForm</a> method.</p> +<p>The response will be an <a href="/constructor/account.authorizationForm">account.authorizationForm</a> constructor, with info about the required document types, the URL of the service's privacy policy, as well as info about the bot to which the form should be sent. +If the form was already submitted at least once, the constructor will also contain a list of already submitted data, along with eventual errors. </p> +<p>The user should accept the privacy policy and proceed to fill in the required data, and the client should encrypt and upload it as described in the <a href="/passport/encryption">Encryption article »</a>.</p> +<h4><a class="anchor" href="#submitting-the-passport-form" id="submitting-the-passport-form" name="submitting-the-passport-form"><i class="anchor-icon"></i></a>Submitting the passport form</h4> +<pre><code><a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>; + +<a href='/constructor/secureValueHash'>secureValueHash</a>#ed1ecdb0 type:<a href='/type/SecureValueType'>SecureValueType</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureValueHash'>SecureValueHash</a>; + +---functions--- + +<a href='/method/account.acceptAuthorization'>account.acceptAuthorization</a>#f3ed4c73 bot_id:<a href='/type/long'>long</a> scope:<a href='/type/string'>string</a> public_key:<a href='/type/string'>string</a> value_hashes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueHash'>SecureValueHash</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Once the user finishes uploading the required documents and clicks on the submit button, the client calls <a href="/method/account.acceptAuthorization">account.acceptAuthorization</a>, submitting the documents to the bot associated to the service.</p> +<ul> +<li>As before, <code>bot_id</code>, <code>scope</code> and <code>public_key</code> are taken from the authorization request URI.</li> +<li><code>value_hashes</code> is used by the server to choose which document of which type to send to the bot: the <code>type</code> field should be set to the document type, and the <code>hash</code> field should be set to the <code>data_hash</code>/<code>file_hash</code> generated when <a href="/passport/encryption#encryption">uploading encrypting the data »</a>.</li> +<li><code>credentials</code> contains the encrypted credentials required by the service to decrypt the sent E2E encrypted secure values: it is generated as described in <a href="/passport/encryption#passport-credentials">Passport Credentials »</a>.</li> +</ul> +<p>Finally, the client opens the callback URL (if present).</p> +<h4><a class="anchor" href="#handling-invalid-forms" id="handling-invalid-forms" name="handling-invalid-forms"><i class="anchor-icon"></i></a>Handling invalid forms</h4> +<pre><code><a href='/constructor/secureValueErrorData'>secureValueErrorData</a>#e8a40bd9 type:<a href='/type/SecureValueType'>SecureValueType</a> data_hash:<a href='/type/bytes'>bytes</a> field:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFrontSide'>secureValueErrorFrontSide</a>#be3dfa type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorReverseSide'>secureValueErrorReverseSide</a>#868a2aa5 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorSelfie'>secureValueErrorSelfie</a>#e537ced6 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFile'>secureValueErrorFile</a>#7a700873 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFiles'>secureValueErrorFiles</a>#666220e9 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueError'>secureValueError</a>#869d758f type:<a href='/type/SecureValueType'>SecureValueType</a> hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorTranslationFile'>secureValueErrorTranslationFile</a>#a1144770 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorTranslationFiles'>secureValueErrorTranslationFiles</a>#34636dd8 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; + +<a href='/constructor/account.authorizationForm'>account.authorizationForm</a>#ad2e1cd8 flags:<a href='/type/%23'>#</a> required_types:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureRequiredType'>SecureRequiredType</a>> values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> errors:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueError'>SecureValueError</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> privacy_policy_url:flags.0?<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>; + +---functions--- + +<a href='/method/account.getAuthorizationForm'>account.getAuthorizationForm</a>#a929597a bot_id:<a href='/type/long'>long</a> scope:<a href='/type/string'>string</a> public_key:<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>;</code></pre> +<p>If any of the values of the submitted form are rejected by the service, the bot <a href="/api/passport#fixing-errors">calls the appropriate method to set information about errors</a>.</p> +<p>The user can find out about these errors directly from the service, or, if they decide to <a href="#receiving-requests">restart the process</a> and resend the corrected data, directly from the authorization form (<code>errors</code> field).</p></div> + +</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/payments.html b/data/core.telegram.org/api/payments.html new file mode 100644 index 0000000000..b888371387 --- /dev/null +++ b/data/core.telegram.org/api/payments.html @@ -0,0 +1,366 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Payments API</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="You can accept payments from Telegram users via Telegram Bots. +Note: This article is intended for MTProto API developers.…"> + <meta property="og:title" content="Payments API"> + <meta property="og:image" content=""> + <meta property="og:description" content="You can accept payments from Telegram users via Telegram Bots. +Note: This article is intended for MTProto API developers.…"> + <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?215" 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/payments" >Payments API</a></li></ul></div> + <h1 id="dev_page_title">Payments API</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>You can accept payments from Telegram users via <a href="/bots">Telegram Bots</a>.</p> +<blockquote> +<p>Note: This article is intended for MTProto API developers. If you're looking for a general overview of Telegram Payments, check out the <a href="https://telegram.org/blog/payments">Telegram blog</a> and the <a href="/bots/payments">bot API payment manual</a>.</p> +</blockquote> +<h3><a class="anchor" href="#introducing-payments" id="introducing-payments" name="introducing-payments"><i class="anchor-icon"></i></a>Introducing Payments</h3> +<p>Telegram bots can accept payments for goods and services from users. +For more info on how payments work, check out the <a href="https://telegram.org/blog/payments">Telegram Blog</a> and the <a href="/bots/payments">bot API payment manual</a>.</p> +<p>This page will elaborate on the actions required to work with payments using the <strong>MTProto API</strong>.</p> +<blockquote> +<p>A simplified version of the process is available only for bots using the <a href="/bots/payments">bot API</a>.</p> +</blockquote> +<p>The first step for bots is <a href="/bots/payments#the-payments-api">enable payments as described here »</a>.</p> +<p>Then, we work with payments as follows.</p> +<h3><a class="anchor" href="#1-create-invoice" id="1-create-invoice" name="1-create-invoice"><i class="anchor-icon"></i></a>1. Create Invoice</h3> +<pre><code><a href='/constructor/inputWebDocument'>inputWebDocument</a>#9bed434d url:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/InputWebDocument'>InputWebDocument</a>; + +<a href='/constructor/labeledPrice'>labeledPrice</a>#cb296bf8 label:<a href='/type/string'>string</a> amount:<a href='/type/long'>long</a> = <a href='/type/LabeledPrice'>LabeledPrice</a>; + +<a href='/constructor/invoice'>invoice</a>#cd886e0 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> max_tip_amount:flags.8?<a href='/type/long'>long</a> suggested_tip_amounts:flags.8?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/Invoice'>Invoice</a>; + +<a href='/constructor/inputMediaInvoice'>inputMediaInvoice</a>#d9799874 flags:<a href='/type/%23'>#</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/InputWebDocument'>InputWebDocument</a> invoice:<a href='/type/Invoice'>Invoice</a> payload:<a href='/type/bytes'>bytes</a> provider:<a href='/type/string'>string</a> provider_data:<a href='/type/DataJSON'>DataJSON</a> start_param:flags.1?<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>The user contacts the bot and requests to purchase something. +The bot forms an <a href="/constructor/inputMediaInvoice">inputMediaInvoice</a> with an <a href="/constructor/invoice">invoice</a> constructor with a description of the goods or service, amount to be paid, as well as requested shipping info. +The <code>provider</code> parameter of the <a href="/constructor/inputMediaInvoice">inputMediaInvoice</a> constructor is where you put the token value that <a href="/bots/payments#the-payments-api">you've obtained earlier via Botfather</a>. It is possible for one merchant bot to use several different tokens for different users or different goods and services.</p> +<p>Use the <a href="/method/messages.sendMedia">messages.sendMedia</a> method to send the <a href="/constructor/invoice">invoice</a>. +You can also attach an inline keyboard to the message using the <code>reply_markup</code> field: if provided, the first button must be a <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button. Otherwise, an inline keyboard will be generated automatically, with a <code>Pay 'total price'</code> <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> as only button.</p> +<p>An invoice message with a pay button can only be sent to a private chat with the user. Groups and channels are not supported.</p> +<h3><a class="anchor" href="#2-order-information" id="2-order-information" name="2-order-information"><i class="anchor-icon"></i></a>2. Order information</h3> +<h4><a class="anchor" href="#21-invoice-message" id="21-invoice-message" name="21-invoice-message"><i class="anchor-icon"></i></a>2.1 Invoice message</h4> +<pre><code><a href='/constructor/keyboardButtonBuy'>keyboardButtonBuy</a>#afd93fbb text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/keyboardButtonRow'>keyboardButtonRow</a>#77608b83 buttons:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButton'>KeyboardButton</a>> = <a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>; +<a href='/constructor/replyInlineMarkup'>replyInlineMarkup</a>#48a30254 rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; + +<a href='/constructor/webDocument'>webDocument</a>#1c570ed1 url:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/WebDocument'>WebDocument</a>; +<a href='/constructor/webDocumentNoProxy'>webDocumentNoProxy</a>#f9c8bcc6 url:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/WebDocument'>WebDocument</a>; + +<a href='/constructor/messageMediaInvoice'>messageMediaInvoice</a>#84551347 flags:<a href='/type/%23'>#</a> shipping_address_requested:flags.1?<a href='/constructor/true'>true</a> test:flags.3?<a href='/constructor/true'>true</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/WebDocument'>WebDocument</a> receipt_msg_id:flags.2?<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> start_param:<a href='/type/string'>string</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updateNewMessage'>updateNewMessage</a>#1f2b0afd message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;</code></pre> +<p>The user receives an <a href="/constructor/updateNewMessage">updateNewMessage</a> constructor from the bot, containing a <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> constructor with basic info about the product.</p> +<p>The <a href="/constructor/message">message</a> will also have a <a href="/constructor/replyInlineMarkup">replyInlineMarkup</a> keyboard attached to it. +The the first button of the keyboard will always be a <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button.</p> +<h4><a class="anchor" href="#22-getting-invoice-info-about-the-product" id="22-getting-invoice-info-about-the-product" name="22-getting-invoice-info-about-the-product"><i class="anchor-icon"></i></a>2.2 Getting invoice info about the product</h4> +<pre><code><a href='/constructor/invoice'>invoice</a>#cd886e0 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> max_tip_amount:flags.8?<a href='/type/long'>long</a> suggested_tip_amounts:flags.8?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/Invoice'>Invoice</a>; + +<a href='/constructor/paymentRequestedInfo'>paymentRequestedInfo</a>#909c3f94 flags:<a href='/type/%23'>#</a> name:flags.0?<a href='/type/string'>string</a> phone:flags.1?<a href='/type/string'>string</a> email:flags.2?<a href='/type/string'>string</a> shipping_address:flags.3?<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a>; + +<a href='/constructor/paymentSavedCredentialsCard'>paymentSavedCredentialsCard</a>#cdc27a1f id:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> = <a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>; + +---functions--- + +<a href='/method/payments.getPaymentForm'>payments.getPaymentForm</a>#8a333c8d flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> theme_params:flags.0?<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<p>If the user clicks on the <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button, the client proceeds to call <a href="/method/payments.getPaymentForm">payments.getPaymentForm</a> with the message ID of the invoice preview message to get the <a href="/constructor/payments.paymentForm">payment form</a>.</p> +<p>The returned form will contain fields that should be passed to the payment provider along with the full <a href="/constructor/invoice">invoice</a>. +The payment form also contains info about previously saved payment credentials and order information (name, phone number, email, shipping address & so on).</p> +<p>The full <a href="/constructor/invoice">invoice</a> contains info about the information required for the order, the price and the currency, and whether this is a <code>test</code> order.</p> +<h4><a class="anchor" href="#23-verifying-information" id="23-verifying-information" name="23-verifying-information"><i class="anchor-icon"></i></a>2.3 Verifying information</h4> +<pre><code><a href='/constructor/invoice'>invoice</a>#cd886e0 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> max_tip_amount:flags.8?<a href='/type/long'>long</a> suggested_tip_amounts:flags.8?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/Invoice'>Invoice</a>; + +<a href='/constructor/postAddress'>postAddress</a>#1e8caaeb street_line1:<a href='/type/string'>string</a> street_line2:<a href='/type/string'>string</a> city:<a href='/type/string'>string</a> state:<a href='/type/string'>string</a> country_iso2:<a href='/type/string'>string</a> post_code:<a href='/type/string'>string</a> = <a href='/type/PostAddress'>PostAddress</a>; + +<a href='/constructor/paymentRequestedInfo'>paymentRequestedInfo</a>#909c3f94 flags:<a href='/type/%23'>#</a> name:flags.0?<a href='/type/string'>string</a> phone:flags.1?<a href='/type/string'>string</a> email:flags.2?<a href='/type/string'>string</a> shipping_address:flags.3?<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a>; + +<a href='/constructor/payments.validatedRequestedInfo'>payments.validatedRequestedInfo</a>#d1451883 flags:<a href='/type/%23'>#</a> id:flags.0?<a href='/type/string'>string</a> shipping_options:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/ShippingOption'>ShippingOption</a>> = <a href='/type/payments.ValidatedRequestedInfo'>payments.ValidatedRequestedInfo</a>; + +---functions--- + +<a href='/method/payments.validateRequestedInfo'>payments.validateRequestedInfo</a>#db103170 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> info:<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> = <a href='/type/payments.ValidatedRequestedInfo'>payments.ValidatedRequestedInfo</a>;</code></pre> +<p>If any data at all is requested by the <a href="/constructor/invoice"><strong>invoice</strong></a> (<code>name_requested</code>, <code>phone_requested</code>, <code>email_requested</code>, <code>shipping_address_requested</code>), the user must call <a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a>, providing the required data (as usual, <code>msg_id</code> is the ID of the invoice message). +The user can choose to save order information for future use by setting the <code>save</code> flag. +Data can be autofilled as described in <a href="#2-3-1-autofill">autofill</a>.</p> +<p>If no errors are found in the submitted info, the <a href="/constructor/payments.ValidatedRequestedInfo">response</a> of the method will contain an <code>id</code> flag, to be used later to complete the payment.</p> +<p>If the <code>flexible</code> flag of the invoice is set, calling the <a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a> method will send a <a href="/constructor/updateBotShippingQuery">shipping query update</a> to the bot, to which the bot will reply with the available shipping options for the specified address <a href="#2-4-select-delivery-option">as described here »</a>. +The return value in this case will also contain a <code>shipping_options</code> field with the available shipping options.</p> +<p>If any errors are found in the submmitted data, a <a href="/constructor/updateServiceNotification">service notification</a> will be sent to the user, with a description of the error from the bot.</p> +<h4><a class="anchor" href="#231-autofill" id="231-autofill" name="231-autofill"><i class="anchor-icon"></i></a>2.3.1 Autofill</h4> +<pre><code><a href='/constructor/payments.savedInfo'>payments.savedInfo</a>#fb8fe43c flags:<a href='/type/%23'>#</a> has_saved_credentials:flags.1?<a href='/constructor/true'>true</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> = <a href='/type/payments.SavedInfo'>payments.SavedInfo</a>; + +---functions--- + +<a href='/method/payments.getSavedInfo'>payments.getSavedInfo</a>#227d824b = <a href='/type/payments.SavedInfo'>payments.SavedInfo</a>; +<a href='/method/payments.clearSavedInfo'>payments.clearSavedInfo</a>#d83d70c1 flags:<a href='/type/%23'>#</a> credentials:flags.0?<a href='/constructor/true'>true</a> info:flags.1?<a href='/constructor/true'>true</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>The requested fields can be autofilled with the info provided in the <code>saved_info</code> field of the <a href="/constructor/payments.paymentForm">payment form</a>, or with the info fetched manually using <a href="/method/payments.getSavedInfo">payments.getSavedInfo</a>.</p> +<p>Saved order information can also be cleared using <a href="/method/payments.clearSavedInfo">payments.clearSavedInfo</a>.</p> +<h4><a class="anchor" href="#24-select-delivery-option" id="24-select-delivery-option" name="24-select-delivery-option"><i class="anchor-icon"></i></a>2.4 Select delivery option</h4> +<pre><code><a href='/constructor/labeledPrice'>labeledPrice</a>#cb296bf8 label:<a href='/type/string'>string</a> amount:<a href='/type/long'>long</a> = <a href='/type/LabeledPrice'>LabeledPrice</a>; + +<a href='/constructor/shippingOption'>shippingOption</a>#b6213cdf id:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> = <a href='/type/ShippingOption'>ShippingOption</a>; + +<a href='/constructor/updateBotShippingQuery'>updateBotShippingQuery</a>#b5aefd7d query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> payload:<a href='/type/bytes'>bytes</a> shipping_address:<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.setBotShippingResults'>messages.setBotShippingResults</a>#e5f672fa flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> error:flags.0?<a href='/type/string'>string</a> shipping_options:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/ShippingOption'>ShippingOption</a>> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>If a shipping address was requested and the bot included the parameter <code>flexible</code>, when the user <a href="#2-3-verifying-information">validates order information</a> the Telegram API will send an <a href="/constructor/updateBotShippingQuery">updateBotShippingQuery</a> to the bot. +The bot must respond using <a href="/method/messages.setBotShippingResults">messages.setBotShippingResults</a> either with a list of possible delivery options and the relevant delivery prices, or with an error (for example, if delivery to the specified address is not possible).</p> +<p>The returned shipping options or the shipping error will be returned to the user while <a href="#2-3-verifying-information">validating order information</a>.</p> +<h3><a class="anchor" href="#3-payment" id="3-payment" name="3-payment"><i class="anchor-icon"></i></a>3. Payment</h3> +<pre><code><a href='/constructor/inputPaymentCredentialsSaved'>inputPaymentCredentialsSaved</a>#c10eb2cf id:<a href='/type/string'>string</a> tmp_password:<a href='/type/bytes'>bytes</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentialsApplePay'>inputPaymentCredentialsApplePay</a>#aa1c39f payment_data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentialsGooglePay'>inputPaymentCredentialsGooglePay</a>#8ac32801 payment_token:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<h4><a class="anchor" href="#31-web-payment" id="31-web-payment" name="31-web-payment"><i class="anchor-icon"></i></a>3.1 Web payment</h4> +<pre><code><a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<p>Typically, payment takes place by opening the <code>url</code> in the specified <a href="/constructor/payments.paymentForm">payment form</a>, which leads to a payment form on the website of the payment gateway. +Once the user finishes entering their payment credentials, a <a href="/api/web-events"><code>payment_form_submit</code> web event</a> is generated by the payment gateway, containing <code>data</code> and <code>title</code> JSON fields.</p> +<p>The <code>title</code> is used by the client app to represent the payment credentials (typically a censored version of credit card information). +The <code>data</code> is used to generate an <a href="/constructor/inputPaymentCredentials">inputPaymentCredentials</a> constructor. +Eventually, you can set the <code>save</code> flag to save the credit card info for future use, only if <a href="/api/srp">2FA</a> is enabled.</p> +<p>Telegram <strong>does not</strong> have access to your card information. Credit card details will be handled only by the payment system.</p> +<h4><a class="anchor" href="#32-native-payment" id="32-native-payment" name="32-native-payment"><i class="anchor-icon"></i></a>3.2 Native payment</h4> +<pre><code><a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<p>Most telegram apps support working natively with the native APIs of some payment providers, without opening the website of the payment and receiving a JS event.</p> +<p>This is done using the JSON <code>native_params</code> parameters field of the <a href="/constructor/payments.paymentForm">payments.paymentForm</a> constructor, which contains an object, which can contain one or more of the following fields:</p> +<ul> +<li><code>publishable_key</code>: Stripe API publishable key</li> +<li><code>apple_pay_merchant_id</code>: Apple Pay merchant ID</li> +<li><code>android_pay_public_key</code>: Android Pay public key</li> +<li><code>android_pay_bgcolor</code>: Android Pay form background color</li> +<li><code>android_pay_inverse</code>: Whether to use the dark theme in the Android Pay form</li> +<li><code>need_country</code>: True, if the user country must be provided,</li> +<li><code>need_zip</code>: True, if the user ZIP/postal code must be provided,</li> +<li><code>need_cardholder_name</code>: True, if the cardholder name must be provided</li> +</ul> +<p>The payment gateway to use is decided based on the value of the <code>native_provider</code> field.</p> +<h5><a class="anchor" href="#321-stripe" id="321-stripe" name="321-stripe"><i class="anchor-icon"></i></a>3.2.1 Stripe</h5> +<pre><code><a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<p>If the <code>native_provider</code> field is set and equal to <code>stripe</code>, the client can make use of the <a href="https://stripe.com/docs/api/tokens/object">native Stripe token APIs</a> with the <code>publishable_key</code> from the <code>native_params</code> to add a payment method to Stripe, and then use the token <code>type</code> and <code>id</code> to generate a JSON object:</p> +<pre><code>{"type":"token.type", "id":"token.id"}"</code></pre> +<p>The generated JSON object can then be passed to the <code>data</code> field of the <a href="/constructor/inputPaymentCredentials">inputPaymentCredentials</a>. +Eventually, you can set the <code>save</code> flag to save the credit card info for future use, only if <a href="/api/srp">2FA</a> is enabled.</p> +<p>Telegram <strong>does not</strong> have access to your card information. Credit card details will be handled only by the payment system.</p> +<p>Example implementation: <a href="https://github.com/DrKLO/Telegram">Telegram for Android</a>.</p> +<h4><a class="anchor" href="#33-apple-pay" id="33-apple-pay" name="33-apple-pay"><i class="anchor-icon"></i></a>3.3 Apple pay</h4> +<pre><code><a href='/constructor/inputPaymentCredentialsApplePay'>inputPaymentCredentialsApplePay</a>#aa1c39f payment_data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>;</code></pre> +<p>On iOS devices, Apple Pay can be used to generate payment data, which is then sent using the <a href="/constructor/inputPaymentCredentialsApplePay">inputPaymentCredentialsApplePay</a> constructor.</p> +<p>Example implementation: <a href="https://github.com/TelegramMessenger/Telegram-iOS/">Telegram for iOS</a>.</p> +<h4><a class="anchor" href="#34-android-pay" id="34-android-pay" name="34-android-pay"><i class="anchor-icon"></i></a>3.4 Android pay</h4> +<pre><code><a href='/constructor/inputPaymentCredentialsGooglePay'>inputPaymentCredentialsGooglePay</a>#8ac32801 payment_token:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>;</code></pre> +<p>On Android devices, Google Pay can be used to generate payment data, which is then sent using the <a href="/constructor/inputPaymentCredentialsApplePay">inputPaymentCredentialsGooglePay</a> constructor.</p> +<p>Example implementation: <a href="https://github.com/DrKLO/Telegram/blob/ff5735503e068a6f1cada09b977f633df7caf98d/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java">Telegram for Android</a>.</p> +<h4><a class="anchor" href="#35-using-saved-payment-credentials" id="35-using-saved-payment-credentials" name="35-using-saved-payment-credentials"><i class="anchor-icon"></i></a>3.5 Using saved payment credentials</h4> +<pre><code><a href='/constructor/inputPaymentCredentialsSaved'>inputPaymentCredentialsSaved</a>#c10eb2cf id:<a href='/type/string'>string</a> tmp_password:<a href='/type/bytes'>bytes</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/paymentSavedCredentialsCard'>paymentSavedCredentialsCard</a>#cdc27a1f id:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> = <a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>; + +<a href='/constructor/account.tmpPassword'>account.tmpPassword</a>#db64fd34 tmp_password:<a href='/type/bytes'>bytes</a> valid_until:<a href='/type/int'>int</a> = <a href='/type/account.TmpPassword'>account.TmpPassword</a>; + +---functions--- + +<a href='/method/account.getTmpPassword'>account.getTmpPassword</a>#449e0b51 password:<a href='/type/InputCheckPasswordSRP'>InputCheckPasswordSRP</a> period:<a href='/type/int'>int</a> = <a href='/type/account.TmpPassword'>account.TmpPassword</a>;</code></pre> +<p>To reuse saved payment methods, the <code>saved_credentials</code> field of the <a href="/constructor/payments.paymentForm">payment form</a> is used. +The <code>title</code> of the <a href="/constructor/paymentSavedCredentialsCard">paymentSavedCredentialsCard</a> can be used to preview a censored version of credit card info. +The <code>id</code> field is provided by the payment provider directly to the Telegram servers when saving the payment method, and identifies the payment method. +Full credit card info <strong>is not</strong> saved on Telegram Servers, and cannot be fetched by the user.</p> +<p>In order to <strong>use</strong> the saved payment method, <a href="/api/srp">2FA</a> must be enabled: the user must verify their identity by entering their <a href="/api/srp">2FA</a> password, which is then used as described in the <a href="/api/srp">SRP docs</a> to generate SRP parameters which must be passed to <a href="/method/account.getTmpPassword">account.getTmpPassword</a>.</p> +<p>The generated temporary password can then be used to make payments using the saved credentials using the <a href="/constructor/inputPaymentCredentialsSaved">inputPaymentCredentialsSaved</a> constructor.</p> +<ul> +<li>The <code>id</code> field is the <a href="/constructor/paymentSavedCredentialsCard">paymentSavedCredentialsCard</a> <code>id</code>.</li> +<li>The <code>tmp_password</code> is the temporary payment password generated by the server, if the user provided a correct <a href="/api/srp">2FA password</a>.</li> +</ul> +<p>Example implementation: <a href="https://github.com/DrKLO/Telegram">Telegram for Android</a>.</p> +<h3><a class="anchor" href="#4-pre-checkout" id="4-pre-checkout" name="4-pre-checkout"><i class="anchor-icon"></i></a>4. Pre-Checkout</h3> +<pre><code><a href='/constructor/inputPaymentCredentialsSaved'>inputPaymentCredentialsSaved</a>#c10eb2cf id:<a href='/type/string'>string</a> tmp_password:<a href='/type/bytes'>bytes</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentialsApplePay'>inputPaymentCredentialsApplePay</a>#aa1c39f payment_data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentialsGooglePay'>inputPaymentCredentialsGooglePay</a>#8ac32801 payment_token:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/payments.paymentResult'>payments.paymentResult</a>#4e5f810d updates:<a href='/type/Updates'>Updates</a> = <a href='/type/payments.PaymentResult'>payments.PaymentResult</a>; +<a href='/constructor/payments.paymentVerificationNeeded'>payments.paymentVerificationNeeded</a>#d8411139 url:<a href='/type/string'>string</a> = <a href='/type/payments.PaymentResult'>payments.PaymentResult</a>; + +---functions--- + +<a href='/method/payments.sendPaymentForm'>payments.sendPaymentForm</a>#30c3bc9d flags:<a href='/type/%23'>#</a> form_id:<a href='/type/long'>long</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> requested_info_id:flags.0?<a href='/type/string'>string</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> credentials:<a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a> tip_amount:flags.2?<a href='/type/long'>long</a> = <a href='/type/payments.PaymentResult'>payments.PaymentResult</a>;</code></pre> +<p>After <a href="#2-3-verifying-information">verifying order information</a>, the final step for the client is to call <a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a>, with the following parameters:</p> +<ul> +<li>The <code>msg_id</code> is set to the ID of the invoice message</li> +<li><code>requested_info_id</code> is set to the <code>id</code> of the <a href="#2-3-verifying-information">verified order information</a>, if it was requested</li> +<li><code>shipping_option_id</code> is set to the <a href="#2-5-select-delivery-option">selected delivery option</a>, if shipping was requested.</li> +<li><code>credentials</code> are the payment credentials generated by the payment provider, required to complete the order.</li> +</ul> +<p>Payment method info can also be saved to the Telegram Servers and reused, by setting the <code>save</code> flag of <a href="/constructor/inputPaymentCredentials">inputPaymentCredentials</a> when sending the form. +This is only possible on accounts with <a href="/api/srp">2FA</a> enabled.</p> +<p>The bot then <a href="#4-1-receiving-pre-checkout-query">replies to the received precheckout query</a>, finally the user <a href="#5-checkout">proceeds to checkout</a>.</p> +<p>Please note that if the result of the method is a <a href="/constructor/payments.paymentVerificationNeeded">payments.paymentVerificationNeeded</a>, before <a href="#5-checkout">proceeding to checkout</a> the payment provider requires the user to verify his identity by opening the provided <code>url</code> and following instructions. +Once the user finishes working with the webpage, the client can <a href="#5-checkout">proceed to checkout</a>.</p> +<p>Eventual errors are returned in the form of RPC errors, with the description of the error by the bot contained in <a href="/constructor/updateServiceNotification">service updates</a>.</p> +<h4><a class="anchor" href="#41-receiving-pre-checkout-query" id="41-receiving-pre-checkout-query" name="41-receiving-pre-checkout-query"><i class="anchor-icon"></i></a>4.1 Receiving pre-checkout query</h4> +<pre><code><a href='/constructor/paymentRequestedInfo'>paymentRequestedInfo</a>#909c3f94 flags:<a href='/type/%23'>#</a> name:flags.0?<a href='/type/string'>string</a> phone:flags.1?<a href='/type/string'>string</a> email:flags.2?<a href='/type/string'>string</a> shipping_address:flags.3?<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a>; + +<a href='/constructor/updateBotPrecheckoutQuery'>updateBotPrecheckoutQuery</a>#8caa9a96 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> payload:<a href='/type/bytes'>bytes</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.setBotPrecheckoutResults'>messages.setBotPrecheckoutResults</a>#9c2dd95 flags:<a href='/type/%23'>#</a> success:flags.1?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> error:flags.0?<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>The user enters their payment information as described above and presses the final pay button. +At this moment the Telegram API sends an <a href="/constructor/updateBotPrecheckoutQuery">updateBotPrecheckoutQuery</a> constructor that contains all the available information about the order to the bot. +The bot must reply using <a href="/method/messages.setBotPrecheckoutResults">messages.setBotPrecheckoutResults</a> <strong>within 10 seconds</strong> after receiving this update or the transaction is canceled.</p> +<p>The bot may return an error if it can‘t process the order for any reason. We highly recommend specifying a reason for failure to complete the order in human readable form (e.g. "Sorry, we’re all out of rubber ducks! Would you be interested in a steel bear instead?"). Telegram will display this reason to the user.</p> +<h3><a class="anchor" href="#5-checkout" id="5-checkout" name="5-checkout"><i class="anchor-icon"></i></a>5. Checkout</h3> +<pre><code><a href='/constructor/keyboardButtonBuy'>keyboardButtonBuy</a>#afd93fbb text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/keyboardButtonRow'>keyboardButtonRow</a>#77608b83 buttons:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButton'>KeyboardButton</a>> = <a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>; +<a href='/constructor/replyInlineMarkup'>replyInlineMarkup</a>#48a30254 rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; + +<a href='/constructor/messageMediaInvoice'>messageMediaInvoice</a>#84551347 flags:<a href='/type/%23'>#</a> shipping_address_requested:flags.1?<a href='/constructor/true'>true</a> test:flags.3?<a href='/constructor/true'>true</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/WebDocument'>WebDocument</a> receipt_msg_id:flags.2?<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> start_param:<a href='/type/string'>string</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updateNewMessage'>updateNewMessage</a>#1f2b0afd message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; + +<a href='/constructor/payments.paymentReceipt'>payments.paymentReceipt</a>#70c4fe03 flags:<a href='/type/%23'>#</a> date:<a href='/type/int'>int</a> bot_id:<a href='/type/long'>long</a> provider_id:<a href='/type/long'>long</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.2?<a href='/type/WebDocument'>WebDocument</a> invoice:<a href='/type/Invoice'>Invoice</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping:flags.1?<a href='/type/ShippingOption'>ShippingOption</a> tip_amount:flags.3?<a href='/type/long'>long</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> credentials_title:<a href='/type/string'>string</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentReceipt'>payments.PaymentReceipt</a>; + +---functions--- + +<a href='/method/payments.getPaymentReceipt'>payments.getPaymentReceipt</a>#2478d1cc peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/payments.PaymentReceipt'>payments.PaymentReceipt</a>;</code></pre> +<p>In case the bot confirms the order, Telegram requests the payment provider to complete the transaction. If the payment information was entered correctly and the payment goes through, the Telegram API will modify the invoice message and send a service message as described below. Once your bot receives this message, it should proceed with delivering the goods or services purchased by the user.</p> +<p>If all is OK, the user receives a <a href="/constructor/payments.paymentResult">payments.paymentResult</a> in reply to the <a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a> query, containing info about the updated invoice message in the form of an <a href="/constructor/updateEditMessage">updateEditMessage</a>.</p> +<p>The invoice message will be updated as follows: the attached <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> will now have a <code>receipt_msg_id</code> field. +Clients should treat invoice messages with a <code>receipt_msg_id</code> field as receipt messages, <strong>locally</strong> modifying the label of the <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button to a localized version of the word <code>Receipt</code>. +From this point, clicking on the <code>Receipt</code> button should trigger a call to <a href="/method/payments.getPaymentReceipt">payments.getPaymentReceipt</a>, providing the <code>receipt_msg_id</code> to the <code>msg_id</code> field, which will return info about the transaction.</p> +<p>The payment will also generate one service message of type <a href="/constructor/messageActionPaymentSent">messageActionPaymentSent</a> or <a href="/constructor/messageActionPaymentSentMe">messageActionPaymentSentMe</a>, replying to the invoice. +For bots, the service message will be of type <a href="/constructor/messageActionPaymentSentMe">messageActionPaymentSentMe</a>, for users it will be a <a href="/constructor/messageActionPaymentSent">messageActionPaymentSent</a>.</p> +<pre><code><a href='/constructor/messageActionPaymentSentMe'>messageActionPaymentSentMe</a>#8f31b327 flags:<a href='/type/%23'>#</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> payload:<a href='/type/bytes'>bytes</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> charge:<a href='/type/PaymentCharge'>PaymentCharge</a> = <a href='/type/MessageAction'>MessageAction</a>; +<a href='/constructor/messageActionPaymentSent'>messageActionPaymentSent</a>#40699cd0 currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> = <a href='/type/MessageAction'>MessageAction</a>;</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="/">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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/pfs.html b/data/core.telegram.org/api/pfs.html new file mode 100644 index 0000000000..7f03a3eeee --- /dev/null +++ b/data/core.telegram.org/api/pfs.html @@ -0,0 +1,138 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Perfect Forward Secrecy</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Binding temporary authorization key to permanent ones."> + <meta property="og:title" content="Perfect Forward Secrecy"> + <meta property="og:image" content="a2b9f721d645a85533"> + <meta property="og:description" content="Binding temporary authorization key to permanent ones."> + <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?215" 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/pfs" >Perfect Forward Secrecy</a></li></ul></div> + <h1 id="dev_page_title">Perfect Forward Secrecy</h1> + + <div id="dev_page_content"><h5><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h5> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="/api/end-to-end/pfs">Perfect Forward Secrecy in Secret Chats</a></li> +<li><a href="/mtproto/security_guidelines">Security guidelines for developers</a></li> +</ul> +<p></div></p> +<blockquote> +<p><em>This article is about Perfect Forward Secrecy in cloud chats, see also <a href="/api/end-to-end/pfs">PFS in Secret Chats</a>.</em></p> +</blockquote> +<hr> +<p>Telegram supports Perfect Forward Secrecy (PFS).</p> +<p>To make this possible, the client generates a permanent authorization key using <strong>p_q_inner_data</strong> and a temporary key using <strong>p_q_inner_data_temp</strong>. (See <a href="/mtproto/auth_key">Creating an Authorization Key</a> for more info.) These 2 operations may be done in parallel and even using the same connection. The client must save an <strong>expires_at</strong> unix timestamp <code>expires_at = time + expires_in</code>.</p> +<p><strong>Important</strong>: in order to achieve PFS, the client must <strong>never</strong> use the permanent auth_key_id directly. Every message that is sent to MTProto, must be encrypted by a <strong>temp_auth_key_id</strong>, that was bound to the <strong>perm_auth_key_id</strong>.</p> +<p>An unbound <strong>temp_auth_key_id</strong> may only be used with the following methods:</p> +<ul> +<li><a href="/method/auth.bindTempAuthKey">auth.bindTempAuthKey</a></li> +<li><a href="/method/help.getConfig">help.getConfig</a></li> +<li><a href="/method/help.getNearestDc">help.getNearestDc</a></li> +</ul> +<p>In order to bind a temporary authorization key to the permanent key the client creates a <a href="/method/auth.bindTempAuthKey#binding-message-contents">special binding message</a> and executes the <a href="/method/auth.bindTempAuthKey">auth.bindTempAuthKey</a> method using <strong>temp_auth_key</strong>. Once <strong>auth.bindTempAuthKey</strong> has been executed successfully, the client may signUp / signIn using other auth.* methods and continue using the API as usual; the client must also <a href="/api/invoking#saving-client-info">rewrite client info</a> using <a href="/method/initConnection">initConnection</a> after each binding. Each permanent key may only be bound to <strong>one</strong> temporary key at a time, binding a new temporary key overwrites the previous one.</p> +<p>Once the temporary key expires, the client needs to generate a new temporary key using <strong>p_q_inner_data_temp</strong>. Then it needs to re-bind that new temporary key to the initial permanent key. A new key can also be generated in advance, so that the client has a new key ready by the time the old one has expired.</p> +<p>For additional security, the client can store the temporary authorization key in RAM only and never save it in persistent storage.</p> +<p>A temporary authorization key may expire at any moment before <strong>expires_at</strong>, since such keys are also stored only in the RAM on the server-side. Be prepared to handle resulting MTProto errors correctly (non-existent auth_key_id results in a 404 error).</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/pin.html b/data/core.telegram.org/api/pin.html new file mode 100644 index 0000000000..b5528f5a39 --- /dev/null +++ b/data/core.telegram.org/api/pin.html @@ -0,0 +1,149 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Pinned messages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows pinning multiple messages on top of a specific chat."> + <meta property="og:title" content="Pinned messages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows pinning multiple messages on top of a specific chat."> + <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?215" 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/pin" >Pinned messages</a></li></ul></div> + <h1 id="dev_page_title">Pinned messages</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows pinning multiple messages on top of a specific chat. </p> +<pre><code><a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updatePinnedMessages'>updatePinnedMessages</a>#ed85eab5 flags:<a href='/type/%23'>#</a> pinned:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/Peer'>Peer</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updatePinnedChannelMessages'>updatePinnedChannelMessages</a>#5bb98608 flags:<a href='/type/%23'>#</a> pinned:flags.0?<a href='/constructor/true'>true</a> channel_id:<a href='/type/long'>long</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.updatePinnedMessage'>messages.updatePinnedMessage</a>#d2aaf7ec flags:<a href='/type/%23'>#</a> silent:flags.0?<a href='/constructor/true'>true</a> unpin:flags.1?<a href='/constructor/true'>true</a> pm_oneside:flags.2?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/method/messages.unpinAllMessages'>messages.unpinAllMessages</a>#f025bc8b peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/messages.AffectedHistory'>messages.AffectedHistory</a>; + +<a href='/method/messages.getMessages'>messages.getMessages</a>#63c66506 id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputMessage'>InputMessage</a>> = <a href='/type/messages.Messages'>messages.Messages</a>; +<a href='/method/channels.getMessages'>channels.getMessages</a>#ad8c9a23 channel:<a href='/type/InputChannel'>InputChannel</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputMessage'>InputMessage</a>> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre> +<p>The <a href="/method/messages.updatePinnedMessage">messages.updatePinnedMessage</a> method can be used to pin or unpin a specific message in an arbitrary chat.<br> +The <code>unpin</code> flags specifies whether to unpin or pin the message, and <code>pm_oneside</code> specifies whether the message should only be pinned on the local side of a one-to-one chat. </p> +<p><a href="/method/messages.unpinAllMessages">messages.unpinAllMessages</a> can be used to unpin all messages in a chat. </p> +<p>When (un)pinning messages, a <a href="/constructor/updatePinnedMessages">updatePinnedMessages</a> or <a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a> update will be emitted, containing IDs of pinned or unpinned messages. </p> +<p>Pinned messages will also have the will also have the <code>pinned</code> flag of <a href="/constructor/message">message</a> set.</p> +<h3><a class="anchor" href="#getting-pinned-messages" id="getting-pinned-messages" name="getting-pinned-messages"><i class="anchor-icon"></i></a>Getting pinned messages</h3> +<pre><code><a href='/constructor/userFull'>userFull</a>#d697ff05 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> user:<a href='/type/User'>User</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> ttl_period:flags.14?<a href='/type/int'>int</a> theme_emoticon:flags.15?<a href='/type/string'>string</a> = <a href='/type/UserFull'>UserFull</a>; +<a href='/constructor/chatFull'>chatFull</a>#4dbdc099 flags:<a href='/type/%23'>#</a> can_set_username:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.8?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants:<a href='/type/ChatParticipants'>ChatParticipants</a> chat_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.13?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> pinned_msg_id:flags.6?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> call:flags.12?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.14?<a href='/type/int'>int</a> groupcall_default_join_as:flags.15?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.16?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; +<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; + +<a href='/constructor/inputMessagesFilterPinned'>inputMessagesFilterPinned</a>#1bb00451 = <a href='/type/MessagesFilter'>MessagesFilter</a>; + +---functions--- + +<a href='/method/messages.search'>messages.search</a>#a0fda762 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre> +<p>The <code>pinned_msg_id</code> of <a href="/constructor/userFull">userFull</a>, <a href="/constructor/chatFull">chatFull</a>, <a href="/constructor/channelFull">channelFull</a> contains the ID of only the latest pinned message.<br> +To obtain a full list, use <a href="/method/messages.search">messages.search</a> with <a href="/constructor/inputMessagesFilterPinned">inputMessagesFilterPinned</a> filter. </p></div> + +</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/poll.html b/data/core.telegram.org/api/poll.html new file mode 100644 index 0000000000..e12f1e5996 --- /dev/null +++ b/data/core.telegram.org/api/poll.html @@ -0,0 +1,199 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Poll</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels."> + <meta property="og:title" content="Poll"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels."> + <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?215" 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/poll" >Poll</a></li></ul></div> + <h1 id="dev_page_title">Poll</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels.</p> +<h3><a class="anchor" href="#sending-a-poll" id="sending-a-poll" name="sending-a-poll"><i class="anchor-icon"></i></a>Sending a poll</h3> +<pre><code><a href='/constructor/pollAnswer'>pollAnswer</a>#6ca9c2e9 text:<a href='/type/string'>string</a> option:<a href='/type/bytes'>bytes</a> = <a href='/type/PollAnswer'>PollAnswer</a>; + +<a href='/constructor/poll'>poll</a>#86e18161 id:<a href='/type/long'>long</a> flags:<a href='/type/%23'>#</a> closed:flags.0?<a href='/constructor/true'>true</a> public_voters:flags.1?<a href='/constructor/true'>true</a> multiple_choice:flags.2?<a href='/constructor/true'>true</a> quiz:flags.3?<a href='/constructor/true'>true</a> question:<a href='/type/string'>string</a> answers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswer'>PollAnswer</a>> close_period:flags.4?<a href='/type/int'>int</a> close_date:flags.5?<a href='/type/int'>int</a> = <a href='/type/Poll'>Poll</a>; + +<a href='/constructor/inputMediaPoll'>inputMediaPoll</a>#f94e5f1 flags:<a href='/type/%23'>#</a> poll:<a href='/type/Poll'>Poll</a> correct_answers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> solution:flags.1?<a href='/type/string'>string</a> solution_entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/InputMedia'>InputMedia</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>To send a poll in a chat, call <a href="/method/messages.sendMedia">messages.sendMedia</a>, providing an <a href="/constructor/inputMediaPoll">inputMediaPoll</a>:</p> +<ul> +<li> +<p><code>poll</code> is the actual <a href="/constructor/poll">poll constructor</a>, containing:</p> +<ul> +<li><code>question</code> - The poll title, aka the poll's title</li> +<li><code>answers</code> - A vector of possible answers (2-10), each with a visible title <code>text</code> , and a unique <code>option</code> identifier (1-100 bytes)</li> +<li><code>closed</code> - Whether the poll is closed</li> +<li><code>public_voters</code> - Whether cast votes are publicly visible to all users (non-anonymous poll) </li> +<li><code>multiple_choice</code> - Whether multiple options can be chosen as answer</li> +<li><code>quiz</code> - Whether this is a quiz with correct answer IDs specified in <code>inputMediaPoll.correct_answers</code></li> +<li><code>close_period</code> - Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with <code>close_date</code> .</li> +<li><code>close_date</code> - Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future; can't be used together with <code>close_period</code> . <br> +These last two parameters are exactly the same, except that one uses absolute, the other relative unixtime.</li> +</ul> +</li> +<li> +<p><code>correct_answers</code> - For quizes, option ID of the only correct answer</p> +</li> +<li> +<p><code>solution</code> - Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds</p> +</li> +<li> +<p><code>solution_entities</code> - <a href="/api/entities">Styled text message entities</a> for the <code>solution</code> explanation</p> +</li> +</ul> +<p>In order to prematurely close the poll, preventing further votes, use <a href="/method/messages.editMessage">messages.editMessage</a>, setting the <code>poll.closed</code> flag to true. </p> +<h3><a class="anchor" href="#voting-in-polls" id="voting-in-polls" name="voting-in-polls"><i class="anchor-icon"></i></a>Voting in polls</h3> +<pre><code><a href='/constructor/pollAnswerVoters'>pollAnswerVoters</a>#3b6ddad2 flags:<a href='/type/%23'>#</a> chosen:flags.0?<a href='/constructor/true'>true</a> correct:flags.1?<a href='/constructor/true'>true</a> option:<a href='/type/bytes'>bytes</a> voters:<a href='/type/int'>int</a> = <a href='/type/PollAnswerVoters'>PollAnswerVoters</a>; + +<a href='/constructor/pollResults'>pollResults</a>#dcb82ea3 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> results:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswerVoters'>PollAnswerVoters</a>> total_voters:flags.2?<a href='/type/int'>int</a> recent_voters:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> solution:flags.4?<a href='/type/string'>string</a> solution_entities:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/PollResults'>PollResults</a>; + +<a href='/constructor/poll'>poll</a>#86e18161 id:<a href='/type/long'>long</a> flags:<a href='/type/%23'>#</a> closed:flags.0?<a href='/constructor/true'>true</a> public_voters:flags.1?<a href='/constructor/true'>true</a> multiple_choice:flags.2?<a href='/constructor/true'>true</a> quiz:flags.3?<a href='/constructor/true'>true</a> question:<a href='/type/string'>string</a> answers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswer'>PollAnswer</a>> close_period:flags.4?<a href='/type/int'>int</a> close_date:flags.5?<a href='/type/int'>int</a> = <a href='/type/Poll'>Poll</a>; + +<a href='/constructor/messageMediaPoll'>messageMediaPoll</a>#4bd6e798 poll:<a href='/type/Poll'>Poll</a> results:<a href='/type/PollResults'>PollResults</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/updateMessagePoll'>updateMessagePoll</a>#aca1657b flags:<a href='/type/%23'>#</a> poll_id:<a href='/type/long'>long</a> poll:flags.0?<a href='/type/Poll'>Poll</a> results:<a href='/type/PollResults'>PollResults</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.sendVote'>messages.sendVote</a>#10ea6184 peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>When receiving a <a href="/constructor/message">message</a> with a <a href="/constructor/messageMediaPoll">messageMediaPoll</a>, users can vote in it using <a href="/method/messages.sendVote">messages.sendVote</a>, specifying the chosen <code>option</code> identifiers. </p> +<p>The method will return an <a href="/constructor/updateMessagePoll">updateMessagePoll</a>, containing an updated <a href="/constructor/pollResults">pollResults</a> constructor, with the <code>chosen</code> flag set on the options we chose, and the <code>correct</code> flag set on the correct answers. </p> +<h3><a class="anchor" href="#getting-poll-votes" id="getting-poll-votes" name="getting-poll-votes"><i class="anchor-icon"></i></a>Getting poll votes</h3> +<pre><code><a href='/constructor/pollAnswerVoters'>pollAnswerVoters</a>#3b6ddad2 flags:<a href='/type/%23'>#</a> chosen:flags.0?<a href='/constructor/true'>true</a> correct:flags.1?<a href='/constructor/true'>true</a> option:<a href='/type/bytes'>bytes</a> voters:<a href='/type/int'>int</a> = <a href='/type/PollAnswerVoters'>PollAnswerVoters</a>; + +<a href='/constructor/pollResults'>pollResults</a>#dcb82ea3 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> results:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswerVoters'>PollAnswerVoters</a>> total_voters:flags.2?<a href='/type/int'>int</a> recent_voters:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> solution:flags.4?<a href='/type/string'>string</a> solution_entities:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/PollResults'>PollResults</a>; + +<a href='/constructor/updateMessagePoll'>updateMessagePoll</a>#aca1657b flags:<a href='/type/%23'>#</a> poll_id:<a href='/type/long'>long</a> poll:flags.0?<a href='/type/Poll'>Poll</a> results:<a href='/type/PollResults'>PollResults</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getPollResults'>messages.getPollResults</a>#73bb643b peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Regularly, if new users have voted in polls available to the user, they will receive an <a href="/constructor/updateMessagePoll">updateMessagePoll</a>, with updated <a href="/constructor/pollResults">pollResults</a>. </p> +<p>The same constructor can also be fetched manually using <a href="/method/messages.getPollResults">messages.getPollResults</a>.</p> +<h3><a class="anchor" href="#getting-poll-voters-in-non-anonymous-polls" id="getting-poll-voters-in-non-anonymous-polls" name="getting-poll-voters-in-non-anonymous-polls"><i class="anchor-icon"></i></a>Getting poll voters in non-anonymous polls</h3> +<pre><code><a href='/constructor/messageUserVote'>messageUserVote</a>#34d247b4 user_id:<a href='/type/long'>long</a> option:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>; +<a href='/constructor/messageUserVoteInputOption'>messageUserVoteInputOption</a>#3ca5b0ec user_id:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>; +<a href='/constructor/messageUserVoteMultiple'>messageUserVoteMultiple</a>#8a65e557 user_id:<a href='/type/long'>long</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>; + +<a href='/constructor/messages.votesList'>messages.votesList</a>#823f649 flags:<a href='/type/%23'>#</a> count:<a href='/type/int'>int</a> votes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageUserVote'>MessageUserVote</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> next_offset:flags.0?<a href='/type/string'>string</a> = <a href='/type/messages.VotesList'>messages.VotesList</a>; + +<a href='/constructor/updateMessagePollVote'>updateMessagePollVote</a>#106395c9 poll_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> qts:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getPollVotes'>messages.getPollVotes</a>#b86e380e flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> option:flags.0?<a href='/type/bytes'>bytes</a> offset:flags.1?<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/messages.VotesList'>messages.VotesList</a>; </code></pre> +<p><a href="/method/messages.getPollVotes">messages.getPollVotes</a> can be used to get poll results for non-anonymous polls, to see how each user voted for a poll option.<br> +Bots will also receive an <a href="/constructor/updateMessagePollVote">updateMessagePollVote</a> every time a user their answer in a non-anonymous poll. Bots receive new votes only in polls that were sent by the bot itself.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/push-updates.html b/data/core.telegram.org/api/push-updates.html new file mode 100644 index 0000000000..0deaeb8156 --- /dev/null +++ b/data/core.telegram.org/api/push-updates.html @@ -0,0 +1,1009 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Handling PUSH-notifications</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to subscribe to and handle PUSH notifications "> + <meta property="og:title" content="Handling PUSH-notifications"> + <meta property="og:image" content="f171b7d56879c20c22"> + <meta property="og:description" content="How to subscribe to and handle PUSH notifications "> + <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?215" 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/push-updates" >Handling PUSH-notifications</a></li></ul></div> + <h1 id="dev_page_title">Handling PUSH-notifications</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<h3><a class="anchor" href="#configuring-the-application" id="configuring-the-application" name="configuring-the-application"><i class="anchor-icon"></i></a>Configuring the application</h3> +<p>To be able to send APNS notifications to Apple servers or GCM notifications to Google servers, application certificates (APNS) or an application key (GCM) must be specified in the <a href="/myapp">application settings</a>.</p> +<h3><a class="anchor" href="#subscribing-to-notifications" id="subscribing-to-notifications" name="subscribing-to-notifications"><i class="anchor-icon"></i></a>Subscribing to notifications</h3> +<p>To subscribe to notifications, the client must invoke the <a href="/method/account.registerDevice">account.registerDevice</a> query, passing in <strong>token_type</strong> and <strong>token</strong> as parameters that identify the current device. It is useful to repeat this query at least once every 24 hours or when restarting the application. Use <a href="/method/account.unregisterDevice">account.unregisterDevice</a> to unsubscribe.</p> +<p>The following modes are supported:</p> +<ul> +<li><code>1</code> - APNS (device token for apple push)</li> +<li><code>2</code> - FCM (firebase token for google firebase)</li> +<li><code>3</code> - MPNS (channel URI for microsoft push)</li> +<li><code>4</code> - Deprecated: Simple push (endpoint for firefox's simple push API)</li> +<li><code>5</code> - Ubuntu phone (token for ubuntu push)</li> +<li><code>6</code> - Blackberry (token for blackberry push)</li> +<li><code>7</code> - MTProto separate session</li> +<li><code>8</code> - WNS (windows push)</li> +<li><code>9</code> - APNS VoIP (token for apple push VoIP)</li> +<li><code>10</code> - Web push (web push, see below)</li> +<li><code>11</code> - MPNS VoIP (token for microsoft push VoIP)</li> +<li><code>12</code> - Tizen (token for tizen push)</li> +</ul> +<p>For <code>10</code> web push, the token must be a JSON-encoded object with the following keys:</p> +<ul> +<li><code>endpoint</code>: Absolute URL exposed by the push service where the application server can send push messages</li> +<li><code>keys</code>: P-256 elliptic curve Diffie-Hellman parameters in the following object<ul> +<li><code>p256dh</code>: Base64url-encoded P-256 elliptic curve Diffie-Hellman public key</li> +<li><code>auth</code>: Base64url-encoded authentication secret</li> +</ul> +</li> +</ul> +<h3><a class="anchor" href="#notification-encryption" id="notification-encryption" name="notification-encryption"><i class="anchor-icon"></i></a>Notification encryption</h3> +<p>For FCM and APNS VoIP, an optional encryption key used to encrypt push notifications can be passed to <a href="/method/account.registerDevice">account.registerDevice</a> (<code>secret</code>). This key (<code>auth_key</code>) is used to encrypt the payloads using <a href="/mtproto/description">MTProto v2</a>.</p> +<p>The FCM payload will be a JSON payload, containing a <code>p</code> field with the base64-encoded encrypted <a href="/mtproto/description">MTProto payload</a>. After decryption, the result will be a JSON object, prefixed by a 32-bit little-endian integer with the length of the JSON payload. As usual, make sure to follow all security checks as described in the <a href="/mtproto/description#important-checks">MTProto docs</a>.</p> +<p><a href="https://github.com/DrKLO/Telegram/blob/ff5735503e068a6f1cada09b977f633df7caf98d/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java#L563">Example implementation</a>.</p> +<p>As mentioned <a href="#subscribing-to-notifications">above</a>, payloads can also be encrypted using <a href="https://tools.ietf.org/html/rfc8291">P-256 Elliptic Curve Diffie-Hellman when using web push</a>.</p> +<h3><a class="anchor" href="#notification-structure" id="notification-structure" name="notification-structure"><i class="anchor-icon"></i></a>Notification structure</h3> +<p>An (<a href="#notification-encryption">optionally encrypted</a>) notification is provided as a JSON object in the following format:</p> +<pre><code>{ + "data": { + "loc_key": "CHAT_MESSAGE_CONTACT", + "loc_args": ["John Doe", "My magical group", "Contact Exchange"], + "user_id": 14124122, + "custom": { + "chat_id": 241233, + "msg_id": 123 + }, + "sound": "sound1.mp3", + } +}</code></pre> +<p>Each notification has several parameters that describe it.</p> +<h4><a class="anchor" href="#notification-type" id="notification-type" name="notification-type"><i class="anchor-icon"></i></a>Notification type</h4> +<p><strong>data.loc_key</strong> - A string literal in the form <code>/[A-Z_0-9]+/</code>, which summarizes the notification. For example, <code>CHAT_MESSAGE_TEXT</code>.</p> +<h4><a class="anchor" href="#notification-text-arguments" id="notification-text-arguments" name="notification-text-arguments"><i class="anchor-icon"></i></a>Notification text arguments</h4> +<p><strong>data.loc_args</strong> - A list or arguments which, when inserted into a template, produce a readable notification.</p> +<h4><a class="anchor" href="#custom-parameters" id="custom-parameters" name="custom-parameters"><i class="anchor-icon"></i></a>Custom parameters</h4> +<p><strong>data.custom</strong> - Parameters which are be passed into the application when a notification is opened.</p> +<h4><a class="anchor" href="#sound" id="sound" name="sound"><i class="anchor-icon"></i></a>Sound</h4> +<p><strong>data.sound</strong> - The name of an audio file to be played.</p> +<h4><a class="anchor" href="#user-id" id="user-id" name="user-id"><i class="anchor-icon"></i></a>User id</h4> +<p><strong>data.user_id</strong> - ID of the account to which the PUSH notification should be delivered, in case of clients with multiple accounts active and running.</p> +<h3><a class="anchor" href="#processing-notifications" id="processing-notifications" name="processing-notifications"><i class="anchor-icon"></i></a>Processing notifications</h3> +<p>In principle, <strong>data.loc_key</strong>, <strong>data.custom</strong>, and an Internet connection are sufficient to generate a notification. Obviously, if possible, when generating a visual notification you need not use all of the transmitted data and may rely on the information already stored on the client. But if a user or a chat is not cached locally, the values passed in loc_args may also be used. <strong>data.user_id</strong> is the ID of the account to which the PUSH notification should be delivered, in case of clients with multiple accounts active and running.</p> +<h3><a class="anchor" href="#service-notifications" id="service-notifications" name="service-notifications"><i class="anchor-icon"></i></a>Service notifications</h3> +<p>The following notifications can be used to update app settings.</p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Extra custom arguments</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>DC_UPDATE</td> +<td><strong>dc</strong> - number of the data-center<br><strong>addr</strong> - server address with port number in the format <code>111.112.113.114:443</code></td> +<td>In case the client gets this notification, it is necessary to add the received server address to the list of possible addresses. In case the address of the first DC was passed (<code>dc=1</code>), it is recommended to call it immediately using <a href="/method/help.getConfig">help.getConfig</a> to update dc-configuration.</td> +</tr> +<tr> +<td>MESSAGE_DELETED</td> +<td><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>messages</strong>: Comma-separated IDs of messages that were deleted</td> +<td>Messages were deleted, remove multiple notifications for this chat</td> +</tr> +<tr> +<td>READ_HISTORY</td> +<td><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>max_id</strong>: Maximum ID of read messages</td> +<td>Message history was read, remove multiple notifications for this chat</td> +</tr> +<tr> +<td>GEO_LIVE_PENDING</td> +<td> </td> +<td>Any of the live locations currently being shared should be updated</td> +</tr> +<tr> +<td>SESSION_REVOKE</td> +<td> </td> +<td>Logout and remove DB for specified session by <strong>data.user_id</strong>, only apply if coming from an <a href="#notification-encryption">MTProto-encrypted payload</a></td> +</tr> +<tr> +<td>MESSAGE_MUTED</td> +<td> </td> +<td>Sent rarely, every 10th message in chats or once per 15 sec in PM, to update badge or download messages</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#possible-notifications" id="possible-notifications" name="possible-notifications"><i class="anchor-icon"></i></a>Possible Notifications</h3> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Template example</th> +<th>Arguments</th> +<th>Extra custom arguments</th> +</tr> +</thead> +<tbody> +<tr> +<td>AUTH_REGION</td> +<td>New login from unrecognized device {1}, location: {2}</td> +<td>1. Device name<br>2. Location</td> +<td> </td> +</tr> +<tr> +<td>AUTH_UNKNOWN</td> +<td>New login from unrecognized device {1}</td> +<td>1. Device name</td> +<td> </td> +</tr> +<tr> +<td>CHANNEL_MESSAGES</td> +<td>{1} posted an album</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_AUDIO</td> +<td>{1} posted a voice message</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_CONTACT</td> +<td>{1} posted a contact {2}</td> +<td>1. Message author<br>2. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_DOC</td> +<td>{1} posted a file</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_DOCS</td> +<td>{1} posted {2} files</td> +<td>1. Channel name<br>2. Number of documents that were posted</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_FWDS</td> +<td>{1} posted {2} forwarded messages</td> +<td>1. Message author<br>2. Number of forwarded messages</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GAME</td> +<td>{1} invited you to play {2}</td> +<td>1. Message author<br>2. Game name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GAME_SCORE</td> +<td>{1} scored {3} in game {2}</td> +<td>1. User<br>2. Game name<br>3. Score</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GEO</td> +<td>{1} posted a location</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GEOLIVE</td> +<td>{1} posted a live location</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GIF</td> +<td>{1} posted a GIF</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_NOTEXT</td> +<td>{1} posted a message</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_PHOTO</td> +<td>{1} posted a photo</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_PHOTOS</td> +<td>{1} posted {2} photos</td> +<td>1. Channel name<br>2. Number of photos that was sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_PLAYLIST</td> +<td>{1} posted {2} music files</td> +<td>1. Channel name<br>2. Number of audio files that were posted</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_POLL</td> +<td>{1} posted a poll {2}</td> +<td>1. Channel name<br>2. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_QUIZ</td> +<td>{1} posted a quiz {2}</td> +<td>1. Channel name<br>2. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_ROUND</td> +<td>{1} posted a video message</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_STICKER</td> +<td>{1} posted a {2} sticker</td> +<td>1. Channel name<br>2. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_TEXT</td> +<td>{1}: {2}</td> +<td>1. Channel name<br>2. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_VIDEO</td> +<td>{1} posted a video</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_VIDEOS</td> +<td>{1} posted {2} videos</td> +<td>1. Channel name<br>2. Number of videos that were posted</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_ADD_MEMBER</td> +<td>{1} invited {3} to the group {2}</td> +<td>1. Message author<br>2. Chat name<br>3. New participant name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_ADD_YOU</td> +<td>{1} invited you to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_CREATED</td> +<td>{1} invited you to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_DELETE_MEMBER</td> +<td>{1} removed {3} from the group {2}</td> +<td>1. Message author<br>2. Chat name<br>3. Dropped participant name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_DELETE_YOU</td> +<td>{1} removed you from the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_JOINED</td> +<td>{1} joined the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_LEFT</td> +<td>{1} left the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_MESSAGES</td> +<td>{1} sent an album to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>chat_from_id</strong>: Message author identifier<br><strong>chat_id</strong>: chat identifier<br><strong>mention</strong>: Whether the user was mentioned in the message</td> +</tr> +<tr> +<td>CHAT_MESSAGE_AUDIO</td> +<td>{1} sent a voice message to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_CONTACT</td> +<td>{1} shared a contact {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_DOC</td> +<td>{1} sent a file to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_DOCS</td> +<td>{1} sent {3} files to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of documents that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_FWDS</td> +<td>{1} forwarded {3} messages to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of messages that were forwarded</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GAME</td> +<td>{1} invited the group {2} to play {3}</td> +<td>1. User name<br>2. Group name<br>3. Game name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GAME_SCORE</td> +<td>{1} scored {4} in game {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Game name<br>4. Score</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GEO</td> +<td>{1} sent a location to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GEOLIVE</td> +<td>{1} shared a live location with the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GIF</td> +<td>{1} sent a GIF to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_INVOICE</td> +<td>{1} sent an invoice to the group {2} for {3}</td> +<td>1. User name<br>2. Group name<br>3. Product name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_NOTEXT</td> +<td>{1} sent a message to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_PHOTO</td> +<td>{1} sent a photo to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_PHOTOS</td> +<td>{1} sent {3} photos to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of photos that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_PLAYLIST</td> +<td>{1} sent {3} music files to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of audio files that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_POLL</td> +<td>{1} sent a poll {3} to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_QUIZ</td> +<td>{1} sent a quiz {3} to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_ROUND</td> +<td>{1} sent a video message to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_STICKER</td> +<td>{1} sent a {3} sticker to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_TEXT</td> +<td>{1} @ {2}: {3}</td> +<td>1. Message author<br>2. Chat name<br>3. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_VIDEO</td> +<td>{1} sent a video to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_VIDEOS</td> +<td>{1} sent {3} videos to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of videos that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_PHOTO_EDITED</td> +<td>{1} changed the group photo for {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_from_id</strong>: Message author identifier<br><strong>chat_id</strong>: chat identifier<br><strong>msg_id</strong>: ID of the message</td> +</tr> +<tr> +<td>CHAT_RETURNED</td> +<td>{1} returned to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_TITLE_EDITED</td> +<td>{1} renamed the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_VOICECHAT_END</td> +<td>{1} ended a voice chat in the group {2}</td> +<td>1. User name<br>2. Chat name</td> +<td> </td> +</tr> +<tr> +<td>CHAT_VOICECHAT_INVITE</td> +<td>{1} invited {3} to a voice chat in the group {2}</td> +<td>1. User name<br>2. Chat name<br>3. Invited users</td> +<td> </td> +</tr> +<tr> +<td>CHAT_VOICECHAT_INVITE_YOU</td> +<td>{1} invited you to a voice chat in the group {2}</td> +<td>1. User name<br>2. Chat name</td> +<td> </td> +</tr> +<tr> +<td>CHAT_VOICECHAT_START</td> +<td>{1} started a voice chat in the group {2}</td> +<td>1. User name<br>2. Chat name</td> +<td> </td> +</tr> +<tr> +<td>CONTACT_JOINED</td> +<td>{1} joined Telegram!</td> +<td>1. Contact name</td> +<td><strong>contact_id</strong>: contact identifier</td> +</tr> +<tr> +<td>ENCRYPTED_MESSAGE</td> +<td>You have a new message</td> +<td> </td> +<td><strong>encryption_id</strong>: secret chat identifier<br><strong>random_id</strong>: message identifier</td> +</tr> +<tr> +<td>ENCRYPTION_ACCEPT</td> +<td>You have a new message</td> +<td> </td> +<td><strong>encryption_id</strong>: secret chat identifier</td> +</tr> +<tr> +<td>ENCRYPTION_REQUEST</td> +<td>You have a new message</td> +<td> </td> +<td><strong>encryption_id</strong>: secret chat identifier</td> +</tr> +<tr> +<td>LOCKED_MESSAGE</td> +<td>You have a new message</td> +<td> </td> +<td> </td> +</tr> +<tr> +<td>MESSAGES</td> +<td>{1} sent you an album</td> +<td>1. User name</td> +<td><strong>from_id</strong>: author identifier</td> +</tr> +<tr> +<td>MESSAGE_ANNOUNCEMENT</td> +<td>{1}</td> +<td>1. Announcement</td> +<td><strong>announcement</strong>: Announcement: roughly equivalent to a message received from the service notifications (Telegram Notifications, id <code>777000</code>) user, but must be delivered via push notifications, without contacting the API.</td> +</tr> +<tr> +<td>MESSAGE_AUDIO</td> +<td>{1} sent you a voice message</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_CONTACT</td> +<td>{1} shared a contact {2} with you</td> +<td>1. User name<br>2. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_DOC</td> +<td>{1} sent you a file</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_DOCS</td> +<td>{1} sent you {2} files</td> +<td>1. User name<br>2. Number of documents that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>from_id</strong>: Author identifier (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>MESSAGE_FWDS</td> +<td>{1} forwarded you {2} messages</td> +<td>1. User name<br>2. Number of messages that were forwarded</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>from_id</strong>: Author identifier (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>MESSAGE_GAME</td> +<td>{1} invited you to play {2}</td> +<td>1. User name<br>2. Game name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_GAME_SCORE</td> +<td>{1} scored {3} in game {2}</td> +<td>1. User name<br>2. Game name<br>3. Score</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_GEO</td> +<td>{1} sent you a location</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_GEOLIVE</td> +<td>{1} sent you a live location</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_GIF</td> +<td>{1} sent you a GIF</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_INVOICE</td> +<td>{1} sent you an invoice for {2}</td> +<td>1. User name<br>2. Product</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_NOTEXT</td> +<td>{1} sent you a message</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_PHOTO</td> +<td>{1} sent you a photo</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_PHOTOS</td> +<td>{1} sent you {2} photos</td> +<td>1. User name<br>2. Number of photos that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>from_id</strong>: Author identifier (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>MESSAGE_PHOTO_SECRET</td> +<td>{1} sent you a self-destructing photo</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_PLAYLIST</td> +<td>{1} sent you {2} music files</td> +<td>1. User name<br>2. Number of audio files that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_POLL</td> +<td>{1} sent you a poll {2}</td> +<td>1. User name<br>2. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_QUIZ</td> +<td>{1} sent you a quiz {2}</td> +<td>1. User name<br>2. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_ROUND</td> +<td>{1} sent you a video message</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_SCREENSHOT</td> +<td>{1} took a screenshot</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_STICKER</td> +<td>{1} sent you a {2} sticker</td> +<td>1. User name<br>2. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_TEXT</td> +<td>{1}: {2}</td> +<td>1. Message author<br>2. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_VIDEO</td> +<td>{1} sent you a video</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_VIDEOS</td> +<td>{1} sent you {2} videos</td> +<td>1. User name<br>2. Number of videos that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>from_id</strong>: Author identifier (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>MESSAGE_VIDEO_SECRET</td> +<td>{1} sent you a self-destructing video</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PHONE_CALL_MISSED</td> +<td>You missed a call from {1}</td> +<td>1. User name</td> +<td> </td> +</tr> +<tr> +<td>PHONE_CALL_REQUEST</td> +<td>{1} is calling you!</td> +<td>1. User name</td> +<td><strong>call_ah</strong>: Call access hash<br><strong>call_id</strong>: Call ID</td> +</tr> +<tr> +<td>PINNED_AUDIO</td> +<td>{1} pinned a voice message</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_AUDIO</td> +<td>{1} pinned a voice message in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_CONTACT</td> +<td>{1} pinned a contact {2}</td> +<td>1. User name<br>2. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_CONTACT</td> +<td>{1} pinned a contact {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_DOC</td> +<td>{1} pinned a file</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_DOC</td> +<td>{1} pinned a file in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GAME</td> +<td>{1} pinned a game</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GAME</td> +<td>{1} pinned a game in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GAME_SCORE</td> +<td>{1} pinned a game score</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GAME_SCORE</td> +<td>{1} pinned a game score in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GEO</td> +<td>{1} pinned a map</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GEO</td> +<td>{1} pinned a map in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GEOLIVE</td> +<td>{1} pinned a live location</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GEOLIVE</td> +<td>{1} pinned a live location in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GIF</td> +<td>{1} pinned a GIF</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GIF</td> +<td>{1} pinned a GIF in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_INVOICE</td> +<td>{1} pinned an invoice</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_INVOICE</td> +<td>{1} pinned an invoice in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_NOTEXT</td> +<td>{1} pinned a message</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_NOTEXT</td> +<td>{1} pinned a message in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_PHOTO</td> +<td>{1} pinned a photo</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_PHOTO</td> +<td>{1} pinned a photo in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_POLL</td> +<td>{1} pinned a poll {2}</td> +<td>1. User name<br>2. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_POLL</td> +<td>{1} pinned a poll {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_QUIZ</td> +<td>{1} pinned a quiz {2}</td> +<td>1. User name<br>2. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_QUIZ</td> +<td>{1} pinned a quiz {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_ROUND</td> +<td>{1} pinned a video message</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_ROUND</td> +<td>{1} pinned a video message in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_STICKER</td> +<td>{1} pinned a {2} sticker</td> +<td>1. User name<br>2. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_STICKER</td> +<td>{1} pinned a {3} sticker in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_TEXT</td> +<td>{1} pinned "{2}"</td> +<td>1. User name<br>2. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_TEXT</td> +<td>{1} pinned "{3}" in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_VIDEO</td> +<td>{1} pinned a video</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_VIDEO</td> +<td>{1} pinned a video in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/qr-login.html b/data/core.telegram.org/api/qr-login.html new file mode 100644 index 0000000000..7995ef9f72 --- /dev/null +++ b/data/core.telegram.org/api/qr-login.html @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Login via QR code</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="QR code login flow"> + <meta property="og:title" content="Login via QR code"> + <meta property="og:image" content=""> + <meta property="og:description" content="QR code login flow"> + <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?215" 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/qr-login" >Login via QR code</a></li></ul></div> + <h1 id="dev_page_title">Login via QR code</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><a href="https://en.wikipedia.org/wiki/QR_code">QR code</a> login flow.</p> +<p>Related TL schema:</p> +<pre><code><a href='/constructor/auth.loginToken'>auth.loginToken</a>#629f1980 expires:<a href='/type/int'>int</a> token:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>; +<a href='/constructor/auth.loginTokenMigrateTo'>auth.loginTokenMigrateTo</a>#68e9916 dc_id:<a href='/type/int'>int</a> token:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>; +<a href='/constructor/auth.loginTokenSuccess'>auth.loginTokenSuccess</a>#390d5c5e authorization:<a href='/type/auth.Authorization'>auth.Authorization</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>; + +<a href='/constructor/updateLoginToken'>updateLoginToken</a>#564fe691 = <a href='/type/Update'>Update</a>; + +<a href='/constructor/authorization'>authorization</a>#ad01d61d flags:<a href='/type/%23'>#</a> current:flags.0?<a href='/constructor/true'>true</a> official_app:flags.1?<a href='/constructor/true'>true</a> password_pending:flags.2?<a href='/constructor/true'>true</a> hash:<a href='/type/long'>long</a> device_model:<a href='/type/string'>string</a> platform:<a href='/type/string'>string</a> system_version:<a href='/type/string'>string</a> api_id:<a href='/type/int'>int</a> app_name:<a href='/type/string'>string</a> app_version:<a href='/type/string'>string</a> date_created:<a href='/type/int'>int</a> date_active:<a href='/type/int'>int</a> ip:<a href='/type/string'>string</a> country:<a href='/type/string'>string</a> region:<a href='/type/string'>string</a> = <a href='/type/Authorization'>Authorization</a>; + +---functions--- + +<a href='/method/auth.exportLoginToken'>auth.exportLoginToken</a>#b7e085fe api_id:<a href='/type/int'>int</a> api_hash:<a href='/type/string'>string</a> except_ids:<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>; +<a href='/method/auth.acceptLoginToken'>auth.acceptLoginToken</a>#e894ad4d token:<a href='/type/bytes'>bytes</a> = <a href='/type/Authorization'>Authorization</a>; +<a href='/method/auth.importLoginToken'>auth.importLoginToken</a>#95ac5ce4 token:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>;</code></pre> +<h3><a class="anchor" href="#exporting-a-login-token" id="exporting-a-login-token" name="exporting-a-login-token"><i class="anchor-icon"></i></a>Exporting a login token</h3> +<p>First of all, <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> must be called by the app that wants to log in to an existing Telegram account.<br> +The method will return an <a href="/constructor/auth.loginToken">auth.loginToken</a> constructor, containing a binary login <code>token</code> and an expiry date (usually 30 seconds). </p> +<p>The login <code>token</code> must be encoded using <a href="https://tools.ietf.org/html/rfc4648#section-5">base64url</a>, embedded in a <code>tg://login?token=base64encodedtoken</code> URL and shown in the form of a <a href="https://en.wikipedia.org/wiki/QR_code">QR code</a> to the user.<br> +After the expiration of the current QR code, the <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> method must be recalled and a new QR code must be generated automatically.</p> +<h3><a class="anchor" href="#accepting-a-login-token" id="accepting-a-login-token" name="accepting-a-login-token"><i class="anchor-icon"></i></a>Accepting a login token</h3> +<p>In order to log in, the QR code must be scanned and accepted by an already logged-in Telegram app using <a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</a>.<br> +The token must be extracted from the <code>tg://login</code> URI and <a href="https://tools.ietf.org/html/rfc4648#section-5">base64url-decoded</a> before using it in the method.</p> +<p>Possible <a href="/api/errors">errors</a> returned by the method are: </p> +<ul> +<li>400 - <code>AUTH_TOKEN_INVALID</code>, an invalid authorization token was provided</li> +<li>400 - <code>AUTH_TOKEN_EXPIRED</code>, the provided authorization token has expired and the updated QR-code must be re-scanned</li> +<li>400 - <code>AUTH_TOKEN_ALREADY_ACCEPTED</code>, the authorization token was already used</li> +</ul> +<p>The method will return an <a href="/constructor/authorization">authorization</a> object, containing info about the app and session that we just authorized.</p> +<h3><a class="anchor" href="#confirming-importing-the-login-token" id="confirming-importing-the-login-token" name="confirming-importing-the-login-token"><i class="anchor-icon"></i></a>Confirming (importing) the login token</h3> +<p>After the logged-in app calls <a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</a> and accepts the login token, the app that is trying to login will receive an <a href="/constructor/updateLoginToken">updateLoginToken</a> update, which should trigger a <strong>second</strong> call to the <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> method. </p> +<p>This second call should then return an <a href="/constructor/auth.loginTokenSuccess">auth.loginTokenSuccess</a> constructor, indicating <strong>successful login</strong>, essentially allowing further authorized interaction with the API.</p> +<p>If, however, there is a DC mismatch between the two apps, <a href="/constructor/auth.loginTokenMigrateTo">auth.loginTokenMigrateTo</a> is returned instead, to which the app that is trying to login should respond by calling <a href="/method/auth.importLoginToken">auth.importLoginToken</a> with the specified <code>token</code>, to the specified DC. </p> +<p>This call should then finally return a <a href="/constructor/auth.loginTokenSuccess">auth.loginTokenSuccess</a> constructor.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/recent-actions.html b/data/core.telegram.org/api/recent-actions.html new file mode 100644 index 0000000000..d36347c2d5 --- /dev/null +++ b/data/core.telegram.org/api/recent-actions.html @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Admin log</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Both supergroups and channels offer a so-called [admin log](https://telegram.org/blog/admin-revolution), a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more."> + <meta property="og:title" content="Admin log"> + <meta property="og:image" content=""> + <meta property="og:description" content="Both supergroups and channels offer a so-called [admin log](https://telegram.org/blog/admin-revolution), a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more."> + <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?215" 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/recent-actions" >Admin log</a></li></ul></div> + <h1 id="dev_page_title">Admin log</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Both supergroups and channels offer a so-called <a href="https://telegram.org/blog/admin-revolution">admin log</a>, a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more. </p> +<pre><code><a href='/constructor/channelAdminLogEventActionChangeTitle'>channelAdminLogEventActionChangeTitle</a>#e6dfb825 prev_value:<a href='/type/string'>string</a> new_value:<a href='/type/string'>string</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeAbout'>channelAdminLogEventActionChangeAbout</a>#55188a2e prev_value:<a href='/type/string'>string</a> new_value:<a href='/type/string'>string</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeUsername'>channelAdminLogEventActionChangeUsername</a>#6a4afc38 prev_value:<a href='/type/string'>string</a> new_value:<a href='/type/string'>string</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangePhoto'>channelAdminLogEventActionChangePhoto</a>#434bd2af prev_photo:<a href='/type/Photo'>Photo</a> new_photo:<a href='/type/Photo'>Photo</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionToggleInvites'>channelAdminLogEventActionToggleInvites</a>#1b7907ae new_value:<a href='/type/Bool'>Bool</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionToggleSignatures'>channelAdminLogEventActionToggleSignatures</a>#26ae0971 new_value:<a href='/type/Bool'>Bool</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionUpdatePinned'>channelAdminLogEventActionUpdatePinned</a>#e9e82c18 message:<a href='/type/Message'>Message</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionEditMessage'>channelAdminLogEventActionEditMessage</a>#709b2405 prev_message:<a href='/type/Message'>Message</a> new_message:<a href='/type/Message'>Message</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionDeleteMessage'>channelAdminLogEventActionDeleteMessage</a>#42e047bb message:<a href='/type/Message'>Message</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantJoin'>channelAdminLogEventActionParticipantJoin</a>#183040d3 = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantLeave'>channelAdminLogEventActionParticipantLeave</a>#f89777f2 = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantInvite'>channelAdminLogEventActionParticipantInvite</a>#e31c34d8 participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantToggleBan'>channelAdminLogEventActionParticipantToggleBan</a>#e6d83d7e prev_participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> new_participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantToggleAdmin'>channelAdminLogEventActionParticipantToggleAdmin</a>#d5676710 prev_participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> new_participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeStickerSet'>channelAdminLogEventActionChangeStickerSet</a>#b1c3caa7 prev_stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> new_stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionTogglePreHistoryHidden'>channelAdminLogEventActionTogglePreHistoryHidden</a>#5f5c95f1 new_value:<a href='/type/Bool'>Bool</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionDefaultBannedRights'>channelAdminLogEventActionDefaultBannedRights</a>#2df5fc0a prev_banned_rights:<a href='/type/ChatBannedRights'>ChatBannedRights</a> new_banned_rights:<a href='/type/ChatBannedRights'>ChatBannedRights</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionStopPoll'>channelAdminLogEventActionStopPoll</a>#8f079643 message:<a href='/type/Message'>Message</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeLinkedChat'>channelAdminLogEventActionChangeLinkedChat</a>#50c7ac8 prev_value:<a href='/type/long'>long</a> new_value:<a href='/type/long'>long</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeLocation'>channelAdminLogEventActionChangeLocation</a>#e6b76ae prev_value:<a href='/type/ChannelLocation'>ChannelLocation</a> new_value:<a href='/type/ChannelLocation'>ChannelLocation</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionToggleSlowMode'>channelAdminLogEventActionToggleSlowMode</a>#53909779 prev_value:<a href='/type/int'>int</a> new_value:<a href='/type/int'>int</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; + +<a href='/constructor/channelAdminLogEvent'>channelAdminLogEvent</a>#1fad68cd id:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> action:<a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a> = <a href='/type/ChannelAdminLogEvent'>ChannelAdminLogEvent</a>; + +<a href='/constructor/channels.adminLogResults'>channels.adminLogResults</a>#ed8af74d events:<a href='/type/Vector%20t'>Vector</a><<a href='/type/ChannelAdminLogEvent'>ChannelAdminLogEvent</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/channels.AdminLogResults'>channels.AdminLogResults</a>; + +<a href='/constructor/channelAdminLogEventsFilter'>channelAdminLogEventsFilter</a>#ea107ae4 flags:<a href='/type/%23'>#</a> join:flags.0?<a href='/constructor/true'>true</a> leave:flags.1?<a href='/constructor/true'>true</a> invite:flags.2?<a href='/constructor/true'>true</a> ban:flags.3?<a href='/constructor/true'>true</a> unban:flags.4?<a href='/constructor/true'>true</a> kick:flags.5?<a href='/constructor/true'>true</a> unkick:flags.6?<a href='/constructor/true'>true</a> promote:flags.7?<a href='/constructor/true'>true</a> demote:flags.8?<a href='/constructor/true'>true</a> info:flags.9?<a href='/constructor/true'>true</a> settings:flags.10?<a href='/constructor/true'>true</a> pinned:flags.11?<a href='/constructor/true'>true</a> edit:flags.12?<a href='/constructor/true'>true</a> delete:flags.13?<a href='/constructor/true'>true</a> group_call:flags.14?<a href='/constructor/true'>true</a> invites:flags.15?<a href='/constructor/true'>true</a> = <a href='/type/ChannelAdminLogEventsFilter'>ChannelAdminLogEventsFilter</a>; + +---functions--- + +<a href='/method/channels.getAdminLog'>channels.getAdminLog</a>#33ddf480 flags:<a href='/type/%23'>#</a> channel:<a href='/type/InputChannel'>InputChannel</a> q:<a href='/type/string'>string</a> events_filter:flags.0?<a href='/type/ChannelAdminLogEventsFilter'>ChannelAdminLogEventsFilter</a> admins:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputUser'>InputUser</a>> max_id:<a href='/type/long'>long</a> min_id:<a href='/type/long'>long</a> limit:<a href='/type/int'>int</a> = <a href='/type/channels.AdminLogResults'>channels.AdminLogResults</a>;</code></pre> +<p><a href="/method/channels.getAdminLog">channels.getAdminLog</a> can be used to list recent admin activity.<br> +A <a href="/constructor/channelAdminLogEventsFilter">channelAdminLogEventsFilter</a> can be used to filter out actions of a certain type, and the <code>admins</code> field can be used to show only actions by certain admins.<br> +<code>q</code> can also be used to filter only logs matching a query string. </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/rights.html b/data/core.telegram.org/api/rights.html new file mode 100644 index 0000000000..a581b8cf79 --- /dev/null +++ b/data/core.telegram.org/api/rights.html @@ -0,0 +1,133 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Admin, banned, default rights</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups."> + <meta property="og:title" content="Admin, banned, default rights"> + <meta property="og:image" content="d82fcde297bd0276c3"> + <meta property="og:description" content="How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups."> + <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?215" 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/rights" >Admin, banned, default rights</a></li></ul></div> + <h1 id="dev_page_title">Admin, banned, default rights</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><a href="/api/channel">Channels and supergroups</a> allow setting <a href="https://telegram.org/blog/permissions-groups-undo">granular permissions</a> both for admins and specific users. +<a href="/api/channel">Channels, supergroups and legacy groups</a> also allow setting global granular permissions for users.</p> +<p>They can be modified as follows:</p> +<h3><a class="anchor" href="#admin-rights" id="admin-rights" name="admin-rights"><i class="anchor-icon"></i></a>Admin rights</h3> +<p><a href="/method/channels.editAdmin">channels.editAdmin</a> can be used to modify the admin rights of a user in a channel or supergroup. +<a href="/api/channel">Legacy groups</a> do not allow setting granular admin permissions, <a href="/method/messages.editChatAdmin">messages.editChatAdmin</a> has to be used, instead.</p> +<p>Permissions are defined by the <a href="/constructor/chatAdminRights">chatAdminRights</a> constructor, some admin rights can only be used for channels, others both for channels and supergroups (see the constructor page).</p> +<h3><a class="anchor" href="#banned-rights" id="banned-rights" name="banned-rights"><i class="anchor-icon"></i></a>Banned rights</h3> +<p><a href="/method/channels.editBanned">channels.editBanned</a> can be used to modify the rights of a user in a channel or supergroup, to ban/kick a user from the group, or restrict the user from doing certain things. +<a href="/api/channel">Legacy groups</a> do not allow setting granular user permissions for single users, single users can only be removed from groups using <a href="/method/messages.deleteChatUser">messages.deleteChatUser</a>: however, setting <a href="#default-rights">global granular permissions with legacy groups is supported</a>.</p> +<p>Permissions are defined by the <a href="/constructor/chatBannedRights">chatBannedRights</a> constructor, for more info see the constructor page.</p> +<h3><a class="anchor" href="#default-rights" id="default-rights" name="default-rights"><i class="anchor-icon"></i></a>Default rights</h3> +<p><a href="/method/messages.editChatDefaultBannedRights">messages.editChatDefaultBannedRights</a> can be used to modify the rights of <strong>all</strong> users in a channel, supergroup or legacy group, to restrict them from doing certain things.</p> +<p>Permissions are defined by the <a href="/constructor/chatBannedRights">chatBannedRights</a> constructor: all flags can be used except for <code>view_messages</code>, for more info see the constructor page.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/scheduled-messages.html b/data/core.telegram.org/api/scheduled-messages.html new file mode 100644 index 0000000000..f1e0fdf7c1 --- /dev/null +++ b/data/core.telegram.org/api/scheduled-messages.html @@ -0,0 +1,156 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Scheduled messages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows scheduling messages"> + <meta property="og:title" content="Scheduled messages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows scheduling messages"> + <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?215" 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/scheduled-messages" >Scheduled messages</a></li></ul></div> + <h1 id="dev_page_title">Scheduled messages</h1> + + <div id="dev_page_content"><p>Telegram allows scheduling messages.</p> +<pre><code><a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updateNewScheduledMessage'>updateNewScheduledMessage</a>#39a51dfb message:<a href='/type/Message'>Message</a> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updateDeleteScheduledMessages'>updateDeleteScheduledMessages</a>#90866cee peer:<a href='/type/Peer'>Peer</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.sendMessage'>messages.sendMessage</a>#520c3870 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>To schedule a message, simply provide a future unixtime in the <code>schedule_date</code> flag of <a href="/method/messages.sendMessage">messages.sendMessage</a> or <a href="/method/messages.sendMedia">messages.sendMedia</a>. </p> +<p>The specified message or media will be added to a server-side schedule queue for the current chat, and will be automatically sent at the specified time.<br> +The method call generates the following updates:</p> +<ul> +<li>Immediately, an <a href="/constructor/updateNewScheduledMessage">updateNewScheduledMessage</a>, with ID equal to the ID of the message in the schedule queue for the current chat (each PM, chat, supergroup and channel has its own schedule queue and ID sequence).</li> +<li>At <code>schedule_date</code>, an <a href="/constructor/updateNewMessage">updateNewMessage</a> or <a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> with the <code>from_scheduled</code> flag set, indicating to the sender that the specified scheduled message was sent. </li> +<li>At <code>schedule_date</code>, an <a href="/constructor/updateDeleteScheduledMessages">updateDeleteScheduledMessages</a>, indicating that the message was flushed from the schedule queue.</li> +</ul> +<p>If the <code>schedule_date</code> is less than 10 seconds in the future, the message will be sent immediately, generating a normal <a href="/constructor/updateNewMessage">updateNewMessage</a>/<a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> . </p> +<h3><a class="anchor" href="#manipulating-the-schedule-queue" id="manipulating-the-schedule-queue" name="manipulating-the-schedule-queue"><i class="anchor-icon"></i></a>Manipulating the schedule queue</h3> +<pre><code><a href='/constructor/updateNewScheduledMessage'>updateNewScheduledMessage</a>#39a51dfb message:<a href='/type/Message'>Message</a> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updateDeleteScheduledMessages'>updateDeleteScheduledMessages</a>#90866cee peer:<a href='/type/Peer'>Peer</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getScheduledHistory'>messages.getScheduledHistory</a>#f516760b peer:<a href='/type/InputPeer'>InputPeer</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>; +<a href='/method/messages.getScheduledMessages'>messages.getScheduledMessages</a>#bdbb0464 peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/messages.Messages'>messages.Messages</a>; +<a href='/method/messages.sendScheduledMessages'>messages.sendScheduledMessages</a>#bd38850a peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Updates'>Updates</a>; +<a href='/method/messages.deleteScheduledMessages'>messages.deleteScheduledMessages</a>#59ae2b16 peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/messages.editMessage'>messages.editMessage</a>#48f71778 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> message:flags.11?<a href='/type/string'>string</a> media:flags.14?<a href='/type/InputMedia'>InputMedia</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.15?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Clients can manually edit the schedule queue of a certain chat, providing the scheduled message ID obtained from <a href="/constructor/updateNewScheduledMessage">updateNewScheduledMessage</a>. </p> +<ul> +<li><a href="/method/messages.getScheduledHistory">messages.getScheduledHistory</a> obtains all messages in the schedule queue for the specified chat</li> +<li><a href="/method/messages.getScheduledMessages">messages.getScheduledMessages</a> obtains information about specific messages in the schedule queue for the specified chat</li> +<li><a href="/method/messages.sendScheduledMessages">messages.sendScheduledMessages</a> flushes messages from the schedule queue, sending them immediately</li> +<li><a href="/method/messages.deleteScheduledMessages">messages.deleteScheduledMessages</a> deletes messages from the schedule queue, without sending them</li> +<li><a href="/method/messages.editMessage">messages.editMessage</a> can be used to modify the scheduled date of a specific message in a schedule queue. </li> +</ul> +<p>Modifying scheduled messages will generate an <a href="/constructor/updateNewScheduledMessage">updateNewScheduledMessage</a> with the same ID, and updated information.<br> +Deleting scheduled messages will generate an <a href="/constructor/updateDeleteScheduledMessages">updateDeleteScheduledMessages</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/search.html b/data/core.telegram.org/api/search.html new file mode 100644 index 0000000000..7fb69193a6 --- /dev/null +++ b/data/core.telegram.org/api/search.html @@ -0,0 +1,179 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Search</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows applying detailed message filters while looking for messages in chats."> + <meta property="og:title" content="Search"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows applying detailed message filters while looking for messages in chats."> + <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?215" 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/search" >Search</a></li></ul></div> + <h1 id="dev_page_title">Search</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows applying detailed message filters while looking for messages in chats.</p> +<h3><a class="anchor" href="#search-filters" id="search-filters" name="search-filters"><i class="anchor-icon"></i></a>Search filters</h3> +<pre><code><a href='/constructor/inputMessagesFilterEmpty'>inputMessagesFilterEmpty</a>#57e2f66c = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterPhotos'>inputMessagesFilterPhotos</a>#9609a51c = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterVideo'>inputMessagesFilterVideo</a>#9fc00e65 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterPhotoVideo'>inputMessagesFilterPhotoVideo</a>#56e9f0e4 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterDocument'>inputMessagesFilterDocument</a>#9eddf188 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterUrl'>inputMessagesFilterUrl</a>#7ef0dd87 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterGif'>inputMessagesFilterGif</a>#ffc86587 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterVoice'>inputMessagesFilterVoice</a>#50f5c392 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterMusic'>inputMessagesFilterMusic</a>#3751b49e = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterChatPhotos'>inputMessagesFilterChatPhotos</a>#3a20ecb8 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterPhoneCalls'>inputMessagesFilterPhoneCalls</a>#80c99768 flags:<a href='/type/%23'>#</a> missed:flags.0?<a href='/constructor/true'>true</a> = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterRoundVoice'>inputMessagesFilterRoundVoice</a>#7a7c17a4 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterRoundVideo'>inputMessagesFilterRoundVideo</a>#b549da53 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterMyMentions'>inputMessagesFilterMyMentions</a>#c1f8e69a = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterGeo'>inputMessagesFilterGeo</a>#e7026d0d = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterContacts'>inputMessagesFilterContacts</a>#e062db83 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterPinned'>inputMessagesFilterPinned</a>#1bb00451 = <a href='/type/MessagesFilter'>MessagesFilter</a>; + +<a href='/constructor/messages.messages'>messages.messages</a>#8c718e87 messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Message'>Message</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <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?<a href='/constructor/true'>true</a> 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><<a href='/type/Message'>Message</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <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?<a href='/constructor/true'>true</a> 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><<a href='/type/Message'>Message</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <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.search'>messages.search</a>#a0fda762 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>; + +<a href='/method/messages.searchGlobal'>messages.searchGlobal</a>#4bc6589a flags:<a href='/type/%23'>#</a> folder_id:flags.0?<a href='/type/int'>int</a> q:<a href='/type/string'>string</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_rate:<a href='/type/int'>int</a> offset_peer:<a href='/type/InputPeer'>InputPeer</a> offset_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre> +<p>When using <a href="/method/messages.search">messages.search</a> or <a href="/method/messages.searchGlobal">messages.searchGlobal</a>, a certain message filter may be applied.<br> +This allows the server to filter messages based on a text query, and even on their type, and this feature is often used by graphical clients to implement features like the chat gallery, chat profile pictures and more. +Available filters:</p> +<ul> +<li><a href="/constructor/inputMessagesFilterPhotos">inputMessagesFilterPhotos</a> - Returns only photos, used for implementing the chat photo gallery, and when scrolling left or right while viewing a photo</li> +<li><a href="/constructor/inputMessagesFilterVideo">inputMessagesFilterVideo</a> - Returns only videos, used for implementing the chat video gallery, and when scrolling left or right while viewing a video</li> +<li><a href="/constructor/inputMessagesFilterPhotoVideo">inputMessagesFilterPhotoVideo</a> - Return only videos and photos, used for implementing the chat media gallery</li> +<li><a href="/constructor/inputMessagesFilterDocument">inputMessagesFilterDocument</a> - Return only videos and photos, used for implementing the chat document gallery</li> +<li><a href="/constructor/inputMessagesFilterUrl">inputMessagesFilterUrl</a> - Return only messages with links, used for implementing the chat link gallery</li> +<li><a href="/constructor/inputMessagesFilterGif">inputMessagesFilterGif</a> - Return only GIFs, used for implementing the chat GIF gallery</li> +<li><a href="/constructor/inputMessagesFilterVoice">inputMessagesFilterVoice</a> - Return only voice messages, used for implementing the chat voice message gallery, and to consecutively play voice messages in a chat</li> +<li><a href="/constructor/inputMessagesFilterMusic">inputMessagesFilterMusic</a> - Return only music files, used for implementing the chat music gallery</li> +<li><a href="/constructor/inputMessagesFilterChatPhotos">inputMessagesFilterChatPhotos</a> - Return only chat photos, used to allow scrolling through the profile picture history of a group</li> +<li><a href="/constructor/inputMessagesFilterPhoneCalls">inputMessagesFilterPhoneCalls</a> - Return only phone calls, used with <a href="/method/messages.searchGlobal">messages.searchGlobal</a> to implement the call tab, with the phone call history</li> +<li><a href="/constructor/inputMessagesFilterRoundVoice">inputMessagesFilterRoundVoice</a> - Return only round videos and voice messages, used to consecutively play round videos and voice messages in a chat</li> +<li><a href="/constructor/inputMessagesFilterRoundVideo">inputMessagesFilterRoundVideo</a> - Return only round videos, used to consecutively play round videos in a chat</li> +<li><a href="/constructor/inputMessagesFilterMyMentions">inputMessagesFilterMyMentions</a> - Return only messages mentioning me, can be used to display the <a href="/api/mentions">mention history</a> or, combined with another filter or query, return only messages that satisfy a certain criteria, and contain a mention.</li> +<li><a href="/constructor/inputMessagesFilterGeo">inputMessagesFilterGeo</a> - Return only geolocations, is used to fetch all recent valid <a href="/api/live-location">geolocations or live locations</a> sent in a group, to display them all in a single map</li> +<li><a href="/constructor/inputMessagesFilterContacts">inputMessagesFilterContacts</a> - Return only contacts</li> +<li><a href="/constructor/inputMessagesFilterPinned">inputMessagesFilterPinned</a> - Returns only <a href="/api/pin">pinned messages</a>, used for implementing the pinned message list</li> +</ul> +<p>The returned <a href="/type/messages.Messages">messages.Messages</a> constructors contain parameters for <a href="/api/offsets">pagination</a>, the messages themselves and two <code>offset_id_offset</code>/<code>count</code> parameters that can be used to display a <code>progress/total</code> counter like <code>photo 134 of 200</code>.<br> +For example, when displaying the chat photo gallery, we could display a <code>photo ${offset_id_offset} of ${count}</code> indicator on top.</p> +<h4><a class="anchor" href="#search-counters" id="search-counters" name="search-counters"><i class="anchor-icon"></i></a>Search counters</h4> +<pre><code><a href='/constructor/messages.searchCounter'>messages.searchCounter</a>#e844ebff flags:<a href='/type/%23'>#</a> inexact:flags.1?<a href='/constructor/true'>true</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> count:<a href='/type/int'>int</a> = <a href='/type/messages.SearchCounter'>messages.SearchCounter</a>; + +---functions--- + +<a href='/method/messages.getSearchCounters'>messages.getSearchCounters</a>#732eef00 peer:<a href='/type/InputPeer'>InputPeer</a> filters:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessagesFilter'>MessagesFilter</a>> = <a href='/type/Vector%20t'>Vector</a><<a href='/type/messages.SearchCounter'>messages.SearchCounter</a>>;</code></pre> +<p>Chat counters with filters can also be returned without fetching the actual messages, as seen in the schema above.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/srp.html b/data/core.telegram.org/api/srp.html new file mode 100644 index 0000000000..7ea2c7a89e --- /dev/null +++ b/data/core.telegram.org/api/srp.html @@ -0,0 +1,307 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Two-factor authentication</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to login to a user's account if they have enabled 2FA, how to change password."> + <meta property="og:title" content="Two-factor authentication"> + <meta property="og:image" content="566f538655672c95c6"> + <meta property="og:description" content="How to login to a user's account if they have enabled 2FA, how to change 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?215" 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/srp" >Two-factor authentication</a></li></ul></div> + <h1 id="dev_page_title">Two-factor authentication</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram uses the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">Secure Remote Password protocol</a> version 6a to implement 2FA.</p> +<p>Example impementation: <a href="https://github.com/tdlib/td/blob/56163c2460a65afc4db2c57ece576b8c38ea194b/td/telegram/PasswordManager.cpp">tdlib</a>.</p> +<h3><a class="anchor" href="#checking-the-password-with-srp" id="checking-the-password-with-srp" name="checking-the-password-with-srp"><i class="anchor-icon"></i></a>Checking the password with SRP</h3> +<p>To login to an account protected by a 2FA password or to perform some other actions (like changing channel owner), you will need to verify the user's knowledge of the current 2FA account password.</p> +<p>To do this, first the client needs to obtain SRP parameters and the KDF algorithm to use to check the validity of the password via <a href="https://core.telegram.org/method/account.getPassword">account.getPassword</a> method. For now, only the <a href="/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow">passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</a> algorithm is supported, so we'll only explain that.</p> +<p>Then, after the user provides a password, the client should generate an <a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a> object using SRP and a specific KDF algorithm as shown below and pass it to appropriate method (e.g. <a href="/method/auth.checkPassword">auth.checkPassword</a> in case of authorization).</p> +<p>This extension of the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a> uses the password-based <a href="https://en.wikipedia.org/wiki/PBKDF2">PBKDF2</a> with 100000 iterations using sha512 (<code>PBKDF2HMACSHA512iter100000</code>). +PBKDF2 is used to additionally rehash the <code>x</code> parameter, obtained using a method similar to the one described in <a href="https://tools.ietf.org/html/rfc2945#section-3">RFC 2945</a> (<code>H(s | H ( I | password | I) | s)</code> instead of <code>H(s | H ( I | ":" | password)</code>) (see below).</p> +<p>Here, <code>|</code> denotes concatenation and <code>+</code> denotes the arithmetical operator <code>+</code>. +In all cases where concatenation of numbers passed to hashing functions is done, the numbers must be used in big-endian form, padded to 2048 bits; all maths is modulo <code>p</code>. +Instead of <code>I</code>, <code>salt1</code> will be used (see <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a>). +Instead of <code>s</code>, <code>salt2</code> will be used (see <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a>).</p> +<p>The main hashing function <code>H</code> is sha256:</p> +<ul> +<li><code>H(data) := sha256(data)</code></li> +</ul> +<p>The salting hashing function <code>SH</code> is defined as follows:</p> +<ul> +<li><code>SH(data, salt) := H(salt | data | salt)</code></li> +</ul> +<p>The primary password hashing function is defined as follows:</p> +<ul> +<li><code>PH1(password, salt1, salt2) := SH(SH(password, salt1), salt2)</code></li> +</ul> +<p>The secondary password hashing function is defined as follows:</p> +<ul> +<li><code>PH2(password, salt1, salt2) := SH(pbkdf2(sha512, PH1(password, salt1, salt2), salt1, 100000), salt2)</code></li> +</ul> +<p>Client-side, the following parameters are extracted from the <a href="/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow">passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</a> object, contained in the <a href="/constructor/account.password">account.password</a> object.</p> +<ul> +<li> +<p><code>g := algo.g</code></p> +</li> +<li> +<p><code>p := algo.p</code> +The client is expected to check whether <strong>p</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that <code>2^2047 < p < 2^2048</code>), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> -- namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as to avoid repeating lengthy computations in future. This cache might be shared with one used for <a href="/mtproto/auth_key">Authorization Key generation</a>.</p> +<p>If the client has an inadequate random number generator, it makes sense to use the <strong>secure_random</strong> of account.password as additional seed.</p> +</li> +<li> +<p><code>password := (user-provided password)</code></p> +</li> +<li> +<p><code>salt1 := algo.salt1</code></p> +</li> +<li> +<p><code>salt2 := algo.salt2</code></p> +</li> +<li> +<p><code>g_b := srp_B</code> +<code>srp_B</code> and <code>srp_id</code> are extracted from the <a href="/constructor/account.password">account.password</a> object.</p> +</li> +</ul> +<p>The <code>k</code> parameter is generated, both on client and server:</p> +<ul> +<li><code>k := H(p | g)</code></li> +</ul> +<p>The shared param <code>u</code> is generated: the client does this, and the server does the same with the <code>g_a</code> we will send him later (see below)</p> +<ul> +<li><code>u := H(g_a | g_b)</code></li> +</ul> +<p>The final parameters are generated client-side only:</p> +<ul> +<li><code>x := PH2(password, salt1, salt2)</code></li> +<li><code>v := pow(g, x) mod p</code></li> +</ul> +<p>The server already has <code>v</code>, from when we set the password.</p> +<p>A final shared param is generated, for commodity:</p> +<ul> +<li><code>k_v := (k * v) mod p</code></li> +</ul> +<p>Finally, the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Protocol">key exchange process</a> starts on both parties.</p> +<p>The client computes a 2048-bit number <strong>a</strong> (using sufficient entropy or the server’s <strong>random</strong>; see above) and generates:</p> +<ul> +<li><code>g_a := pow(g, a) mod p</code>.</li> +</ul> +<p>The server computes a 2048-bit number <strong>b</strong> using sufficient entropy and generates the <code>g_b</code> parameter that was sent to us (see above).</p> +<ul> +<li><code>g_b := (k_v + (pow(g, b) mod p)) mod p</code></li> +</ul> +<p>Finally, the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Protocol">SRP session keys</a> are generated:</p> +<p>Client side: </p> +<ul> +<li><code>t := (g_b - k_v) mod p</code> (positive modulo, if the result is negative increment by <code>p</code>) </li> +<li><code>s_a := pow(t, a + u * x) mod p</code></li> +<li><code>k_a := H(s_a)</code></li> +</ul> +<p>Server side: </p> +<ul> +<li><code>s_b := pow(g_a * (pow(v, u) mod p), b) mod p</code></li> +<li><code>k_b := H(s_b)</code></li> +</ul> +<p>Since:</p> +<ul> +<li><code>g_b := (k_v + (pow(g, b) mod p)) mod p</code></li> +<li><code>t := (g_b - k_v) mod p</code></li> +<li><code>t := ((k_v + (pow(g, b) mod p)) - k_v) mod p</code></li> +<li><code>t := pow(g, b) mod p</code></li> +<li><code>s_a := pow(t, a + u * x) mod p</code></li> +<li><code>s_a := pow(pow(g, b) mod p, a + u * x) mod p</code></li> +</ul> +<p>And:</p> +<ul> +<li> +<p><code>g_a := pow(g, a) mod p</code></p> +</li> +<li> +<p><code>v := pow(g, x) mod p</code></p> +</li> +<li> +<p><code>s_b := pow(g_a * (pow(v, u) mod p), b) mod p</code></p> +</li> +<li> +<p><code>s_b := pow((pow(g, a) mod p) * (pow(pow(g, x) mod p, u) mod p), b) mod p</code></p> +</li> +<li> +<p><code>s_b := pow(pow(g, a + x * u) mod p, b) mod p</code></p> +</li> +<li> +<p><code>s_b := pow(pow(g, b) mod p, a + u * x) mod p</code></p> +</li> +<li> +<p><code>s_a := pow(pow(g, b) mod p, a + u * x) mod p</code></p> +</li> +</ul> +<p>This means:</p> +<ul> +<li><code>s_b === s_a</code></li> +<li><code>k_b === k_a</code></li> +</ul> +<p><strong>Finally, as per SRP</strong>:</p> +<ul> +<li><code>M1 := H(H(p) xor H(g) | H(salt1) | H(salt2) | g_a | g_b | k_a)</code></li> +</ul> +<p><code>M1</code> is passed to <a href="/constructor/inputCheckPasswordSRP">inputCheckPasswordSRP</a>, along with <code>g_a</code> (as <code>A</code> parameter) and the <code>srp_id</code>, extracted from the <a href="/constructor/account.password">account.password</a> object.</p> +<p>The server then computes:</p> +<ul> +<li><code>M2 := H(H(p) xor H(g) | H(salt1) | H(salt2) | g_a | g_b | k_b)</code></li> +</ul> +<p>Since we said that:</p> +<ul> +<li><code>s_b === s_a</code></li> +<li><code>k_b === k_a</code></li> +</ul> +<p>This means, if everything was done correctly,</p> +<ul> +<li><code>M1 === M2</code></li> +</ul> +<p>If the password isn't correct, <a href="/method/auth.checkPassword#possible-errors">400 PASSWORD_HASH_INVALID</a> will be returned.</p> +<h3><a class="anchor" href="#setting-a-new-2fa-password" id="setting-a-new-2fa-password" name="setting-a-new-2fa-password"><i class="anchor-icon"></i></a>Setting a new 2FA password</h3> +<p>To set a new 2FA password use the <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> method.<br> +If a password is already set, generate an InputCheckPasswordSRP object as per <a href="#checking-the-password-with-srp">checking passwords with SRP</a>, and insert it in the <code>password</code> field of the <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> method.<br> +To remove the current password, pass an empty <code>new_password_hash</code> in the <a href="/type/account.PasswordInputSettings">account.PasswordInputSettings</a> object.</p> +<p>To set a new password, use the SRP parameters and the KDF algorithm obtained using <a href="https://core.telegram.org/method/account.getPassword">account.getPassword</a> when generating the <code>password</code> field. +Then generate a new <code>new_password_hash</code> using the KDF algorithm specified in the <code>new_settings</code>, just append 32 sufficiently random bytes to the <code>salt1</code>, first. +Proceed as for <a href="#checking-the-password-with-srp">checking passwords with SRP</a>, just stop at the generation of the <code>v</code> parameter, and use it as <code>new_password_hash</code>:</p> +<ul> +<li><code>v := pow(g, x) mod p</code></li> +</ul> +<p>As usual in big endian form, padded to 2048 bits.</p> +<h4><a class="anchor" href="#email-verification" id="email-verification" name="email-verification"><i class="anchor-icon"></i></a>Email verification</h4> +<p>When setting up two-factor authorization, it is recommended to set up a <strong>recovery email</strong>, to allow recovery of the password through the user's email address, in case they forget it.</p> +<p>To set up a recovery email, it must first be verified. +This can be done directly when setting the new password using <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> by setting the email parameter and flag in the <a href="/constructor/account.passwordInputSettings">account.passwordInputSettings</a> constructor. +If the email isn't verified, an <a href="/method/account.updatePasswordSettings#possible-errors">EMAIL_UNCONFIRMED_X 400 error</a> will be returned, where X is the length of the verification code that was just sent to the email. +Use <a href="/method/account.confirmPasswordEmail">account.confirmPasswordEmail</a> to enter the received verification code and enable the recovery email. +Use <a href="/method/account.resendPasswordEmail">account.resendPasswordEmail</a> to resend the verification code. +Use <a href="/method/account.cancelPasswordEmail">account.cancelPasswordEmail</a> to cancel the verification code.</p> +<p>To get the current recovery email, use <a href="/method/account.getPasswordSettings">account.getPasswordSettings</a>.</p> +<h4><a class="anchor" href="#email-recovery" id="email-recovery" name="email-recovery"><i class="anchor-icon"></i></a>Email recovery</h4> +<p>In order to recover a forgotten 2FA password, an email must be sent to the <a href="#email-verification">previously specified address</a> using the <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a> method.<br> +Use <a href="/method/auth.checkRecoveryPassword">auth.checkRecoveryPassword</a> to make sure that the user provided a valid code.<br> +Then use <a href="/method/auth.recoverPassword">auth.recoverPassword</a> with the received code to delete the current 2FA password, to set a new one follow <a href="/api/srp">these instructions</a>.</p> +<h4><a class="anchor" href="#password-reset" id="password-reset" name="password-reset"><i class="anchor-icon"></i></a>Password reset</h4> +<pre><code><a href='/constructor/account.resetPasswordFailedWait'>account.resetPasswordFailedWait</a>#e3779861 retry_date:<a href='/type/int'>int</a> = <a href='/type/account.ResetPasswordResult'>account.ResetPasswordResult</a>; +<a href='/constructor/account.resetPasswordRequestedWait'>account.resetPasswordRequestedWait</a>#e9effc7d until_date:<a href='/type/int'>int</a> = <a href='/type/account.ResetPasswordResult'>account.ResetPasswordResult</a>; +<a href='/constructor/account.resetPasswordOk'>account.resetPasswordOk</a>#e926d63e = <a href='/type/account.ResetPasswordResult'>account.ResetPasswordResult</a>; + +---functions--- + +<a href='/method/account.resetPassword'>account.resetPassword</a>#9308ce1b = <a href='/type/account.ResetPasswordResult'>account.ResetPasswordResult</a>; +<a href='/method/account.declinePasswordReset'>account.declinePasswordReset</a>#4c9409f6 = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>If the user is already logged in and has forgotten their 2FA password, <a href="/method/account.resetPassword">account.resetPassword</a> can be used to initiate a password reset.<br> +On success, the call will initially return a <a href="/constructor/account.resetPasswordRequestedWait">account.resetPasswordRequestedWait</a> constructor and start a 7-day server-side timer, during which the user can abort the reset process using a button sent by the Telegram service account or directly in-UI using <a href="/method/account.declinePasswordReset">account.declinePasswordReset</a>. </p> +<p>When the time comes, <a href="/method/account.resetPassword">account.resetPassword</a> is invoked once more, returning a <a href="/constructor/account.resetPasswordOk">account.resetPasswordOk</a> to indicate that the password was successfully reset. </p> +<p>If the user recently requested a password reset that was canceled, <a href="/constructor/account.resetPasswordFailedWait">account.resetPasswordFailedWait</a> will be returned by the initial <a href="/method/account.resetPassword">account.resetPassword</a> call, and they must wait until the specified date before requesting another reset. </p> +<p>Note that if the user already knows their 2FA password and simply wants to disable 2FA, <a href="#setting-a-new-2fa-password">the same process used to enable the password must also be used to disable it »</a>.</p> +<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3> +<h4><a class="anchor" href="#srp-design" id="srp-design" name="srp-design"><i class="anchor-icon"></i></a><a href="http://srp.stanford.edu/design.html">SRP design</a></h4></div> + +</div> + + </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/stats.html b/data/core.telegram.org/api/stats.html new file mode 100644 index 0000000000..c9372acb5a --- /dev/null +++ b/data/core.telegram.org/api/stats.html @@ -0,0 +1,297 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Channel statistics</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram offers detailed channel statistics for channels and supergroups."> + <meta property="og:title" content="Channel statistics"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram offers detailed channel statistics for channels and supergroups."> + <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?215" 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/stats" >Channel statistics</a></li></ul></div> + <h1 id="dev_page_title">Channel statistics</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram offers detailed channel statistics for channels and supergroups. </p> +<h3><a class="anchor" href="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a>Channel statistics</h3> +<p>Schema:</p> +<pre><code><a href='/constructor/statsDateRangeDays'>statsDateRangeDays</a>#b637edaf min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> = <a href='/type/StatsDateRangeDays'>StatsDateRangeDays</a>; + +<a href='/constructor/statsAbsValueAndPrev'>statsAbsValueAndPrev</a>#cb43acde current:<a href='/type/double'>double</a> previous:<a href='/type/double'>double</a> = <a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a>; + +<a href='/constructor/statsPercentValue'>statsPercentValue</a>#cbce2fe0 part:<a href='/type/double'>double</a> total:<a href='/type/double'>double</a> = <a href='/type/StatsPercentValue'>StatsPercentValue</a>; + +<a href='/constructor/statsGraphAsync'>statsGraphAsync</a>#4a27eb2d token:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraphError'>statsGraphError</a>#bedc9822 error:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraph'>statsGraph</a>#8ea464b6 flags:<a href='/type/%23'>#</a> json:<a href='/type/DataJSON'>DataJSON</a> zoom_token:flags.0?<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; + +<a href='/constructor/messageInteractionCounters'>messageInteractionCounters</a>#ad4fc9bd msg_id:<a href='/type/int'>int</a> views:<a href='/type/int'>int</a> forwards:<a href='/type/int'>int</a> = <a href='/type/MessageInteractionCounters'>MessageInteractionCounters</a>; + +<a href='/constructor/stats.broadcastStats'>stats.broadcastStats</a>#bdf78394 period:<a href='/type/StatsDateRangeDays'>StatsDateRangeDays</a> followers:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> views_per_post:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> shares_per_post:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> enabled_notifications:<a href='/type/StatsPercentValue'>StatsPercentValue</a> growth_graph:<a href='/type/StatsGraph'>StatsGraph</a> followers_graph:<a href='/type/StatsGraph'>StatsGraph</a> mute_graph:<a href='/type/StatsGraph'>StatsGraph</a> top_hours_graph:<a href='/type/StatsGraph'>StatsGraph</a> interactions_graph:<a href='/type/StatsGraph'>StatsGraph</a> iv_interactions_graph:<a href='/type/StatsGraph'>StatsGraph</a> views_by_source_graph:<a href='/type/StatsGraph'>StatsGraph</a> new_followers_by_source_graph:<a href='/type/StatsGraph'>StatsGraph</a> languages_graph:<a href='/type/StatsGraph'>StatsGraph</a> recent_message_interactions:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageInteractionCounters'>MessageInteractionCounters</a>> = <a href='/type/stats.BroadcastStats'>stats.BroadcastStats</a>; + +---functions--- + +<a href='/method/stats.getBroadcastStats'>stats.getBroadcastStats</a>#ab42441a flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> channel:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/stats.BroadcastStats'>stats.BroadcastStats</a>; +<a href='/method/stats.loadAsyncGraph'>stats.loadAsyncGraph</a>#621d5fa0 flags:<a href='/type/%23'>#</a> token:<a href='/type/string'>string</a> x:flags.0?<a href='/type/long'>long</a> = <a href='/type/StatsGraph'>StatsGraph</a>;</code></pre> +<p>Administrators of <a href="/api/channel">channels</a> of a certain size (the exact limit is a server-side config, returned in the <code>can_view_stats</code> flag of <a href="/constructor/channelFull">channelFull</a>) can call <a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a> to get detailed channel statistics.<br> +The returned <a href="/constructor/stats.broadcastStats">stats.broadcastStats</a> contains multiple statistics: </p> +<ul> +<li>Period-related statistics: a pair of values, one at the beginning and one at the end of the period in consideration (<code>period</code>). <br> The <code>period</code> typically depends on channel activity.<ul> +<li>Absolute follower count (<code>followers</code>)</li> +<li><code>total_viewcount/postcount</code>, for posts posted during the period in consideration (<code>views_per_post</code>).<br> +Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>). </li> +<li><code>total_sharecount/postcount</code>, for posts posted during the period in consideration (<code>shares_per_post</code>).<br> +Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>).</li> +</ul> +</li> +<li>Percentage statistics<ul> +<li>Percentage of subscribers with enabled notifications (<code>enabled_notifications</code>)</li> +</ul> +</li> +<li>Graphs: <a href="#graph-visualization">graphs are described below »</a>. </li> +</ul> +<h3><a class="anchor" href="#supergroup-statistics" id="supergroup-statistics" name="supergroup-statistics"><i class="anchor-icon"></i></a>Supergroup statistics</h3> +<p>Schema:</p> +<pre><code><a href='/constructor/statsGroupTopPoster'>statsGroupTopPoster</a>#9d04af9b user_id:<a href='/type/long'>long</a> messages:<a href='/type/int'>int</a> avg_chars:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopPoster'>StatsGroupTopPoster</a>; +<a href='/constructor/statsGroupTopInviter'>statsGroupTopInviter</a>#535f779d user_id:<a href='/type/long'>long</a> invitations:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopInviter'>StatsGroupTopInviter</a>; +<a href='/constructor/statsGroupTopAdmin'>statsGroupTopAdmin</a>#d7584c87 user_id:<a href='/type/long'>long</a> deleted:<a href='/type/int'>int</a> kicked:<a href='/type/int'>int</a> banned:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopAdmin'>StatsGroupTopAdmin</a>; + +<a href='/constructor/stats.megagroupStats'>stats.megagroupStats</a>#ef7ff916 period:<a href='/type/StatsDateRangeDays'>StatsDateRangeDays</a> members:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> messages:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> viewers:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> posters:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> growth_graph:<a href='/type/StatsGraph'>StatsGraph</a> members_graph:<a href='/type/StatsGraph'>StatsGraph</a> new_members_by_source_graph:<a href='/type/StatsGraph'>StatsGraph</a> languages_graph:<a href='/type/StatsGraph'>StatsGraph</a> messages_graph:<a href='/type/StatsGraph'>StatsGraph</a> actions_graph:<a href='/type/StatsGraph'>StatsGraph</a> top_hours_graph:<a href='/type/StatsGraph'>StatsGraph</a> weekdays_graph:<a href='/type/StatsGraph'>StatsGraph</a> top_posters:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StatsGroupTopPoster'>StatsGroupTopPoster</a>> top_admins:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StatsGroupTopAdmin'>StatsGroupTopAdmin</a>> top_inviters:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StatsGroupTopInviter'>StatsGroupTopInviter</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/stats.MegagroupStats'>stats.MegagroupStats</a>; + +---functions--- + +<a href='/method/stats.getMegagroupStats'>stats.getMegagroupStats</a>#dcdf8607 flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> channel:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/stats.MegagroupStats'>stats.MegagroupStats</a>;</code></pre> +<p>Administrators of <a href="/api/channel">supergroups</a> of a certain size (the exact limit is a server-side config, returned in the <code>can_view_stats</code> flag of <a href="/constructor/channelFull">channelFull</a>) can call <a href="/method/stats.getMegagroupStats">stats.getMegagroupStats</a> to get detailed supergroup statistics.<br> +The returned <a href="/constructor/stats.broadcastStats">stats.broadcastStats</a> contains multiple statistics, see the <a href="/constructor/stats.broadcastStats">constructor page for more info »</a>. </p> +<h3><a class="anchor" href="#message-statistics" id="message-statistics" name="message-statistics"><i class="anchor-icon"></i></a>Message statistics</h3> +<pre><code><a href='/constructor/stats.messageStats'>stats.messageStats</a>#8999f295 views_graph:<a href='/type/StatsGraph'>StatsGraph</a> = <a href='/type/stats.MessageStats'>stats.MessageStats</a>; + +---functions--- + +<a href='/method/stats.getMessageStats'>stats.getMessageStats</a>#b6e0a3f5 flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> channel:<a href='/type/InputChannel'>InputChannel</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/stats.MessageStats'>stats.MessageStats</a>;</code></pre> +<p>Administrators of <a href="/api/channel">channels</a> of a certain size (the exact limit is a server-side config, returned in the <code>can_view_stats</code> flag of <a href="/constructor/channelFull">channelFull</a>) can call <a href="/method/stats.getMessageStats">stats.getMessageStats</a> to get statistics of a specific message.<br> +The returned <a href="/constructor/stats.messageStats">stats.messageStats</a> contains the view graph of the message. </p> +<h2><a class="anchor" href="#graph-visualization" id="graph-visualization" name="graph-visualization"><i class="anchor-icon"></i></a>Graph visualization</h2> +<p>There are four available visualizations for graph types:</p> +<ul> +<li><a href="#line-graph">Line graph</a></li> +<li><a href="#step-graph">Step graph</a></li> +<li><a href="#bar-graph">Bar graph</a></li> +<li><a href="#area-graph">Area graph</a></li> +</ul> +<p>Graph modifiers (see <a href="#graph-examples">various graphs</a> for examples): </p> +<ul> +<li><code>y_scaled</code> - Indicates that each of the two (!) lines in a step graph must be visualized on its own scale, with two different tick axes on the left and right parts of the graph</li> +<li><code>percentage</code> - Indicates whether value percentages should be shown in labels</li> +<li><code>stacked</code> - Depending on the graph type, indicates stacking of multiple columns in the same graph</li> +</ul> +<h3><a class="anchor" href="#graph-syntax" id="graph-syntax" name="graph-syntax"><i class="anchor-icon"></i></a>Graph syntax</h3> +<pre><code><a href='/constructor/statsGraphAsync'>statsGraphAsync</a>#4a27eb2d token:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraphError'>statsGraphError</a>#bedc9822 error:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraph'>statsGraph</a>#8ea464b6 flags:<a href='/type/%23'>#</a> json:<a href='/type/DataJSON'>DataJSON</a> zoom_token:flags.0?<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; + +<a href='/constructor/dataJSON'>dataJSON</a>#7d748d04 data:<a href='/type/string'>string</a> = <a href='/type/DataJSON'>DataJSON</a>; + +---functions--- + +<a href='/method/stats.loadAsyncGraph'>stats.loadAsyncGraph</a>#621d5fa0 flags:<a href='/type/%23'>#</a> token:<a href='/type/string'>string</a> x:flags.0?<a href='/type/long'>long</a> = <a href='/type/StatsGraph'>StatsGraph</a>;</code></pre> +<p>Certain graphs are not directly sent in the <a href="/constructor/stats.broadcastStats">stats.broadcastStats</a> constructor to reduce server load: instead, those graphs will be sent as a <a href="/constructor/statsGraphAsync">statsGraphAsync</a> constructor, and should be fetched separately using <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a>. </p> +<p>After obtaining the full <a href="/constructor/statsGraph">statsGraph</a> constructor, clients should parse the JSON graph object in the <code>json</code> field.</p> +<p>Object structure: </p> +<table class="table"> +<thead> +<tr> +<th>Key</th> +<th>Graph title</th> +</tr> +</thead> +<tbody> +<tr> +<td>columns</td> +<td>Array of all data column arrays in the chart. Each column array has its <strong>label</strong> at position 0, followed by values.</td> +</tr> +<tr> +<td>types</td> +<td><a href="#graphs">Graphs types</a> for each of the column arrays (object, <code>"label": "type"</code>): <br>- <code>line</code> - <a href="#line-graph">line graph</a> <br>- <code>area</code> - <a href="#area-graph">area graph</a> <br>- <code>step</code> - <a href="#step-graph">step graph</a> <br>- <code>bar</code> - <a href="#bar-graph">bar graph</a> <br>- <code>x</code> - x axis values for each of the charts at the corresponding positions, UNIX timestamps in milliseconds.</td> +</tr> +<tr> +<td>colors</td> +<td>Color for each type (object, <code>"label": "colorKey#AAAAAA"</code>; see <a href="#chart-colors">chart colors</a>).</td> +</tr> +<tr> +<td>names</td> +<td>Localized name for each variable (object, <code>"label": "Name"</code>)</td> +</tr> +<tr> +<td>subchart</td> +<td>Object indicating the default zoom range for the graph, this is object's structure: <br>- <code>show</code> - Whether to use the specified zoom range (boolean) <br>- <code>defaultZoom</code> - An array with two <code>x</code> values, indicating the two ends of the default zoom range</td> +</tr> +<tr> +<td>y_scaled</td> +<td>Indicates that each of the two (!) lines in a step graph must be visualized on its own scale, with two different tick axes on the left and right parts of the graph (boolean, see <a href="#graph-examples">various graphs</a> for examples)</td> +</tr> +<tr> +<td>percentage</td> +<td>Indicates whether value percentages should be shown in labels (boolean, see <a href="#graph-examples">various graphs</a> for examples)</td> +</tr> +<tr> +<td>stacked</td> +<td>Depending on the graph type, indicates stacking of multiple columns in the same graph (boolean, see <a href="#graph-examples">various graphs</a> for examples)</td> +</tr> +</tbody> +</table> +<!-- | hidden | Array of columns that should not be visualized in the final graph | --> +<p>The following chart restrictions apply:</p> +<ul> +<li>Up to 50 columns on one graph must be supported.</li> +<li>Chart types are always the same for every column in the graph.</li> +<li>The <code>bar</code> chart type and <code>stacked</code> option are always used together.</li> +<li><code>percentage</code> is always used with the <code>area</code> graph.<!-- * Graphs with every chart type _should_ be able to zoom into the same chart type with the same columns (names and types). --> +<!-- * `y_scaled` is only used with exactly 2 `line` columns --> +</li> +</ul> +<h3><a class="anchor" href="#chart-zooming" id="chart-zooming" name="chart-zooming"><i class="anchor-icon"></i></a>Chart zooming</h3> +<pre><code><a href='/constructor/statsGraphError'>statsGraphError</a>#bedc9822 error:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraph'>statsGraph</a>#8ea464b6 flags:<a href='/type/%23'>#</a> json:<a href='/type/DataJSON'>DataJSON</a> zoom_token:flags.0?<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; + +<a href='/constructor/dataJSON'>dataJSON</a>#7d748d04 data:<a href='/type/string'>string</a> = <a href='/type/DataJSON'>DataJSON</a>; + +---functions--- + +<a href='/method/stats.loadAsyncGraph'>stats.loadAsyncGraph</a>#621d5fa0 flags:<a href='/type/%23'>#</a> token:<a href='/type/string'>string</a> x:flags.0?<a href='/type/long'>long</a> = <a href='/type/StatsGraph'>StatsGraph</a>;</code></pre> +<p>Graphs that support zooming will contain a <code>zoom_token</code> in the <a href="/constructor/statsGraph">statsGraph</a> constructor.<br> +Said token should be then used as <code>token</code> in a new <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a> call triggered when the user clicks on the label, related to a certain x axis in the graph (see <a href="#graph-examples">graph examples</a>).<br> +The <code>x</code> coordinate of the label should be provided to the <code>x</code> parameter; the method will then return (if available) a more detailed subgraph.<br> +If not enough data is available, a localized <a href="/constructor/statsGraphError">statsGraphError</a> will be returned. </p> +<p>Typical zoom <em>visualization</em> rules: </p> +<ul> +<li>Any <code>percentage</code> graph (even if a <code>zoom_token</code> is not available) => <a href="#piechart">piechart</a></li> +<li><a href="#line-graph">line graph</a> => <a href="#line-graph">line graph</a></li> +<li><a href="#step-graph">step graph</a> => <a href="#step-graph">step graph</a></li> +<li><a href="#bar-graph">bar graph</a> => <a href="#bar-graph">bar graph</a></li> +<li><a href="#area-graph">area graph</a> => <a href="#area-graph">area graph</a></li> +</ul> +<h3><a class="anchor" href="#chart-colors" id="chart-colors" name="chart-colors"><i class="anchor-icon"></i></a>Chart colors</h3> +<p>Chart colors can be provided as a color key, followed by the primary color value in hex format: </p> +<pre><code>red#e05356</code></pre> +<p>The color key can be one of <code>red</code>, <code>lightblue</code>, <code>lightgreen</code>, <code>golden</code>, <code>green</code>, <code>orange</code>, <code>blue</code>, <code>indigo</code>.<br> +Apps can choose to use a color value specified by the currently loaded theme: for example, the <a href="https://github.com/DrKLO/Telegram/blob/dceccae0b74576d092fb3b2accaffded2c0b5f63/TMessagesProj/src/main/java/org/telegram/ui/Charts/data/ChartData.java#L81">android app</a> uses <code>statisticChartLine_*</code> themekeys for each of the color keys, check out the <a href="https://github.com/DrKLO/Telegram/tree/master/TMessagesProj/src/main/assets">assets directory</a> for a bunch of default themes with various colors for channel statistics. </p> +<p>However, the server may also choose to return just a plain color value in hex format: </p> +<pre><code>#e05356</code></pre> +<p>In this case, the <code>dark</code> flag of the <a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a> method can be used to choose the palette of returned colors.</p> +<h2><a class="anchor" href="#graph-examples" id="graph-examples" name="graph-examples"><i class="anchor-icon"></i></a>Graph examples</h2> +<h3><a class="anchor" href="#line-graph" id="line-graph" name="line-graph"><i class="anchor-icon"></i></a>Line graph</h3> +<p>Simple single line graph</p> +<h3><a class="anchor" href="#step-graph" id="step-graph" name="step-graph"><i class="anchor-icon"></i></a>Step graph</h3> +<p>Step graph, always "stacked" (to indicate multiple lines)</p> +<h3><a class="anchor" href="#bar-graph" id="bar-graph" name="bar-graph"><i class="anchor-icon"></i></a>Bar graph</h3> +<p>Bar graph with multiple lines, always "stacked" (to indicate actual stacked bars, biggest bars first)</p> +<h3><a class="anchor" href="#area-graph" id="area-graph" name="area-graph"><i class="anchor-icon"></i></a>Area graph</h3> +<p>Mixed bar/line graph, always "stacked" (to indicate actual stacked bars, biggest bars first)</p> +<h3><a class="anchor" href="#piechart" id="piechart" name="piechart"><i class="anchor-icon"></i></a>Piechart</h3> +<p>Piechart, typically obtained only when zooming into percentage graphs</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/threads.html b/data/core.telegram.org/api/threads.html new file mode 100644 index 0000000000..ff7a9930f8 --- /dev/null +++ b/data/core.telegram.org/api/threads.html @@ -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?215" 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><<a href='/type/Peer'>Peer</a>> channel_id:flags.0?<a href='/type/long'>long</a> max_id:flags.2?<a href='/type/int'>int</a> read_max_id:flags.3?<a href='/type/int'>int</a> = <a href='/type/MessageReplies'>MessageReplies</a>; + +<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +---functions--- + +<a href='/method/messages.search'>messages.search</a>#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><<a href='/type/Peer'>Peer</a>> channel_id:flags.0?<a href='/type/long'>long</a> max_id:flags.2?<a href='/type/int'>int</a> read_max_id:flags.3?<a href='/type/int'>int</a> = <a href='/type/MessageReplies'>MessageReplies</a>;</code></pre> +<p>The same <a href="/constructor/messageReplies">messageReplies</a> constructor seen above will also be contained in channel posts, this time containing information about the comment section of a specific channel post.<br> +The comment section of a channel post is simply the <a href="#message-thread">message thread</a> of the automatically forwarded channel message in the <a href="/api/discussion">linked discussion supergroup</a>; the ID of the linked discussion supergroup will be contained in the <code>messageReplies.channel_id</code> field. </p> +<p>For channel posts, the <code>recent_repliers</code> field will also contain information about the last few comment posters for a specific thread, to show a small list of commenter profile pictures in client previews.</p> +<h4><a class="anchor" href="#replies" id="replies" name="replies"><i class="anchor-icon"></i></a>@replies</h4> +<pre><code><a href='/constructor/messageFwdHeader'>messageFwdHeader</a>#5f777dce flags:<a href='/type/%23'>#</a> 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><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updateNewMessage'>updateNewMessage</a>#1f2b0afd message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updateNewChannelMessage'>updateNewChannelMessage</a>#62ba04d9 message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; + +---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="/">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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/top-rating.html b/data/core.telegram.org/api/top-rating.html new file mode 100644 index 0000000000..ae7b246332 --- /dev/null +++ b/data/core.telegram.org/api/top-rating.html @@ -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?215" 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><<a href='/type/TopPeer'>TopPeer</a>> = <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><<a href='/type/TopPeerCategoryPeers'>TopPeerCategoryPeers</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/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="/">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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/updates.html b/data/core.telegram.org/api/updates.html new file mode 100644 index 0000000000..4a314b97ea --- /dev/null +++ b/data/core.telegram.org/api/updates.html @@ -0,0 +1,226 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Working with Updates</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to subscribe to updates and handle them properly."> + <meta property="og:title" content="Working with Updates"> + <meta property="og:image" content="9c2ddd579d3d7cedba"> + <meta property="og:description" content="How to subscribe to updates and handle them properly."> + <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?215" 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/updates" >Working with Updates</a></li></ul></div> + <h1 id="dev_page_title">Working with Updates</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>When a client is being actively used, events will occur that affect the current user and that they must learn about as soon as possible, e.g. when a new message is received. To eliminate the need for the client itself to periodically download these events, there is an update delivery mechanism in which the server sends the user notifications over one of its available connections with the client.</p> +<h3><a class="anchor" href="#subscribing-to-updates" id="subscribing-to-updates" name="subscribing-to-updates"><i class="anchor-icon"></i></a>Subscribing to Updates</h3> +<p>Update events are sent to an authorized user into the last active connection (except for connections needed for downloading / uploading files).</p> +<p>So to start receiving updates the client needs to init connection and call API method, e.g. to <a href="#fetching-state">fetch current state</a>.</p> +<h3><a class="anchor" href="#event-sequences" id="event-sequences" name="event-sequences"><i class="anchor-icon"></i></a>Event sequences</h3> +<p>All events are received from the socket as a sequence of TL-serialized <a href="/type/Updates">Updates</a> objects, which might be optionally gzip-compressed in the same way as <a href="/api/invoking#uncompressing-data">responses to queries</a>.</p> +<p>Each <a href="/type/Updates">Updates</a> object may contain single or multiple <a href="/type/Update">Update</a> objects, representing different events happening.</p> +<p>In order to apply all updates in precise order and to guarantee that no update is missed or applied twice there is <code>seq</code> attribute in <a href="/type/Updates">Updates</a> constructors, and <code>pts</code> (with <code>pts_count</code>) or <code>qts</code> attributes in <a href="/type/Update">Update</a> constructors. The client must use those attributes values in combination with locally stored state to correctly apply incoming updates.</p> +<p>When a gap in updates sequence occurs, it must be filled via calling one of the API methods. <a href="#recovering-gaps">More below »</a></p> +<h3><a class="anchor" href="#updates-sequence" id="updates-sequence" name="updates-sequence"><i class="anchor-icon"></i></a><a href="/type/Updates">Updates</a> sequence</h3> +<p>As said earlier, each payload with updates has a TL-type <a href="/type/Updates">Updates</a>. It can be seen from the schema below that this type has several constructors.</p> +<pre><code><a href='/constructor/updatesTooLong'>updatesTooLong</a>#e317af7e = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateShort'>updateShort</a>#78d4dec1 update:<a href='/type/Update'>Update</a> date:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateShortMessage'>updateShortMessage</a>#313bc7f8 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> message:<a href='/type/string'>string</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateShortChatMessage'>updateShortChatMessage</a>#4d6deea5 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/long'>long</a> chat_id:<a href='/type/long'>long</a> message:<a href='/type/string'>string</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateShortSentMessage'>updateShortSentMessage</a>#9015e101 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updatesCombined'>updatesCombined</a>#725b04c3 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq_start:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updates'>updates</a>#74ae4240 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p><a href="/constructor/updatesTooLong">updatesTooLong</a> indicates that there are too many events pending to be pushed to the client, so one needs to <a href="#recovering-gaps">fetch them manually</a>.</p> +<p>Events inside <a href="/constructor/updateShort">updateShort</a> constructors, normally, have lower priority and are broadcast to a large number of users, i.e. one of the chat participants started entering text in a big conversation (<a href="/constructor/updateChatUserTyping">updateChatUserTyping</a>).</p> +<p>The <a href="/constructor/updateShortMessage">updateShortMessage</a>, <a href="/constructor/updateShortMessage">updateShortSentMessage</a> and <a href="/constructor/updateShortChatMessage">updateShortChatMessage</a> constructors are redundant but help significantly reduce the transmitted message size for 90% of the updates. They should be transformed to <a href="/constructor/updateShort">updateShort</a> upon receiving.</p> +<p>Two remaining constructors <a href="/constructor/updates">updates</a> and <a href="/constructor/updatesCombined">updatesCombined</a> are part of the Updates sequence. Both of them have <code>seq</code> attribute, which indicates the remote Updates state after the generation of the Updates, and <code>seq_start</code> indicates the remote Updates state after the <em>first</em> of the Updates in the packet is generated. For <a href="/constructor/updates">updates</a>, <code>seq_start</code> attribute is omitted, because it is assumed that it is always equal to <code>seq</code>.</p> +<h3><a class="anchor" href="#message-related-event-sequences" id="message-related-event-sequences" name="message-related-event-sequences"><i class="anchor-icon"></i></a>Message-related event sequences</h3> +<p>Each <em>event</em> related to a message box (message created, message edited, message deleted, etc) is identified by a unique autoincremented <em>pts</em>, or <em>qts</em> in case of secret chat updates, certain bot updates, etc.</p> +<p>Each message box can be considered as some server-side DB table that stores messages and events associated with them. +All boxes are completely independent, and each pts sequence is tied to just one box (see below).</p> +<p><a href="/type/Update">Update</a> object may contain info about <em>multiple events</em> (for example, <a href="/constructor/updateDeleteMessages">updateDeleteMessages</a>). +That's why all single updates might have <em>pts_count</em> parameter indicating the <em>number of events</em> contained in the received <em>update</em> (with some exceptions, in this case, the <em>pts_count</em> is considered to be <code>0</code>).</p> +<p>Each <a href="/api/channel">channel and supergroup</a> has its message box and <em>its event sequence</em> as a result; private chats and legacy groups of one user have another <em>common event sequence</em>. +Secret chats, certain bot events and other kinds of updates have yet another <em>common secondary event sequence</em>.</p> +<p>To recap, the client has to take care of the integrity of the following sequences to properly handle updates:</p> +<ul> +<li>Updates sequence (seq)<ul> +<li>Common message box sequence (pts)</li> +<li>Secondary event sequence (qts)</li> +<li>Channel message box sequence 1 (pts)</li> +<li>Channel message box sequence 2 (pts)</li> +<li>Channel message box sequence 3 (pts)</li> +<li>and so on...</li> +</ul> +</li> +</ul> +<h3><a class="anchor" href="#fetching-state" id="fetching-state" name="fetching-state"><i class="anchor-icon"></i></a>Fetching state</h3> +<p>The <em>common</em> update state is represented by the <a href="/type/updates.State">updates.State</a> constructor. +When the user logs in for the first time, call to <a href="/method/updates.getState">updates.getState</a> has to be made to store the latest update state (which will not be the absolute initial state, just the latest state at the current time). +The common update state can also be fetched from <a href="/constructor/updates.differenceTooLong">updates.differenceTooLong</a>.</p> +<p>The <em>channel update state</em> is represented simply by the <em>pts</em> of the event sequence: when first logging in, the initial channel state can be obtained from the <a href="/constructor/dialog">dialog</a> constructor when fetching dialogs, from <a href="/constructor/channelFull">the full channel info</a>, or it can be received <a href="https://core.telegram.org/constructor/updateChannelTooLong">as an updateChannelTooLong update</a>.</p> +<p>The <em>secondary update state</em> is represented by the <em>qts</em> of the secret event sequence, it is contained in the <a href="/type/updates.State">updates.State</a> of the <em>common update state</em>.</p> +<p>The <em>Updates sequence state</em> is represented by the <em>date</em> and <em>seq</em> of the <em>Updates sequence</em>, it is contained in the <a href="/type/updates.State">updates.State</a> of the <em>common</em> update state.</p> +<h3><a class="anchor" href="#update-handling" id="update-handling" name="update-handling"><i class="anchor-icon"></i></a>Update handling</h3> +<p>Update handling in Telegram clients consists of receiving events, making sure there were no gaps and no events were missed based on the locally stored state of the correspondent event sequence, and then updating the locally stored state based on the parameters received.</p> +<p>When the client receives payload with serialized updates, first of all, it needs to walk through all of the nested <a href="/type/Update">Update</a> objects and check if they belong to any of message box sequences (have <code>pts</code> or <code>qts</code> parameters). Those updates need to be handled separately according to corresponding local state and new <code>pts</code>/<code>qts</code> values. <a href="#pts-checking-and-applying">Details below »</a></p> +<p>After message box updates are handled, if there are any other updates remaining the client needs to handle them with respect to <code>seq</code>. <a href="#seq-checking-and-applying">Details below »</a></p> +<h4><a class="anchor" href="#pts-checking-and-applying" id="pts-checking-and-applying" name="pts-checking-and-applying"><i class="anchor-icon"></i></a><code>pts</code>: checking and applying</h4> +<p>Here, <code>local_pts</code> will be the local state, <code>pts</code> will be the remote state, <code>pts_count</code> will be the number of events in the update.</p> +<p>If <code>local_pts + pts_count === pts</code>, the update can be applied. +If <code>local_pts + pts_count > pts</code>, the update was already applied, and must be ignored. +If <code>local_pts + pts_count < pts</code>, there's an update gap that must be <a href="#recovering-gaps">filled</a>.</p> +<p>For example, let's assume the client has the following local state for the channel <code>123456789</code>:</p> +<pre><code>local_pts = 131</code></pre> +<p>Now let's assume an <a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> from channel <code>123456789</code> is received with <code>pts = 132</code> and <code>pts_count=1</code>. +Since <code>local_pts + pts_count === pts</code>, the total number of events since the last stored state is, in fact, equal to <code>pts_count</code>: this means the update can be safely accepted and the remote <code>pts</code> applied:</p> +<pre><code>local_pts = 132</code></pre> +<p>Since:</p> +<ul> +<li><code>pts</code> indicates the server state <strong>after</strong> the new channel message events are generated</li> +<li><code>pts_count</code> indicates the number of events in the new channel update</li> +<li>The server state <strong>before the new channel message event was generated</strong> has to be: <code>pts_before = pts - pts_count = 131</code>, which is, in fact, equal to our local state.</li> +</ul> +<p>Now let's assume an <a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> from channel <code>123456789</code> is received with <code>pts = 132</code> and <code>pts_count=1</code>. +Since <code>local_pts + pts_count > pts</code> (<code>133 > 132</code>), the update is skipped because we've already handled this update (in fact, our current <code>local_pts</code> was set by this same update, and it was resent twice due to network issues or other issues).</p> +<p>Now let's assume an <a href="/constructor/updateDeleteChannelMessages">updateDeleteChannelMessages</a> from channel <code>123456789</code> is received with <code>pts = 140</code> and <code>pts_count=5</code>. +Since <code>local_pts + pts_count < pts</code> (<code>137 < 140</code>), this means that updates were missed, and the gap must be recovered.</p> +<h5><a class="anchor" href="#secret-chats--bots" id="secret-chats--bots" name="secret-chats--bots"><i class="anchor-icon"></i></a>Secret chats & bots</h5> +<p>The whole process is very similar for secret chats and certain bot updates, but there is <code>qts</code> instead of <code>pts</code>, and events are never grouped, so it's assumed that <code>qts_count</code> is always equal to 1.</p> +<h4><a class="anchor" href="#seq-checking-and-applying" id="seq-checking-and-applying" name="seq-checking-and-applying"><i class="anchor-icon"></i></a><code>seq</code>: checking and applying</h4> +<p>On top level when handling received <a href="/constructor/updates">updates</a> and <a href="/constructor/updatesCombined">updatesCombined</a> there are three possible cases: +If <code>local_seq + 1 === seq_start</code>, the updates can be applied. +If <code>local_seq + 1 > seq_start</code>, the updates were already applied, and must be ignored. +If <code>local_seq + 1 < seq_start</code>, there's an updates gap that must be <a href="#recovering-gaps">filled</a> (updates.getDifference must be used as with common and secret event sequences).</p> +<p>If the updates were applied, local <em>Updates state</em> must be updated with <code>seq</code> and <code>date</code> from the constructor.</p> +<p>For all the other <a href="/type/Updates">Updates</a> type constructors there is no need to check <code>seq</code> or change a local state.</p> +<h3><a class="anchor" href="#recovering-gaps" id="recovering-gaps" name="recovering-gaps"><i class="anchor-icon"></i></a>Recovering gaps</h3> +<p>To do this, <a href="/method/updates.getDifference">updates.getDifference</a> (common/secret state) or <a href="/method/updates.getChannelDifference">updates.getChannelDifference</a> (channel state) with the respective local states must be called. +These methods should also be called on startup, to fetch new updates (preferably with some flags to reduce server load, see the method's docs). +Manually obtaining updates is also required in the following situations:</p> +<ul> +<li>Loss of sync: a gap was found in <strong>seq</strong> / <strong>pts</strong> / <strong>qts</strong> (as described above). It may be useful to wait up to 0.5 seconds in this situation and abort the sync in case a new update arrives, that fills the gap.</li> +<li>Session loss on the server: the client receives a <a href="https://core.telegram.org/mtproto/service_messages#new-session-creation-notification">new session created notification</a>. This can be caused by garbage collection on the MTProto server or a server reboot.</li> +<li>Incorrect update: the client cannot deserialize the received data.</li> +<li>Incomplete update: the client is missing data about a chat/user from one of the shortened constructors, such as <a href="/constructor/updateShortChatMessage">updateShortChatMessage</a>, etc.</li> +<li>Long period without updates: no updates for 15 minutes or longer.</li> +<li>The server requests the client to fetch the difference using <a href="/constructor/updateChannelTooLong">updateChannelTooLong</a> or <a href="/constructor/updatesTooLong">updatesTooLong</a>.</li> +</ul> +<p>When calling <a href="/method/updates.getDifference">updates.getDifference</a> if the <a href="/constructor/updates.differenceSlice">updates.differenceSlice</a> constructor is returned in response, the full difference was too large to be received in one request. The intermediate status, <strong>intermediate_state</strong>, must be saved on the client and the query must be repeated, using the intermediate status as the current status.</p> +<p>To fetch the updates difference of a channel, <a href="/method/updates.getChannelDifference">updates.getChannelDifference</a> is used. +If the difference is too large to be received in one request, the <code>final</code> flag of the result is <strong>not</strong> set (see <a href="/type/updates.ChannelDifference">docs</a>). +The intermediate status, represented by the <strong>pts</strong>, must be saved on the client and the query must be repeated, using the intermediate status as the current status.</p> +<p>For perfomance reasons and for better user experience, client can set maximum gap size to be filled: <code>pts_total_limit</code> parameter of <a href="/method/updates.getDifference">updates.getDifference</a> and <code>limit</code> parameter for <a href="/method/updates.getChannelDifference">updates.getChannelDifference</a> can be used.</p> +<p>If the gap is too large and there are too many updates to fetch, a <code>*TooLong</code> constructor will be returned. In this case, the client must <a href="#fetching-state">re-fetch the state</a>, re-start fetching updates from that state and follow the instructions that can be found <a href="/constructor/updates.channelDifferenceTooLong">here</a>.</p> +<p>It is recommended to use limit <code>10-100</code> for channels and <code>1000-10000</code> otherwise.</p> +<h3><a class="anchor" href="#example-implementations" id="example-implementations" name="example-implementations"><i class="anchor-icon"></i></a>Example implementations</h3> +<p>Implementations also have to take care to postpone updates received via the socket while filling gaps in the event and Update sequences, as well as avoid filling gaps in the same sequence.</p> +<p>Example implementations: <a href="https://github.com/tdlib/td">tdlib</a>, <a href="https://github.com/danog/MadelineProto">MadelineProto</a>. </p> +<p>An interesting and easy way this can be implemented, instead of using various locks, is by running background loops, like in <a href="https://docs.madelineproto.xyz/docs/UPDATES_INTERNAL.html">MadelineProto »</a>.</p> +<h3><a class="anchor" href="#push-notifications-about-updates" id="push-notifications-about-updates" name="push-notifications-about-updates"><i class="anchor-icon"></i></a><a href="/api/push-updates">PUSH Notifications about Updates</a></h3> +<p>If a client does not have an active connection at the time of an event, <a href="/api/push-updates">PUSH Notifications</a> will also be useful.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/url-authorization.html b/data/core.telegram.org/api/url-authorization.html new file mode 100644 index 0000000000..5e711e4cd3 --- /dev/null +++ b/data/core.telegram.org/api/url-authorization.html @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Seamless Telegram Login</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Handle Seamless Telegram Login URL authorization requests."> + <meta property="og:title" content="Seamless Telegram Login"> + <meta property="og:image" content="faa06a44f2ab0cf059"> + <meta property="og:description" content="Handle Seamless Telegram Login URL authorization requests."> + <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?215" 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/url-authorization" >Seamless Telegram Login</a></li></ul></div> + <h1 id="dev_page_title">Seamless Telegram Login</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Bots or Telegram websites may <a href="/bots/api#loginurl">ask users to login to a certain website via Telegram</a> when clicking on certain links or URL buttons in inline keyboards.</p> +<h3><a class="anchor" href="#bot-url-authorization" id="bot-url-authorization" name="bot-url-authorization"><i class="anchor-icon"></i></a>Bot URL authorization</h3> +<p>When the user clicks on <a href="/constructor/keyboardButtonUrlAuth">keyboardButtonUrlAuth</a>, <a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a> should be called, providing the <code>button_id</code> of the button and the ID and peer of the container message. +The returned <a href="/constructor/urlAuthResultRequest">urlAuthResultRequest</a> object will contain more details about the authorization request:</p> +<ul> +<li>The <code>domain</code> parameter will contain the domain name of the website on which the user will log in (example: <em>comments.app</em>).</li> +<li>The <code>bot</code> parameter will contain info about the bot which will be used for user authorization (example: <em>DiscussBot</em>).</li> +<li>The <code>request_write_access</code> will be set if the bot would like to send messages to the user.</li> +</ul> +<p>The info should be shown in a prompt:</p> +<div><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></div> +<p>If the user agrees to login to the URL, <a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a> should be called (eventually setting the <code>write_allowed</code> if the permission was requested and the user consented). +The result will be a <a href="/constructor/urlAuthResultAccepted">urlAuthResultAccepted</a> with the final URL to open, which will include a query string with the requested info and a hash that <a href="/widgets/login#receiving-authorization-data">must be verified upon receival by the service</a>.</p> +<p><a href="/constructor/urlAuthResultDefault">urlAuthResultDefault</a> could also be returned, instead, in which case the <code>url</code> of the <a href="/constructor/keyboardButtonUrlAuth">keyboardButtonUrlAuth</a> must be opened, instead. +The same must be done if the user opens the link while refusing the authorization request.</p> +<h3><a class="anchor" href="#link-url-authorization" id="link-url-authorization" name="link-url-authorization"><i class="anchor-icon"></i></a>Link URL authorization</h3> +<p>Telegram supports automatic authorization on certain websites upon opening an HTTP URL in-app, upon clicking a link in a message or clicking on a <a href="/constructor/keyboardButtonUrl">keyboardButtonUrl</a>.</p> +<h4><a class="anchor" href="#automatic-authorization" id="automatic-authorization" name="automatic-authorization"><i class="anchor-icon"></i></a>Automatic authorization</h4> +<p>Clients should automatically authenticate users when opening official Telegram websites, listed in the <code>url_auth_domains</code> key of the <a href="/api/config#client-configuration">client configuration object »</a>. </p> +<p>Upon clicking a link, the URL must be modified by appending the <code>autologin_token</code> from the <a href="/api/config#client-configuration">client configuration object »</a> to the <a href="https://datatracker.ietf.org/doc/html/rfc3986#section-3.4">query string</a>, like so: </p> +<p>Original URL: <code>https://somedomain.telegram.org/path?query=string#fragment=value</code><br> +Modified URL: <code>https://somedomain.telegram.org/path?query=string&autologin_token=$autologin_token#fragment=value</code> </p> +<p>Make sure that the used <code>autologin_token</code> is no more than <code>10000</code> seconds old, if it is older it must be refetched before use as described in the <a href="/api/config#client-configuration">client configuration section »</a>. </p> +<h4><a class="anchor" href="#manual-authorization" id="manual-authorization" name="manual-authorization"><i class="anchor-icon"></i></a>Manual authorization</h4> +<p>Clients should show a confirmation prompt similar to the one used <a href="#bot-url-authorization">for bots</a>, to authenticate users when opening certain Telegram websites, listed in the <code>url_auth_domains</code> key of the <a href="/api/config#client-configuration">client configuration object »</a>. </p> +<p><a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a> should be called, providing only the original <code>url</code>. +The returned <a href="/constructor/urlAuthResultRequest">urlAuthResultRequest</a> object will contain more details about the authorization request:</p> +<ul> +<li>The <code>domain</code> parameter will contain the domain name of the website on which the user will log in (example: <em>comments.app</em>).</li> +<li>The <code>request_write_access</code> will be set if the website would like to send messages to the user.</li> +</ul> +<p>The info should be shown in a prompt. </p> +<p>If the user agrees to login to the URL, <a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a> should be called (eventually setting the <code>write_allowed</code> if the permission was requested and the user consented). +The result will be a <a href="/constructor/urlAuthResultAccepted">urlAuthResultAccepted</a> with the final URL to open. </p> +<p><a href="/constructor/urlAuthResultDefault">urlAuthResultDefault</a> could also be returned, instead, in which case the original URL must be opened, instead. +The same must be done if the user opens the link while refusing the authorization request.</p> +<h3><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h3> +<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/api/web-events.html b/data/core.telegram.org/api/web-events.html new file mode 100644 index 0000000000..fd612b4c95 --- /dev/null +++ b/data/core.telegram.org/api/web-events.html @@ -0,0 +1,177 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Web events</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How telegram apps interact with webpages"> + <meta property="og:title" content="Web events"> + <meta property="og:image" content=""> + <meta property="og:description" content="How telegram apps interact with webpages"> + <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?215" 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/web-events" >Web events</a></li></ul></div> + <h1 id="dev_page_title">Web events</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>When interacting with HTML5 games and the websites of payment gateways, Telegram apps should expose APIs to allow receiving data and events from the websites.</p> +<h3><a class="anchor" href="#event-apis" id="event-apis" name="event-apis"><i class="anchor-icon"></i></a>Event APIs</h3> +<p>Games and payment gateways can generate events that are meant to be received by the Telegram apps. +Typically events are generated by using the <code>postEvent</code> method of the <a href="https://github.com/TelegramMessenger/GamingCommunication/blob/master/games.js">GamingCommunication library</a>. +The <code>postEvent</code> function will try sending the event to the Telegram app in a number of different ways.</p> +<h4><a class="anchor" href="#webviewproxy" id="webviewproxy" name="webviewproxy"><i class="anchor-icon"></i></a>WebviewProxy</h4> +<p>In mobile apps, the event receiver API should be typically exposed as a <code>window.TelegramWebviewProxy</code> object with a <code>postEvent</code> method.</p> +<pre><code>window.TelegramWebviewProxy.postEvent(eventType, eventData)</code></pre> +<h4><a class="anchor" href="#windowexternal" id="windowexternal" name="windowexternal"><i class="anchor-icon"></i></a>window.external</h4> +<p>Alternatively, a <code>window.external.notify</code> method can be exposed, accepting a string JSON payload with the event type and payload:</p> +<pre><code>window.external.notify(JSON.stringify({eventType: eventType, eventData: eventData}));</code></pre> +<h4><a class="anchor" href="#postmessage-api" id="postmessage-api" name="postmessage-api"><i class="anchor-icon"></i></a>postMessage API</h4> +<p>Finally, web MTProto clients that need to open a game or process a payment in an iframe can use the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage">postMessage API</a> to receive events from iframes. +The <a href="https://github.com/TelegramMessenger/GamingCommunication/blob/master/games.js">GamingCommunication library</a> by defaultwill use <code>'*'</code> as <code>targetOrigin</code>, sending messages to parent pages regardless of the origin of the embedder.</p> +<pre><code>window.parent.postMessage(JSON.stringify({eventType: eventType, eventData: eventData}), targetOrigin);</code></pre> +<h4><a class="anchor" href="#event-types" id="event-types" name="event-types"><i class="anchor-icon"></i></a>Event types</h4> +<p><code>eventType</code> is a simple string indicating the event type, and <code>eventData</code> is a payload with an object that will be parsed by the Telegram app.</p> +<table class="table"> +<thead> +<tr> +<th>eventType</th> +<th>eventData</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>payment_form_submit</code></td> +<td>JSON object with <code>data</code> and <code>title</code> fields</td> +<td><code>title</code> is the censored credit card title.<br><code>data</code> is a service-specific JSON payload with information about the payment credentials provided by the user to the payment system.<br><strong>Neither Telegram, nor bots will have access to your credit card information.</strong><br>Credit card details will be handled only by the payment system.</td> +</tr> +<tr> +<td><code>share_score</code></td> +<td>null</td> +<td>Will be called by games when the user explicitly clicks on the <strong>share score</strong> button to share the game, along with his score.<br>Typically done by using <a href="/method/messages.forwardMessages">messages.forwardMessages</a> on the game message with the <code>with_my_score</code> flag.</td> +</tr> +<tr> +<td><code>share_game</code></td> +<td>null</td> +<td>Will be called by games when the user explicitly clicks on the <strong>share game</strong> button to share the game, without sharing his score.<br>Typically done by using <a href="/method/messages.forwardMessages">messages.forwardMessages</a> on the game message without the <code>with_my_score</code> flag, or by sharing the game's short URL.</td> +</tr> +<tr> +<td><code>game_over</code></td> +<td>null</td> +<td>Can be called by games when the user loses a game</td> +</tr> +<tr> +<td><code>game_loaded</code></td> +<td>null</td> +<td>Can be called by games once the game fully loads</td> +</tr> +<tr> +<td><code>resize_frame</code></td> +<td>JSON object with <code>height</code> field</td> +<td>Called by supported pages inside of <a href="https://instantview.telegram.org">IV</a> iframe embeds, indicates the new size of the embed frame.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/apple_privacy.html b/data/core.telegram.org/apple_privacy.html new file mode 100644 index 0000000000..749930f957 --- /dev/null +++ b/data/core.telegram.org/apple_privacy.html @@ -0,0 +1,118 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Page moved</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="This is not the droid you're looking for. +The page has been moved."> + <meta property="og:title" content="Page moved"> + <meta property="og:image" content=""> + <meta property="og:description" content="This is not the droid you're looking for. +The page has been moved."> + <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?215" 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">Page moved</h1> + + <div id="dev_page_content"><p>This is not the droid you're looking for.<br>The page has been <a href="https://telegram.org/apple_privacy">moved</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/bots.html b/data/core.telegram.org/bots.html new file mode 100644 index 0000000000..fa4bec195b --- /dev/null +++ b/data/core.telegram.org/bots.html @@ -0,0 +1,437 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Bots: An introduction for developers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Bots are third-party applications that run inside Telegram. Users can interact with bots by sending them messages, commands…"> + <meta property="og:title" content="Bots: An introduction for developers"> + <meta property="og:image" content="75f7c457f2561cbf84"> + <meta property="og:description" content="Bots are third-party applications that run inside Telegram. Users can interact with bots by sending them messages, commands…"> + <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?215" 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">Bots: An introduction for developers</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Bots are third-party applications that run inside Telegram. Users can interact with bots by sending them messages, commands and <a href="#inline-mode">inline requests</a>. You control your bots using HTTPS requests to Telegram's <a href="/bots/api">Bot API</a>.</p> +<blockquote> +<p>The <a href="/bots/api">full API reference</a> for <strong>developers</strong> is available <a href="/bots/api">here</a>.</p> +</blockquote> +<h3><a class="anchor" name="1-what-can-i-do-with-bots" href="#1-what-can-i-do-with-bots"><i class="anchor-icon"></i></a>1. What can I do with bots?</h3> +<div class="dev_side_image"> + <a href="/file/811140081/1/VldnlW70g2I/a140b0216e7d156ebc" target="_blank"><img src="/file/811140663/1/uHVzwsRJz3Y/a499733c59840694ca" title="A chat with a bot also showing search results from the @gif inline-bot"/></a> +</div> + +<p>To name just a few things, you could use bots to:</p> +<ul> +<li><p><strong>Get customized notifications and news</strong>. A bot can act as a smart newspaper, sending you relevant content as soon as it's published.</p> +</li> +<li><p><strong>Integrate with other services</strong>. A bot can enrich Telegram chats with content from external services.<br><a href="https://t.me/gmailbot"><strong>Gmail Bot</strong></a>, <a href="https://t.me/gif"><strong>GIF bot</strong></a>, <a href="https://t.me/imdb"><strong>IMDB bot</strong></a>, <a href="https://t.me/wiki"><strong>Wiki bot</strong></a>, <a href="https://t.me/music"><strong>Music bot</strong></a>, <a href="https://t.me/youtube"><strong>Youtube bot</strong></a>, <a href="https://t.me/githubbot"><strong>GitHubBot</strong></a></p> +</li> +<li><p><strong>Accept payments from Telegram users</strong>. A bot can offer paid services or work as a virtual storefront. <a href="/bots/payments">Read more »</a><br><a href="https://t.me/shopbot"><strong>Demo Shop Bot</strong></a>, <a href="https://t.me/teststore"><strong>Demo Store</strong></a></p> +</li> +<li><p><strong>Create custom tools</strong>. A bot may provide you with alerts, weather forecasts, translations, formatting or other services.<br><a href="https://t.me/Bold"><strong>Markdown bot</strong></a>, <a href="https://t.me/sticker"><strong>Sticker bot</strong></a>, <a href="https://t.me/vote"><strong>Vote bot</strong></a>, <a href="https://t.me/like"><strong>Like bot</strong></a></p> +</li> +<li><p><strong>Build single- and multiplayer games</strong>. A bot can offer rich <a href="/bots/games">HTML5 experiences</a>, from simple arcades and puzzles to 3D-shooters and real-time strategy games.<br><a href="https://t.me/gamebot"><strong>GameBot</strong></a>, <a href="https://t.me/gamee"><strong>Gamee</strong></a></p> +</li> +<li><p><strong>Build social services</strong>. A bot could connect people looking for conversation partners based on common interests or proximity.</p> +</li> +<li><p><strong>Do virtually anything else</strong>. Except for dishes — bots are terrible at doing the dishes.</p> +</li> +</ul> +<h3><a class="anchor" name="2-how-do-bots-work" href="#2-how-do-bots-work"><i class="anchor-icon"></i></a>2. How do bots work?</h3> +<p>At the core, Telegram Bots are special accounts that do not require an additional phone number to set up. Users can interact with bots in two ways:</p> +<ul> +<li>Send messages and <a href="#commands">commands</a> to bots by opening a chat with them or by adding them to groups.</li> +<li>Send requests directly from the input field by typing the bot's @username and a query. This allows sending content from <a href="/bots/inline">inline bots</a> directly into any chat, group or channel.</li> +</ul> +<p>Messages, commands and requests sent by users are passed to the software running on your servers. Our intermediary server handles all encryption and communication with the Telegram API for you. You communicate with this server via a simple HTTPS-interface that offers a simplified version of the Telegram API. We call that interface our <a href="/bots/api">Bot API</a>.</p> +<blockquote> +<p>A detailed description of the Bot API is available on <a href="/bots/api">this page »</a></p> +</blockquote> +<h3><a class="anchor" name="3-how-do-i-create-a-bot" href="#3-how-do-i-create-a-bot"><i class="anchor-icon"></i></a>3. How do I create a bot?</h3> +<div class="dev_side_image"> + <a href="/file/811140327/1/zlN4goPTupk/9ff2f2f01c4bd1b013" target="_blank"><img src="/file/811140763/1/PihKNbjT8UE/03b57814e13713da37" title="The Botfather. Click for hi-res picture"/></a> +</div> + +<p>There's a… bot for that. Just talk to <a href="https://t.me/botfather">BotFather</a> (described <a href="#6-botfather">below</a>) and follow a few simple steps. Once you've created a bot and received your authentication token, head down to the <a href="/bots/api">Bot API manual</a> to see what you can teach your bot to do.</p> +<blockquote> +<p>You may also like to check out some <strong>code examples</strong> <a href="/bots/samples">here »</a></p> +</blockquote> +<h3><a class="anchor" name="4-how-are-bots-different-from-humans" href="#4-how-are-bots-different-from-humans"><i class="anchor-icon"></i></a>4. How are bots different from humans?</h3> +<ul> +<li>Bots have no online status and no last seen timestamps, the interface shows the label <strong>'bot'</strong> instead.</li> +<li>Bots have limited cloud storage — older messages may be removed by the server shortly after they have been processed.</li> +<li>Bots can't initiate conversations with users. A user <strong>must</strong> either add them to a group or send them a message first. People can use <code>t.me/<bot_username></code> links or username search to find your bot.</li> +<li>Bot usernames always end in 'bot' (e.g. <a href="https://t.me/triviabot">@TriviaBot</a>, <a href="https://t.me/githubbot">@GitHub_bot</a>).</li> +<li>When added to a group, bots do not receive all messages by default (see <a href="#privacy-mode">Privacy mode</a>).</li> +<li>Bots never eat, sleep or complain (unless expressly programmed otherwise).</li> +</ul> +<hr> +<h3><a class="anchor" name="5-bot-perks" href="#5-bot-perks"><i class="anchor-icon"></i></a>5. Bot perks</h3> +<p>Telegram bots are unique in many ways — we offer <a href="#keyboards">two</a> <a href="#inline-keyboards-and-on-the-fly-updating">kinds</a> of keyboards, additional interfaces for <a href="#global-commands">default commands</a> and <a href="#deep-linking">deep linking</a> as well as <a href="/bots/api#formatting-options">text formatting</a>, <a href="#payment-platform">integrated payments</a> and more.</p> +<h4><a class="anchor" name="inline-mode" href="#inline-mode"><i class="anchor-icon"></i></a>Inline mode</h4> +<!--<div class="dev_side_image"> + <a href="/file/811140221/1/fW9vnLya4Fg/e2b5c530c7b0e019c4" target="_blank"><img src="/file/811140530/1/h-eMmPp2vp4/cd4a109f75e6561305" title="Inline bots. Click for hi-res picture"> +</a></div>--> + +<p>Users can interact with your bot via <a href="/bots/api#inline-mode"><strong>inline queries</strong></a> straight from the <strong>text input field</strong> in <strong>any</strong> chat. All they need to do is start a message with your bot's username and then type a query.</p> +<p>Having received the query, your bot can return some results. As soon as the user taps one of them, it is sent to the user's currently opened chat. This way, people can request content from your bot in any of their chats, groups or channels.</p> +<p>Check out this <a href="https://telegram.org/blog/inline-bots">blog</a> to see a sample inline bot in action. You can also try the <a href="https://t.me/sticker">@sticker</a> and <a href="https://t.me/music">@music</a> bots to see for yourself.</p> +<div><center> +<a href="/file/811140558/1/POjp00-nHqE/50d0312845a05e6da9" target="_blank"><img src="/file/811140558/1/POjp00-nHqE/50d0312845a05e6da9" title="New input field" style="width: 295px; padding: 10px 0px;" /></a></center> + +</div> + +<p>We've also implemented an easy way for your bot to <a href="/bots/inline#switching-inline-pm-modes">switch between inline and PM modes</a>.</p> +<blockquote> +<p><a href="/bots/inline">Read more about the Inline Mode »</a></p> +</blockquote> +<h4><a class="anchor" name="payment-platform" href="#payment-platform"><i class="anchor-icon"></i></a>Payment platform</h4> +<!--<div class="dev_side_image"> + <a href="/file/811140227/2/ZTXUngAbELM.193805/ba6aa233d1d4206207" target="_blank"><img src="/file/811140095/1/lfTvDVqVS8M.43169/1a191248e6cf027581" title="Payments API. Click for hi-res picture"> +</a></div>--> + +<p>You can use bots to <strong>accept payments</strong> from Telegram users around the world.</p> +<ul> +<li>Send invoices to <strong>any chat</strong>, including to groups and channels.</li> +<li>Create invoices that can be <strong>forwarded</strong> and used by <strong>multiple buyers</strong> to order things.</li> +<li>Use <a href="/bots/inline">inline mode</a> to help users show your goods and services to their friends and communities.</li> +<li>Allow <strong>tips</strong> from users with preset and custom amounts.</li> +<li>Accept payments from users on mobile or <strong>desktop apps</strong>.</li> +<li>Try <a href="https://t.me/shopbot">@ShopBot</a> to create a test invoice – or start a message with <code>@ShopBot ...</code> in any chat for an <strong>inline invoice</strong>.</li> +<li>Check out <a href="https://telegram.org/teststore">Demo Shop</a> for an example of a <a href="https://telegram.org/tour/channels">Telegram Channel</a> used as <strong>virtual storefront</strong>.</li> +</ul> +<div class="blog_video_player_wrap" style="max-width: 400px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001377/1/0o3vSvY22g8.123356/deb4ed6951d780f7b7" style="max-width: 400px;" title="If your pizza place can't deliver a clone army, you're buying pizza from the wrong shop." alt="Video: Ordering a pizza through a Telegram channel"> + <source src="/file/464001705/2/Hg-klQnZ_n4.4889245.mp4/d324511ffdab7b4668" type="video/mp4"> + </video> +</div> + +<blockquote> +<p><a href="/bots/payments">Read more about the Payments Platform »</a></p> +</blockquote> +<h4><a class="anchor" name="gaming-platform" href="#gaming-platform"><i class="anchor-icon"></i></a>Gaming platform</h4> +<p>Bots can offer their users <strong>HTML5 games</strong> to play solo or to compete against each other in groups and one-on-one chats. The platform allows your bot to keep track of <strong>high scores</strong> for every game played in every chat. Whenever there’s a new leader in the game, other playing members in the chat are notified that they need to step it up. </p> +<div><center> + <a href="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" target="_blank"><img src="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" title="Game in a chat" style="width: 250px; padding: 10px 5px" /></a> + <a href="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" target="_blank"><img src="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" title="In-game scoreboard and sharing button" style="width: 250px; padding: 10px 5px" /></a> +</center> +</div> + +<p>Since the underlying technology is HTML5, the games can be anything from simple arcades and puzzles to multiplayer 3D-shooters and real-time strategy games. Our team has created a couple of simple demos for you to try out:</p> +<ul> +<li><a href="https://t.me/gamebot?game=MathBattle">Math Battle</a></li> +<li><a href="https://t.me/gamebot?game=Lumberjack">Lumberjack</a></li> +<li><a href="https://t.me/gamebot?game=Corsairs">Corsairs</a></li> +</ul> +<p>You can also check out the <a href="https://t.me/gamee"><strong>@gamee</strong></a> bot that has more than 20 games.</p> +<blockquote> +<p><a href="https://telegram.org/blog/games">Read more about the Gaming Platform »</a></p> +</blockquote> +<h4><a class="anchor" name="keyboards" href="#keyboards"><i class="anchor-icon"></i></a>Keyboards</h4> +<p>Traditional chat bots can of course be taught to understand human language. But sometimes you want some more formal input from the user — and this is where <strong>custom keyboards</strong> can become extremely useful.</p> +<p>Whenever your bot sends a message, it can pass along a special keyboard with predefined reply options (see <a href="/bots/api/#replykeyboardmarkup">ReplyKeyboardMarkup</a>). Telegram apps that receive the message will display your keyboard to the user. Tapping any of the buttons will immediately send the respective command. This way you can drastically simplify user interaction with your bot.</p> +<p>We currently support text and emoji for your buttons. Here are some custom keyboard examples:</p> +<center> +<div> + <a href="/file/811140184/1/5YJxx-rostA/ad3f74094485fb97bd" target="_blank"><img src="/file/811140184/1/5YJxx-rostA/ad3f74094485fb97bd" title="Keyboard for a poll bot" style="max-height: 300px; padding: 10px 5px" /></a> + + <a href="/file/811140880/1/jS-YSVkDCNQ/b397dfcefc6da0dc70" target="_blank"><img src="/file/811140880/1/jS-YSVkDCNQ/b397dfcefc6da0dc70" title="Keyboard for a calculator bot. Because you can." style="max-height: 300px; padding: 10px 5px" /></a> + + <a href="/file/811140733/2/KoysqJKQ_kI/a1ee46a377796c3961" target="_blank"><img src="/file/811140733/2/KoysqJKQ_kI/a1ee46a377796c3961" title="Keyboard for a trivia bot" style="max-height: 300px; padding: 10px 5px" /></a> + + +</div></center> + +<blockquote> +<p>For more technical information on custom keyboards, please consult the <a href="/bots/api">Bot API manual</a> (see <a href="/bots/api#sendmessage">sendMessage</a>).</p> +</blockquote> +<h4><a class="anchor" name="inline-keyboards-and-on-the-fly-updating" href="#inline-keyboards-and-on-the-fly-updating"><i class="anchor-icon"></i></a>Inline keyboards and on-the-fly updating</h4> +<p>There are times when you'd prefer to do things without sending any messages to the chat. For example, when your user is changing settings or flipping through search results. In such cases you can use Inline Keyboards that are integrated directly into the messages they belong to. </p> +<p>Unlike with custom reply keyboards, pressing buttons on inline keyboards doesn't result in messages sent to the chat. Instead, inline keyboards support buttons that work behind the scenes: <a href="/bots/2-0-intro#callback-buttons">callback buttons</a>, <a href="/bots/2-0-intro#url-buttons">URL buttons</a> and <a href="/bots/2-0-intro#switch-to-inline-buttons">switch to inline buttons</a>.</p> +<div><center> + <a href="/file/811140217/1/NkRCCLeQZVc/17a804837802700ea4" target="_blank"><img src="/file/811140217/1/NkRCCLeQZVc/17a804837802700ea4" title="Callback buttons in @music" style="width: 240px; padding: 10px 5px;" /></a> + <a href="/file/811140659/1/RRJyulbtLBY/ea6163411c7eb4f4dc" target="_blank"><img src="/file/811140659/1/RRJyulbtLBY/ea6163411c7eb4f4dc" title="More callback buttons in @music" style="width: 240px; padding: 10px 5px;" /></a> + <a href="/file/811140999/1/2JSoUVlWKa0/4fad2e2743dc8eda04" target="_blank"><img src="/file/811140999/1/2JSoUVlWKa0/4fad2e2743dc8eda04" title="A URL button" style="width:240px; padding:10px 5px"/></a> + + </center> + +</div> + +<p>When callback buttons are used, your bot can update its existing messages (or just their keyboards) so that the chat remains tidy. Check out these sample bots to see inline keyboards in action: <a href="https://t.me/music">@music</a>, <a href="https://t.me/vote">@vote</a>, <a href="https://t.me/like">@like</a>.</p> +<blockquote> +<p><a href="/bots/2-0-intro#new-inline-keyboards">Read more about inline keyboards and on-the-fly editing »</a></p> +</blockquote> +<h4><a class="anchor" name="commands" href="#commands"><i class="anchor-icon"></i></a>Commands</h4> +<p>Commands present a more flexible way to communicate with your bot. The following syntax may be used:</p> +<pre><code>/command</code></pre> +<p>A command must always start with the '/' symbol and may not be longer than 32 characters. Commands can use latin letters, numbers and underscores. Here are a few examples:</p> +<pre><code>/get_messages_stats +/set_timer 10min Alarm! +/get_timezone London, UK</code></pre> +<p>Messages that start with a slash are always passed to the bot (along with replies to its messages and messages that @mention the bot by username). Telegram apps will:</p> +<ul> +<li>Suggest a list of supported commands with descriptions when the user enters a '/' (for this to work, you need to have provided a list of commands to the <a href="#6-botfather">BotFather</a>). Tapping on a command in the list immediately sends the command.</li> +<li>Show an additional <strong>(/)</strong> button in the input field in all chats with bots. Tapping it types a '/' and shows the list of commands.</li> +<li>Highlight <strong>/commands</strong> in messages. When the user taps a highlighted command, the command is sent at once.</li> +</ul> +<center><div> + <a href="/file/811140845/2/rNUxpcGDeQU/05eaaf20b0dbaf9cb3" target="_blank"><img src="/file/811140845/2/rNUxpcGDeQU/05eaaf20b0dbaf9cb3" title="Suggested commands" style="width: 230px; padding: 10px 5px" /></a> + + <a href="/file/811140315/2/gf7_D2HbeyM/e3ca2de4de7918f826" target="_blank"><img src="/file/811140315/2/gf7_D2HbeyM/e3ca2de4de7918f826" title="Notice the new button in the input field, right next to the sticker button" style="width: 230px; padding: 10px 5px" /></a> + + + <a href="/file/811140029/1/s5zv4fbWdhw/a04aefa0ee0557f16a" target="_blank"><img src="/file/811140029/1/s5zv4fbWdhw/a04aefa0ee0557f16a" title="Suggested commands for multiple bots" style="width: 230px; padding: 10px 5px" /></a> + +</div></center> + + +<p>If multiple bots are in a group, it is possible to add bot usernames to commands in order to avoid confusion:</p> +<pre><code>/start@TriviaBot +/start@ApocalypseBot</code></pre> +<p>This is done automatically when commands are selected via the list of suggestions. Please remember that your bot needs to be able to process commands that are followed by its username.</p> +<h5><a class="anchor" name="global-commands" href="#global-commands"><i class="anchor-icon"></i></a>Global commands</h5> +<p>In order to make it easier for users to navigate the bot multiverse, we ask all developers to support a few basic commands. Telegram apps will have <strong>interface shortcuts</strong> for these commands.</p> +<ul> +<li><strong>/start</strong> - begins interaction with the user, e.g., by sending a greeting message. This command can also be used to pass additional parameters to the bot (see <a href="#deep-linking">Deep linking</a>)</li> +<li><strong>/help</strong> - returns a help message. It can be a short text about what your bot can do and a list of commands.</li> +<li><strong>/settings</strong> - (if applicable) returns the bot's settings for this user and suggests commands to edit these settings.</li> +</ul> +<p>Users will see a <strong>Start</strong> button when they first open a conversation with your bot. <strong>Help</strong> and <strong>Settings</strong> links will be available in the menu on the bot's profile page.</p> +<center><div> + <a href="/file/811140979/2/yD8AphHbahk/7662d14f4e0442ae3a" target="_blank"><img src="/file/811140979/2/yD8AphHbahk/7662d14f4e0442ae3a" title="An empty conversation with a bot" style="width: 250px; padding: 10px 5px" /></a> + + <a href="/file/811140479/2/1c2zUWhR7sA/98889b2a45f8e42a35" target="_blank"><img src="/file/811140479/2/1c2zUWhR7sA/98889b2a45f8e42a35" title="A bot's profile page, featuring 'Help' and 'Settings' buttons" style="width: 250px; padding: 10px 5px" /></a> + +</div></center> + +<h4><a class="anchor" name="formatting-bold-italic-fixed-width-text-and-inline-links" href="#formatting-bold-italic-fixed-width-text-and-inline-links"><i class="anchor-icon"></i></a>Formatting: bold, italic, fixed-width text and inline links</h4> +<p>You can use bold, italic or fixed-width text, as well as inline links in your bots' messages. Telegram clients will render them accordingly. </p> +<blockquote> +<p><a href="bots/api#formatting-options">Read more in the Bot API manual »</a></p> +</blockquote> +<h4><a class="anchor" name="privacy-mode" href="#privacy-mode"><i class="anchor-icon"></i></a>Privacy mode</h4> +<p>Bots are frequently added to groups in order to augment communication between human users, e.g. by providing news, notifications from external services or additional search functionality. This is especially true for work-related groups. Now, when you share a group with a bot, you tend to ask yourself “How can I be sure that the little rascal isn't selling my chat history to my competitors?” The answer is — <strong>privacy mode</strong>.</p> +<p>A bot running in privacy mode will not receive all messages that people send to the group. Instead, it will only receive:</p> +<ul> +<li>Messages that start with a slash '/' (see <a href="#commands">Commands</a> above)</li> +<li>Replies to the bot's own messages</li> +<li>Service messages (people added or removed from the group, etc.)</li> +<li>Messages from channels where it's a member</li> +</ul> +<p>On one hand, this helps some of us sleep better at night (in our tinfoil nightcaps), on the other — it allows the bot developer to save a lot of resources, since they won't need to process tens of thousands irrelevant messages each day.</p> +<p>Privacy mode is enabled by default for all bots, except bots that were added to the group as <strong>admins</strong> (bot admins always receive all messages). It can be disabled, so that the bot receives all messages like an ordinary user (the bot will need to be <strong>re-added</strong> to the group for this change to take effect). We only recommend doing this in cases where it is absolutely necessary for your bot to work — users can always see a bot's current privacy setting in the group members list. In most cases, using the <a href="/bots/api#forcereply">force reply</a> option for the bot's messages should be more than enough. </p> +<p><a href="/bots/faq#what-messages-will-my-bot-get">So what messages exactly will my bot get? »</a></p> +<h4><a class="anchor" name="deep-linking" href="#deep-linking"><i class="anchor-icon"></i></a>Deep linking</h4> +<p>Telegram bots have a <a href="https://en.wikipedia.org/wiki/Deep_linking">deep linking</a> mechanism, that allows for passing additional parameters to the bot on startup. It could be a command that launches the bot — or an authentication token to connect the user's Telegram account to their account on some external service.</p> +<p>Each bot has a link that opens a conversation with it in Telegram — <code>https://t.me/<bot username></code>. You can add the parameters <strong>start</strong> or <strong>startgroup</strong> to this link, with values up to 64 characters long. For example:</p> +<pre><code>https://t.me/triviabot?startgroup=test</code></pre> +<p><code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>_</code> and <code>-</code> are allowed. We recommend using <a href="https://en.wikipedia.org/wiki/Base64#The_URL_applications">base64url</a> to encode parameters with binary and other types of content.</p> +<p>Following a link with the <strong>start</strong> parameter will open a one-on-one conversation with the bot, showing a START button in the place of the input field. If the <strong>startgroup</strong> parameter is used, the user is prompted to select a group to add the bot to. As soon as a user confirms the action (presses the START button in their app or selects a group to add the bot to), your bot will receive a message from that user in this format:</p> +<pre><code>/start PAYLOAD</code></pre> +<p><code>PAYLOAD</code> stands for the value of the <strong>start</strong> or <strong>startgroup</strong> parameter that was passed in the link.</p> +<h5><a class="anchor" name="deep-linking-example" href="#deep-linking-example"><i class="anchor-icon"></i></a>Deep linking Example</h5> +<p>Suppose the website example.com would like to send notifications to its users via a Telegram bot. Here's what they could do to enable notifications for a user with the ID <code>123</code>.</p> +<ol> +<li><a href="#6-botfather">Create a bot</a> with a suitable username, e.g. @ExampleComBot</li> +<li>Set up a <a href="/bots/api#setwebhook">webhook</a> for incoming messages</li> +<li>Generate a random string of a sufficient length, e.g. <code>$memcache_key = "vCH1vGWJxfSeofSAs0K5PA"</code></li> +<li>Put the value <code>123</code> with the key <code>$memcache_key</code> into Memcache for 3600 seconds (one hour) </li> +<li>Show our user the button <code>https://t.me/ExampleComBot?start=vCH1vGWJxfSeofSAs0K5PA</code></li> +<li>Configure the webhook processor to query Memcached with the parameter that is passed in incoming messages beginning with <code>/start</code>. If the key exists, record the chat_id passed to the webhook as <strong>telegram_chat_id</strong> for the user <code>123</code>. Remove the key from Memcache.</li> +<li>Now when we want to send a notification to the user <code>123</code>, check if they have the field <strong>telegram_chat_id</strong>. If yes, use the <a href="/bots/api#sendmessage">sendMessage</a> method in the <a href="/bots/api">Bot API</a> to send them a message in Telegram.</li> +</ol> +<h4><a class="anchor" name="location-and-number" href="#location-and-number"><i class="anchor-icon"></i></a>Location and Number</h4> +<p>Some bots need extra data from the user to work properly. For example, knowing the user's location helps provide more relevant geo-specific results. The user's phone number can be very useful for integrations with other services, like banks, etc.</p> +<p>Bots can ask a user for their <strong>location</strong> and <strong>phone number</strong> using special buttons. Note that both phone number and location request buttons will only work in private chats.</p> +<div><center> +<a href="/file/811140587/2/jaowDLZg2l0/5ba3f7d7fd5c6c28dc" target="_blank"><img src="/file/811140587/2/jaowDLZg2l0/5ba3f7d7fd5c6c28dc" title="Phone number and location sharing buttons" style="width: 295px; padding: 10px 20px;" /></a></center> + +</div> + +<p>When these buttons are pressed, Telegram clients will display a confirmation alert that tells the user what's about to happen.</p> +<blockquote> +<p><a href="/bots/api#keyboardbutton">Manual: Number and location buttons »</a></p> +</blockquote> +<hr> +<h3><a class="anchor" name="6-botfather" href="#6-botfather"><i class="anchor-icon"></i></a>6. BotFather</h3> +<blockquote> +<p>Jump to top to learn everything about <a href="#">Telegram bots »</a></p> +</blockquote> +<p><a href="https://t.me/botfather">BotFather</a> is the one bot to rule them all. It will help you create new bots and change settings for existing ones.</p> +<h4><a class="anchor" name="creating-a-new-bot" href="#creating-a-new-bot"><i class="anchor-icon"></i></a>Creating a new bot</h4> +<p>Use the <strong>/newbot</strong> command to create a new bot. The BotFather will ask you for a name and username, then generate an authentication token for your new bot. </p> +<p>The <strong>name</strong> of your bot is displayed in contact details and elsewhere.</p> +<p>The <strong>Username</strong> is a short name, to be used in mentions and t.me links. Usernames are 5-32 characters long and are case insensitive, but may only include Latin characters, numbers, and underscores. Your bot's username <strong>must</strong> end in 'bot', e.g. 'tetris_bot' or 'TetrisBot'.</p> +<p>The <strong>token</strong> is a string along the lines of <code>110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw</code> that is required to authorize the bot and send requests to the <a href="/bots/api">Bot API</a>. Keep your token secure and store it safely, it can be used by anyone to control your bot.</p> +<h4><a class="anchor" name="generating-an-authentication-token" href="#generating-an-authentication-token"><i class="anchor-icon"></i></a>Generating an authentication token</h4> +<p>If your existing token is compromised or you lost it for some reason, use the <strong>/token</strong> command to generate a new one.</p> +<h4><a class="anchor" name="botfather-commands" href="#botfather-commands"><i class="anchor-icon"></i></a>Botfather commands</h4> +<p>The remaining commands are pretty self-explanatory:</p> +<ul> +<li><strong>/mybots</strong> — returns a list of your bots with handy controls to edit their settings</li> +<li><strong>/mygames</strong> — does the same for your games</li> +</ul> +<p><strong>Edit bots</strong></p> +<ul> +<li><strong>/setname</strong> – change your bot's name.</li> +<li><strong>/setdescription</strong> — change the bot's <strong>description</strong>, a short text of up to 512 characters, describing your bot. Users will see this text at the beginning of the conversation with the bot, titled 'What can this bot do?'.</li> +<li><strong>/setabouttext</strong> — change the bot's <strong>about info</strong>, an even shorter text of up to 120 characters. Users will see this text on the bot's profile page. When they share your bot with someone, this text is sent together with the link.</li> +<li><strong>/setuserpic</strong> — change the bot's profile pictures. It's always nice to put a face to a name.</li> +<li><strong>/setcommands</strong> — change the list of commands supported by your bot. Users will see these commands as suggestions when they type <code>/</code> in the chat with your bot. Each command has a name (must start with a slash ‘/’, alphanumeric plus underscores, no more than 32 characters, case-insensitive), parameters, and a text description. Users will see the list of commands whenever they type '/' in a conversation with your bot.</li> +<li><strong>/deletebot</strong> — delete your bot and free its username.</li> +</ul> +<p><strong>Edit settings</strong></p> +<ul> +<li><strong>/setinline</strong> — toggle <a href="/bots/inline">inline mode</a> for your bot.</li> +<li><strong>/setinlinegeo</strong> - request location data to provide <a href="/bots/inline#location-based-results">location-based inline results</a>.</li> +<li><strong>/setjoingroups</strong> — toggle whether your bot can be added to groups or not. Any bot must be able to process private messages, but if your bot was not designed to work in groups, you can disable this.</li> +<li><strong>/setprivacy</strong> — set which messages your bot will receive when added to a group. With privacy mode disabled, the bot will receive all messages. We recommend leaving <a href="#privacy-mode">privacy mode</a> enabled. You will need to re-add the bot to existing groups for this change to take effect.</li> +</ul> +<p><strong>Manage games</strong></p> +<ul> +<li><strong>/newgame</strong> — create a new <a href="/bots/games">game</a>.</li> +<li><strong>/listgames</strong> — get a list of your games.</li> +<li><strong>/editgame</strong> — edit a game.</li> +<li><strong>/deletegame</strong> — delete an existing game.</li> +</ul> +<blockquote> +<p>Please note, that it may take <strong>a few minutes</strong> for changes to take effect.</p> +</blockquote> +<h4><a class="anchor" name="status-alerts" href="#status-alerts"><i class="anchor-icon"></i></a>Status alerts</h4> +<p>Millions choose Telegram for its speed. To stay competitive in this environment, your bot also needs to be responsive. In order to help developers keep their bots in shape, Botfather will send status alerts if it sees something is wrong.</p> +<p>We will be checking the number of replies and the request/response conversion rate for popular bots (~300 requests per minute: but don't write this down as the value may change in the future). If we get abnormally low readings, you will receive a notification from Botfather.</p> +<h5><a class="anchor" name="responding-to-alerts" href="#responding-to-alerts"><i class="anchor-icon"></i></a>Responding to alerts</h5> +<p>By default, you will only get one alert per bot per hour. Each alert has the following buttons:</p> +<ul> +<li><strong>Fixed.</strong> Use this if you found an issue with your bot and fixed it. If you press the fix button, we will resume sending alerts in the regular way so that you can see if your fix worked within 5-10 minutes instead of having to wait for an hour.</li> +<li><strong>Support.</strong> Use this to open a chat with <a href="https://t.me/botsupport">@BotSupport</a> if you don't see any issues with your bot or if you think the problem is on our side.</li> +<li><strong>Mute for 8h/1w.</strong> Use this if you can't fix your bot at the moment. This will disable all alerts for the bot in question for the specified period of time. We do not recommend using this option since your users may migrate to a more stable bot. You can unmute alerts in your bot's settings via Botfather.</li> +</ul> +<h5><a class="anchor" name="monitored-issues" href="#monitored-issues"><i class="anchor-icon"></i></a>Monitored issues</h5> +<p>We will currently notify you about the following issues:</p> +<p><strong>1.</strong></p> +<pre><code>Too few **private messages** are sent compared to previous weeks: **{value}**</code></pre> +<p>Your bot is sending much fewer messages than it did in the previous weeks. This is useful for newsletter-style bots that send out messages without prompts from the users. The larger the value, the more significant the difference. </p> +<p><strong>2.</strong></p> +<pre><code>Too few replies to incoming **private messages**. Conversion rate: **{value}**</code></pre> +<p>Your bot is not replying to all messages that are being sent to it (the request/response conversion rate for your bot was too low for at least two of the last three 5-minute periods). To provide a good user experience, please respond to all messages that are sent to your bot. Respond to <em>message</em> <a href="https://core.telegram.org/bots/api#update">updates</a> by calling <em>send…</em> methods (e.g. <a href="https://core.telegram.org/bots/api#sendmessage">sendMessage</a>).</p> +<p><strong>3.</strong></p> +<pre><code>Too few answers to **inline queries**. Conversion rate: **{value}**</code></pre> +<p>Your bot is not replying to all inline queries that are being sent to it, calculated in the same way as above. Respond to <em>inline_query</em> <a href="https://core.telegram.org/bots/api#update">updates</a> by calling <a href="/bots/api#answerinlinequery">answerInlineQuery</a>.</p> +<p><strong>4.</strong></p> +<pre><code>Too few answers to **callback queries**. Conversion rate: **{value}** +Too few answers to **callback game queries**. Conversion rate: **{value}**</code></pre> +<p>Your bot is not replying to all callback queries that are being sent to it (with or without games), calculated in the same way as above. Respond to <em>callback_query</em> <a href="https://core.telegram.org/bots/api#update">updates</a> by calling <a href="/bots/api#answercallbackquery">answerCallbackQuery</a>.</p> +<blockquote> +<p>Please note that the status alerts feature is still being tested and will be improved in the future.</p> +</blockquote> +<hr> +<p>That's it for the introduction. You are now definitely ready to proceed to the <a href="/bots/api"><strong>BOT API MANUAL</strong></a>.</p> +<p>If you've got any questions, please check out our <a href="/bots/faq"><strong>Bot FAQ »</strong></a></p> +</div> + +</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/bots/api.html b/data/core.telegram.org/bots/api.html new file mode 100644 index 0000000000..b80cdfcfc8 --- /dev/null +++ b/data/core.telegram.org/bots/api.html @@ -0,0 +1,9488 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Bot API</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="Telegram Bot API"> + <meta property="og:image" content="30f729d4f304e41659"> + <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?215" 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="/bots" >Telegram Bots</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/bots/api" >Telegram Bot API</a></li></ul></div> + <h1 id="dev_page_title">Telegram Bot API</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> and <a href="/bots/faq"><strong>Bot FAQ</strong></a>.</p> +</blockquote> +<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> +<h4><a class="anchor" name="january-31-2022" href="#january-31-2022"><i class="anchor-icon"></i></a>January 31, 2022</h4> +<p><strong>Bot API 5.7</strong></p> +<ul> +<li>Added support for <a href="https://telegram.org/blog/video-stickers-better-reactions">Video Stickers</a>.</li> +<li>Added the field <em>is_video</em> to the classes <a href="#sticker">Sticker</a> and <a href="#stickerset">StickerSet</a>.</li> +<li>Added the parameter <em>webm_sticker</em> to the methods <a href="#createnewstickerset">createNewStickerSet</a> and <a href="#addstickertoset">addStickerToSet</a>.</li> +</ul> +<h4><a class="anchor" name="december-30-2021" href="#december-30-2021"><i class="anchor-icon"></i></a>December 30, 2021</h4> +<p><strong>Bot API 5.6</strong></p> +<ul> +<li>Improved support for <a href="https://telegram.org/blog/protected-content-delete-by-date-and-more#protected-content-in-groups-and-channels">Protected Content</a>.</li> +<li>Added the parameter <em>protect_content</em> to the methods <a href="#sendmessage">sendMessage</a>, <a href="#sendphoto">sendPhoto</a>, <a href="#sendvideo">sendVideo</a>, <a href="#sendanimation">sendAnimation</a>, <a href="#sendaudio">sendAudio</a>, <a href="#senddocument">sendDocument</a>, <a href="#sendsticker">sendSticker</a>, <a href="#sendvideonote">sendVideoNote</a>, <a href="#sendvoice">sendVoice</a>, <a href="#sendlocation">sendLocation</a>, <a href="#sendvenue">sendVenue</a>, <a href="#sendcontact">sendContact</a>, <a href="#sendpoll">sendPoll</a>, <a href="#senddice">sendDice</a>, <a href="#sendinvoice">sendInvoice</a>, <a href="#sendgame">sendGame</a>, <a href="#sendmediagroup">sendMediaGroup</a>, <a href="#copymessage">copyMessage</a>, <a href="#forwardmessage">forwardMessage</a> to allow sending messages with protected content to any chat.</li> +<li>Added support for <a href="https://telegram.org/blog/reactions-spoilers-translations#spoilers">spoiler entities</a>, which will work in Telegram versions released after December 30, 2021. Older clients will display <em>unsupported message</em>.</li> +<li>Added new <a href="#messageentity">MessageEntity</a> type “spoiler”.</li> +<li>Added the ability to specify spoiler entities using <a href="#html-style">HTML</a> and <a href="#markdownv2-style">MarkdownV2</a> formatting options.</li> +</ul> +<h4><a class="anchor" name="december-7-2021" href="#december-7-2021"><i class="anchor-icon"></i></a>December 7, 2021</h4> +<p><strong>Bot API 5.5</strong></p> +<ul> +<li>Bots are now allowed to contact users who sent a join request to a chat where the bot is an administrator with the <em>can_invite_users</em> administrator right – even if the user never interacted with the bot before.</li> +<li>Added support for mentioning users by their ID in inline keyboards. This will only work in Telegram versions released after December 7, 2021. Older clients will display <em>unsupported message</em>.</li> +<li>Added the methods <a href="#banchatsenderchat">banChatSenderChat</a> and <a href="#unbanchatsenderchat">unbanChatSenderChat</a> for banning and unbanning channel chats in supergroups and channels.</li> +<li>Added the field <em>has_private_forwards</em> to the class <a href="#chat">Chat</a> for private chats, which can be used to check the possibility of mentioning the user by their ID.</li> +<li>Added the field <em>has_protected_content</em> to the classes <a href="#chat">Chat</a> and <a href="#message">Message</a>.</li> +<li>Added the field <em>is_automatic_forward</em> to the class <a href="#message">Message</a>.</li> +</ul> +<p><strong>Note:</strong> After this update it will become impossible to forward messages from some chats. Use the fields <em>has_protected_content</em> in the classes <a href="#message">Message</a> and <a href="#chat">Chat</a> to check this.</p> +<p><strong>Note:</strong> After this update users are able to send messages on behalf of channels they own. Bots are expected to use the field <em>sender_chat</em> in the class <a href="#message">Message</a> to correctly support such messages.</p> +<p><strong>Note:</strong> As previously announced, user identifiers can now have up to 52 significant bits and require a 64-bit integer or double-precision float type to be stored safely.</p> +<h4><a class="anchor" name="november-5-2021" href="#november-5-2021"><i class="anchor-icon"></i></a>November 5, 2021</h4> +<p><strong>Bot API 5.4</strong></p> +<ul> +<li>Added the the parameter <code>creates_join_request</code> to the methods <a href="#createchatinvitelink">createChatInviteLink</a> and <a href="#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="#chatinvitelink">ChatInviteLink</a>.</li> +<li>Added the field <code>name</code> to the class <a href="#chatinvitelink">ChatInviteLink</a> and the parameters <code>name</code> to the methods <a href="#createchatinvitelink">createChatInviteLink</a> and <a href="#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="#chatjoinrequest">ChatJoinRequest</a> and the field <em>chat_join_request</em> in the <a href="#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="#approvechatjoinrequest">approveChatJoinRequest</a> and <a href="#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="#sendchataction">sendChatAction</a>.</li> +</ul> +<p><strong><a href="/bots/api-changelog">See earlier changes »</a></strong></p> +<h3><a class="anchor" name="authorizing-your-bot" href="#authorizing-your-bot"><i class="anchor-icon"></i></a>Authorizing your bot</h3> +<p>Each bot is given a unique authentication token <a href="/bots#6-botfather">when it is created</a>. The token looks something like <code>123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11</code>, but we'll use simply <strong><token></strong> in this document instead. You can learn about obtaining tokens and generating new ones in <a href="https://core.telegram.org/bots#6-botfather">this document</a>.</p> +<h3><a class="anchor" name="making-requests" href="#making-requests"><i class="anchor-icon"></i></a>Making requests</h3> +<p>All queries to the Telegram Bot API must be served over HTTPS and need to be presented in this form: <code>https://api.telegram.org/bot<token>/METHOD_NAME</code>. Like this for example:</p> +<pre><code>https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe</code></pre> +<p>We support <strong>GET</strong> and <strong>POST</strong> HTTP methods. We support four ways of passing parameters in Bot API requests:</p> +<ul> +<li><a href="https://en.wikipedia.org/wiki/Query_string">URL query string</a></li> +<li>application/x-www-form-urlencoded</li> +<li>application/json (except for uploading files)</li> +<li>multipart/form-data (use to upload files)</li> +</ul> +<p>The response contains a JSON object, which always has a Boolean field 'ok' and may have an optional String field 'description' with a human-readable description of the result. If 'ok' equals <em>True</em>, the request was successful and the result of the query can be found in the 'result' field. In case of an unsuccessful request, 'ok' equals false and the error is explained in the 'description'. An Integer 'error_code' field is also returned, but its contents are subject to change in the future. Some errors may also have an optional field 'parameters' of the type <a href="#responseparameters">ResponseParameters</a>, which can help to automatically handle the error.</p> +<ul> +<li>All methods in the Bot API are case-insensitive.</li> +<li>All queries must be made using UTF-8.</li> +</ul> +<h4><a class="anchor" name="making-requests-when-getting-updates" href="#making-requests-when-getting-updates"><i class="anchor-icon"></i></a>Making requests when getting updates</h4> +<p>If you're using <a href="#getting-updates"><strong>webhooks</strong></a>, you can perform a request to the Bot API while sending an answer to the webhook. Use either <em>application/json</em> or <em>application/x-www-form-urlencoded</em> or <em>multipart/form-data</em> response content type for passing parameters. Specify the method to be invoked in the <em>method</em> parameter of the request. It's not possible to know that such a request was successful or get its result.</p> +<blockquote> +<p>Please see our <a href="/bots/faq#how-can-i-make-requests-in-response-to-updates">FAQ</a> for examples.</p> +</blockquote> +<h3><a class="anchor" name="using-a-local-bot-api-server" href="#using-a-local-bot-api-server"><i class="anchor-icon"></i></a>Using a Local Bot API Server</h3> +<p>The Bot API server source code is available at <a href="https://github.com/tdlib/telegram-bot-api">telegram-bot-api</a>. You can run it locally and send the requests to your own server instead of <code>https://api.telegram.org</code>. If you switch to a local Bot API server, your bot will be able to:</p> +<ul> +<li>Download files without a size limit.</li> +<li>Upload files up to 2000 MB.</li> +<li>Upload files using their local path and <a href="https://en.wikipedia.org/wiki/File_URI_scheme">the file URI scheme</a>.</li> +<li>Use an HTTP URL for the webhook.</li> +<li>Use any local IP address for the webhook.</li> +<li>Use any port for the webhook.</li> +<li>Set <em>max_webhook_connections</em> up to 100000.</li> +<li>Receive the absolute local path as a value of the <em>file_path</em> field without the need to download the file after a <a href="#getfile">getFile</a> request.</li> +</ul> +<h4><a class="anchor" name="do-i-need-a-local-bot-api-server" href="#do-i-need-a-local-bot-api-server"><i class="anchor-icon"></i></a>Do I need a Local Bot API Server</h4> +<p>The majority of bots will be OK with the default configuration, running on our servers. But if you feel that you need one of <a href="#using-a-local-bot-api-server">these features</a>, you're welcome to switch to your own at any time.</p> +<h3><a class="anchor" name="getting-updates" href="#getting-updates"><i class="anchor-icon"></i></a>Getting updates</h3> +<p>There are two mutually exclusive ways of receiving updates for your bot — the <a href="#getupdates">getUpdates</a> method on one hand and <a href="#setwebhook">Webhooks</a> on the other. Incoming updates are stored on the server until the bot receives them either way, but they will not be kept longer than 24 hours.</p> +<p>Regardless of which option you choose, you will receive JSON-serialized <a href="#update">Update</a> objects as a result.</p> +<h4><a class="anchor" name="update" href="#update"><i class="anchor-icon"></i></a>Update</h4> +<p>This <a href="#available-types">object</a> represents an incoming update.<br>At most <strong>one</strong> of the optional parameters can be present in any given update.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>update_id</td> +<td>Integer</td> +<td>The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you're using <a href="#setwebhook">Webhooks</a>, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.</td> +</tr> +<tr> +<td>message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. New incoming message of any kind — text, photo, sticker, etc.</td> +</tr> +<tr> +<td>edited_message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. New version of a message that is known to the bot and was edited</td> +</tr> +<tr> +<td>channel_post</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. New incoming channel post of any kind — text, photo, sticker, etc.</td> +</tr> +<tr> +<td>edited_channel_post</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. New version of a channel post that is known to the bot and was edited</td> +</tr> +<tr> +<td>inline_query</td> +<td><a href="#inlinequery">InlineQuery</a></td> +<td><em>Optional</em>. New incoming <a href="#inline-mode">inline</a> query</td> +</tr> +<tr> +<td>chosen_inline_result</td> +<td><a href="#choseninlineresult">ChosenInlineResult</a></td> +<td><em>Optional</em>. The result of an <a href="#inline-mode">inline</a> query that was chosen by a user and sent to their chat partner. Please see our documentation on the <a href="/bots/inline#collecting-feedback">feedback collecting</a> for details on how to enable these updates for your bot.</td> +</tr> +<tr> +<td>callback_query</td> +<td><a href="#callbackquery">CallbackQuery</a></td> +<td><em>Optional</em>. New incoming callback query</td> +</tr> +<tr> +<td>shipping_query</td> +<td><a href="#shippingquery">ShippingQuery</a></td> +<td><em>Optional</em>. New incoming shipping query. Only for invoices with flexible price</td> +</tr> +<tr> +<td>pre_checkout_query</td> +<td><a href="#precheckoutquery">PreCheckoutQuery</a></td> +<td><em>Optional</em>. New incoming pre-checkout query. Contains full information about checkout</td> +</tr> +<tr> +<td>poll</td> +<td><a href="#poll">Poll</a></td> +<td><em>Optional</em>. New poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot</td> +</tr> +<tr> +<td>poll_answer</td> +<td><a href="#pollanswer">PollAnswer</a></td> +<td><em>Optional</em>. A user changed their answer in a non-anonymous poll. Bots receive new votes only in polls that were sent by the bot itself.</td> +</tr> +<tr> +<td>my_chat_member</td> +<td><a href="#chatmemberupdated">ChatMemberUpdated</a></td> +<td><em>Optional</em>. The bot's chat member status was updated in a chat. For private chats, this update is received only when the bot is blocked or unblocked by the user.</td> +</tr> +<tr> +<td>chat_member</td> +<td><a href="#chatmemberupdated">ChatMemberUpdated</a></td> +<td><em>Optional</em>. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify “chat_member” in the list of <em>allowed_updates</em> to receive these updates.</td> +</tr> +<tr> +<td>chat_join_request</td> +<td><a href="#chatjoinrequest">ChatJoinRequest</a></td> +<td><em>Optional</em>. A request to join the chat has been sent. The bot must have the <em>can_invite_users</em> administrator right in the chat to receive these updates.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getupdates" href="#getupdates"><i class="anchor-icon"></i></a>getUpdates</h4> +<p>Use this method to receive incoming updates using long polling (<a href="https://en.wikipedia.org/wiki/Push_technology#Long_polling">wiki</a>). An Array of <a href="#update">Update</a> objects is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>offset</td> +<td>Integer</td> +<td>Optional</td> +<td>Identifier of the first update to be returned. Must be greater by one than the highest among the identifiers of previously received updates. By default, updates starting with the earliest unconfirmed update are returned. An update is considered confirmed as soon as <a href="#getupdates">getUpdates</a> is called with an <em>offset</em> higher than its <em>update_id</em>. The negative offset can be specified to retrieve updates starting from <em>-offset</em> update from the end of the updates queue. All previous updates will forgotten.</td> +</tr> +<tr> +<td>limit</td> +<td>Integer</td> +<td>Optional</td> +<td>Limits the number of updates to be retrieved. Values between 1-100 are accepted. Defaults to 100.</td> +</tr> +<tr> +<td>timeout</td> +<td>Integer</td> +<td>Optional</td> +<td>Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. Should be positive, short polling should be used for testing purposes only.</td> +</tr> +<tr> +<td>allowed_updates</td> +<td>Array of String</td> +<td>Optional</td> +<td>A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See <a href="#update">Update</a> for a complete list of available update types. Specify an empty list to receive all update types except <em>chat_member</em> (default). If not specified, the previous setting will be used.<br><br>Please note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.</td> +</tr> +</tbody> +</table> +<blockquote> +<p><strong>Notes</strong><br><strong>1.</strong> This method will not work if an outgoing webhook is set up.<br><strong>2.</strong> In order to avoid getting duplicate updates, recalculate <em>offset</em> after each server response.</p> +</blockquote> +<h4><a class="anchor" name="setwebhook" href="#setwebhook"><i class="anchor-icon"></i></a>setWebhook</h4> +<p>Use this method to specify a url and receive incoming updates via an outgoing webhook. Whenever there is an update for the bot, we will send an HTTPS POST request to the specified url, containing a JSON-serialized <a href="#update">Update</a>. In case of an unsuccessful request, we will give up after a reasonable amount of attempts. Returns <em>True</em> on success.</p> +<p>If you'd like to make sure that the Webhook request comes from Telegram, we recommend using a secret path in the URL, e.g. <code>https://www.example.com/<token></code>. Since nobody else knows your bot's token, you can be pretty sure it's us.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>url</td> +<td>String</td> +<td>Yes</td> +<td>HTTPS url to send updates to. Use an empty string to remove webhook integration</td> +</tr> +<tr> +<td>certificate</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Optional</td> +<td>Upload your public key certificate so that the root certificate in use can be checked. See our <a href="/bots/self-signed">self-signed guide</a> for details.</td> +</tr> +<tr> +<td>ip_address</td> +<td>String</td> +<td>Optional</td> +<td>The fixed IP address which will be used to send webhook requests instead of the IP address resolved through DNS</td> +</tr> +<tr> +<td>max_connections</td> +<td>Integer</td> +<td>Optional</td> +<td>Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100. Defaults to <em>40</em>. Use lower values to limit the load on your bot's server, and higher values to increase your bot's throughput.</td> +</tr> +<tr> +<td>allowed_updates</td> +<td>Array of String</td> +<td>Optional</td> +<td>A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See <a href="#update">Update</a> for a complete list of available update types. Specify an empty list to receive all update types except <em>chat_member</em> (default). If not specified, the previous setting will be used.<br>Please note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.</td> +</tr> +<tr> +<td>drop_pending_updates</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em> to drop all pending updates</td> +</tr> +</tbody> +</table> +<blockquote> +<p><strong>Notes</strong><br><strong>1.</strong> You will not be able to receive updates using <a href="#getupdates">getUpdates</a> for as long as an outgoing webhook is set up.<br><strong>2.</strong> To use a self-signed certificate, you need to upload your <a href="/bots/self-signed">public key certificate</a> using <em>certificate</em> parameter. Please upload as InputFile, sending a String will not work.<br><strong>3.</strong> Ports currently supported <em>for Webhooks</em>: <strong>443, 80, 88, 8443</strong>.</p> +<p><strong>NEW!</strong> If you're having any trouble setting up webhooks, please check out this <a href="/bots/webhooks">amazing guide to Webhooks</a>.</p> +</blockquote> +<h4><a class="anchor" name="deletewebhook" href="#deletewebhook"><i class="anchor-icon"></i></a>deleteWebhook</h4> +<p>Use this method to remove webhook integration if you decide to switch back to <a href="#getupdates">getUpdates</a>. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>drop_pending_updates</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em> to drop all pending updates</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getwebhookinfo" href="#getwebhookinfo"><i class="anchor-icon"></i></a>getWebhookInfo</h4> +<p>Use this method to get current webhook status. Requires no parameters. On success, returns a <a href="#webhookinfo">WebhookInfo</a> object. If the bot is using <a href="#getupdates">getUpdates</a>, will return an object with the <em>url</em> field empty.</p> +<h4><a class="anchor" name="webhookinfo" href="#webhookinfo"><i class="anchor-icon"></i></a>WebhookInfo</h4> +<p>Contains information about the current status of a webhook.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>url</td> +<td>String</td> +<td>Webhook URL, may be empty if webhook is not set up</td> +</tr> +<tr> +<td>has_custom_certificate</td> +<td>Boolean</td> +<td><em>True</em>, if a custom certificate was provided for webhook certificate checks</td> +</tr> +<tr> +<td>pending_update_count</td> +<td>Integer</td> +<td>Number of updates awaiting delivery</td> +</tr> +<tr> +<td>ip_address</td> +<td>String</td> +<td><em>Optional</em>. Currently used webhook IP address</td> +</tr> +<tr> +<td>last_error_date</td> +<td>Integer</td> +<td><em>Optional</em>. Unix time for the most recent error that happened when trying to deliver an update via webhook</td> +</tr> +<tr> +<td>last_error_message</td> +<td>String</td> +<td><em>Optional</em>. Error message in human-readable format for the most recent error that happened when trying to deliver an update via webhook</td> +</tr> +<tr> +<td>max_connections</td> +<td>Integer</td> +<td><em>Optional</em>. Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery</td> +</tr> +<tr> +<td>allowed_updates</td> +<td>Array of String</td> +<td><em>Optional</em>. A list of update types the bot is subscribed to. Defaults to all update types except <em>chat_member</em></td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="available-types" href="#available-types"><i class="anchor-icon"></i></a>Available types</h3> +<p>All types used in the Bot API responses are represented as JSON-objects.</p> +<p>It is safe to use 32-bit signed integers for storing all <strong>Integer</strong> fields unless otherwise noted.</p> +<blockquote> +<p><strong>Optional</strong> fields may be not returned when irrelevant.</p> +</blockquote> +<h4><a class="anchor" name="user" href="#user"><i class="anchor-icon"></i></a>User</h4> +<p>This object represents a Telegram user or bot.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>Integer</td> +<td>Unique identifier for this user or bot. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>is_bot</td> +<td>Boolean</td> +<td><em>True</em>, if this user is a bot</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>User's or bot's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. User's or bot's last name</td> +</tr> +<tr> +<td>username</td> +<td>String</td> +<td><em>Optional</em>. User's or bot's username</td> +</tr> +<tr> +<td>language_code</td> +<td>String</td> +<td><em>Optional</em>. <a href="https://en.wikipedia.org/wiki/IETF_language_tag">IETF language tag</a> of the user's language</td> +</tr> +<tr> +<td>can_join_groups</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the bot can be invited to groups. Returned only in <a href="#getme">getMe</a>.</td> +</tr> +<tr> +<td>can_read_all_group_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if <a href="https://core.telegram.org/bots#privacy-mode">privacy mode</a> is disabled for the bot. Returned only in <a href="#getme">getMe</a>.</td> +</tr> +<tr> +<td>supports_inline_queries</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the bot supports inline queries. Returned only in <a href="#getme">getMe</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chat" href="#chat"><i class="anchor-icon"></i></a>Chat</h4> +<p>This object represents a chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>Integer</td> +<td>Unique identifier for this chat. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Type of chat, can be either “private”, “group”, “supergroup” or “channel”</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title, for supergroups, channels and group chats</td> +</tr> +<tr> +<td>username</td> +<td>String</td> +<td><em>Optional</em>. Username, for private chats, supergroups and channels if available</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td><em>Optional</em>. First name of the other party in a private chat</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. Last name of the other party in a private chat</td> +</tr> +<tr> +<td>photo</td> +<td><a href="#chatphoto">ChatPhoto</a></td> +<td><em>Optional</em>. Chat photo. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>bio</td> +<td>String</td> +<td><em>Optional</em>. Bio of the other party in a private chat. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>has_private_forwards</td> +<td>True</td> +<td><em>Optional</em>. True, if privacy settings of the other party in the private chat allows to use <code>tg://user?id=<user_id></code> links only in chats with the user. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Description, for groups, supergroups and channel chats. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>invite_link</td> +<td>String</td> +<td><em>Optional</em>. Primary invite link, for groups, supergroups and channel chats. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>pinned_message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. The most recent pinned message (by sending date). Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>permissions</td> +<td><a href="#chatpermissions">ChatPermissions</a></td> +<td><em>Optional</em>. Default chat member permissions, for groups and supergroups. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>slow_mode_delay</td> +<td>Integer</td> +<td><em>Optional</em>. For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user; in seconds. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>message_auto_delete_time</td> +<td>Integer</td> +<td><em>Optional</em>. The time after which all messages sent to the chat will be automatically deleted; in seconds. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>has_protected_content</td> +<td>True</td> +<td><em>Optional</em>. True, if messages from the chat can't be forwarded to other chats. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>sticker_set_name</td> +<td>String</td> +<td><em>Optional</em>. For supergroups, name of group sticker set. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>can_set_sticker_set</td> +<td>True</td> +<td><em>Optional</em>. <em>True</em>, if the bot can change the group sticker set. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>linked_chat_id</td> +<td>Integer</td> +<td><em>Optional</em>. Unique identifier for the linked chat, i.e. the discussion group identifier for a channel and vice versa; for supergroups and channel chats. This identifier may be greater than 32 bits and some programming languages may have difficulty/silent defects in interpreting it. But it is smaller than 52 bits, so a signed 64 bit integer or double-precision float type are safe for storing this identifier. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>location</td> +<td><a href="#chatlocation">ChatLocation</a></td> +<td><em>Optional</em>. For supergroups, the location to which the supergroup is connected. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="message" href="#message"><i class="anchor-icon"></i></a>Message</h4> +<p>This object represents a message.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Unique message identifier inside this chat</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. Sender of the message; empty for messages sent to channels. For backward compatibility, the field contains a fake sender user in non-channel chats, if the message was sent on behalf of a chat.</td> +</tr> +<tr> +<td>sender_chat</td> +<td><a href="#chat">Chat</a></td> +<td><em>Optional</em>. Sender of the message, sent on behalf of a chat. For example, the channel itself for channel posts, the supergroup itself for messages from anonymous group administrators, the linked channel for messages automatically forwarded to the discussion group. For backward compatibility, the field <em>from</em> contains a fake sender user in non-channel chats, if the message was sent on behalf of a chat.</td> +</tr> +<tr> +<td>date</td> +<td>Integer</td> +<td>Date the message was sent in Unix time</td> +</tr> +<tr> +<td>chat</td> +<td><a href="#chat">Chat</a></td> +<td>Conversation the message belongs to</td> +</tr> +<tr> +<td>forward_from</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. For forwarded messages, sender of the original message</td> +</tr> +<tr> +<td>forward_from_chat</td> +<td><a href="#chat">Chat</a></td> +<td><em>Optional</em>. For messages forwarded from channels or from anonymous administrators, information about the original sender chat</td> +</tr> +<tr> +<td>forward_from_message_id</td> +<td>Integer</td> +<td><em>Optional</em>. For messages forwarded from channels, identifier of the original message in the channel</td> +</tr> +<tr> +<td>forward_signature</td> +<td>String</td> +<td><em>Optional</em>. For forwarded messages that were originally sent in channels or by an anonymous chat administrator, signature of the message sender if present</td> +</tr> +<tr> +<td>forward_sender_name</td> +<td>String</td> +<td><em>Optional</em>. Sender's name for messages forwarded from users who disallow adding a link to their account in forwarded messages</td> +</tr> +<tr> +<td>forward_date</td> +<td>Integer</td> +<td><em>Optional</em>. For forwarded messages, date the original message was sent in Unix time</td> +</tr> +<tr> +<td>is_automatic_forward</td> +<td>True</td> +<td><em>Optional</em>. True, if the message is a channel post that was automatically forwarded to the connected discussion group</td> +</tr> +<tr> +<td>reply_to_message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. For replies, the original message. Note that the Message object in this field will not contain further <em>reply_to_message</em> fields even if it itself is a reply.</td> +</tr> +<tr> +<td>via_bot</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. Bot through which the message was sent</td> +</tr> +<tr> +<td>edit_date</td> +<td>Integer</td> +<td><em>Optional</em>. Date the message was last edited in Unix time</td> +</tr> +<tr> +<td>has_protected_content</td> +<td>True</td> +<td><em>Optional</em>. True, if the message can't be forwarded</td> +</tr> +<tr> +<td>media_group_id</td> +<td>String</td> +<td><em>Optional</em>. The unique identifier of a media message group this message belongs to</td> +</tr> +<tr> +<td>author_signature</td> +<td>String</td> +<td><em>Optional</em>. Signature of the post author for messages in channels, or the custom title of an anonymous group administrator</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td><em>Optional</em>. For text messages, the actual UTF-8 text of the message, 0-4096 characters</td> +</tr> +<tr> +<td>entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text</td> +</tr> +<tr> +<td>animation</td> +<td><a href="#animation">Animation</a></td> +<td><em>Optional</em>. Message is an animation, information about the animation. For backward compatibility, when this field is set, the <em>document</em> field will also be set</td> +</tr> +<tr> +<td>audio</td> +<td><a href="#audio">Audio</a></td> +<td><em>Optional</em>. Message is an audio file, information about the file</td> +</tr> +<tr> +<td>document</td> +<td><a href="#document">Document</a></td> +<td><em>Optional</em>. Message is a general file, information about the file</td> +</tr> +<tr> +<td>photo</td> +<td>Array of <a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Message is a photo, available sizes of the photo</td> +</tr> +<tr> +<td>sticker</td> +<td><a href="#sticker">Sticker</a></td> +<td><em>Optional</em>. Message is a sticker, information about the sticker</td> +</tr> +<tr> +<td>video</td> +<td><a href="#video">Video</a></td> +<td><em>Optional</em>. Message is a video, information about the video</td> +</tr> +<tr> +<td>video_note</td> +<td><a href="#videonote">VideoNote</a></td> +<td><em>Optional</em>. Message is a <a href="https://telegram.org/blog/video-messages-and-telescope">video note</a>, information about the video message</td> +</tr> +<tr> +<td>voice</td> +<td><a href="#voice">Voice</a></td> +<td><em>Optional</em>. Message is a voice message, information about the file</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption for the animation, audio, document, photo, video or voice, 0-1024 characters</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. For messages with a caption, special entities like usernames, URLs, bot commands, etc. that appear in the caption</td> +</tr> +<tr> +<td>contact</td> +<td><a href="#contact">Contact</a></td> +<td><em>Optional</em>. Message is a shared contact, information about the contact</td> +</tr> +<tr> +<td>dice</td> +<td><a href="#dice">Dice</a></td> +<td><em>Optional</em>. Message is a dice with random value</td> +</tr> +<tr> +<td>game</td> +<td><a href="#game">Game</a></td> +<td><em>Optional</em>. Message is a game, information about the game. <a href="#games">More about games »</a></td> +</tr> +<tr> +<td>poll</td> +<td><a href="#poll">Poll</a></td> +<td><em>Optional</em>. Message is a native poll, information about the poll</td> +</tr> +<tr> +<td>venue</td> +<td><a href="#venue">Venue</a></td> +<td><em>Optional</em>. Message is a venue, information about the venue. For backward compatibility, when this field is set, the <em>location</em> field will also be set</td> +</tr> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td><em>Optional</em>. Message is a shared location, information about the location</td> +</tr> +<tr> +<td>new_chat_members</td> +<td>Array of <a href="#user">User</a></td> +<td><em>Optional</em>. New members that were added to the group or supergroup and information about them (the bot itself may be one of these members)</td> +</tr> +<tr> +<td>left_chat_member</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. A member was removed from the group, information about them (this member may be the bot itself)</td> +</tr> +<tr> +<td>new_chat_title</td> +<td>String</td> +<td><em>Optional</em>. A chat title was changed to this value</td> +</tr> +<tr> +<td>new_chat_photo</td> +<td>Array of <a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. A chat photo was change to this value</td> +</tr> +<tr> +<td>delete_chat_photo</td> +<td>True</td> +<td><em>Optional</em>. Service message: the chat photo was deleted</td> +</tr> +<tr> +<td>group_chat_created</td> +<td>True</td> +<td><em>Optional</em>. Service message: the group has been created</td> +</tr> +<tr> +<td>supergroup_chat_created</td> +<td>True</td> +<td><em>Optional</em>. Service message: the supergroup has been created. This field can't be received in a message coming through updates, because bot can't be a member of a supergroup when it is created. It can only be found in reply_to_message if someone replies to a very first message in a directly created supergroup.</td> +</tr> +<tr> +<td>channel_chat_created</td> +<td>True</td> +<td><em>Optional</em>. Service message: the channel has been created. This field can't be received in a message coming through updates, because bot can't be a member of a channel when it is created. It can only be found in reply_to_message if someone replies to a very first message in a channel.</td> +</tr> +<tr> +<td>message_auto_delete_timer_changed</td> +<td><a href="#messageautodeletetimerchanged">MessageAutoDeleteTimerChanged</a></td> +<td><em>Optional</em>. Service message: auto-delete timer settings changed in the chat</td> +</tr> +<tr> +<td>migrate_to_chat_id</td> +<td>Integer</td> +<td><em>Optional</em>. The group has been migrated to a supergroup with the specified identifier. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>migrate_from_chat_id</td> +<td>Integer</td> +<td><em>Optional</em>. The supergroup has been migrated from a group with the specified identifier. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>pinned_message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. Specified message was pinned. Note that the Message object in this field will not contain further <em>reply_to_message</em> fields even if it is itself a reply.</td> +</tr> +<tr> +<td>invoice</td> +<td><a href="#invoice">Invoice</a></td> +<td><em>Optional</em>. Message is an invoice for a <a href="#payments">payment</a>, information about the invoice. <a href="#payments">More about payments »</a></td> +</tr> +<tr> +<td>successful_payment</td> +<td><a href="#successfulpayment">SuccessfulPayment</a></td> +<td><em>Optional</em>. Message is a service message about a successful payment, information about the payment. <a href="#payments">More about payments »</a></td> +</tr> +<tr> +<td>connected_website</td> +<td>String</td> +<td><em>Optional</em>. The domain name of the website on which the user has logged in. <a href="/widgets/login">More about Telegram Login »</a></td> +</tr> +<tr> +<td>passport_data</td> +<td><a href="#passportdata">PassportData</a></td> +<td><em>Optional</em>. Telegram Passport data</td> +</tr> +<tr> +<td>proximity_alert_triggered</td> +<td><a href="#proximityalerttriggered">ProximityAlertTriggered</a></td> +<td><em>Optional</em>. Service message. A user in the chat triggered another user's proximity alert while sharing Live Location.</td> +</tr> +<tr> +<td>voice_chat_scheduled</td> +<td><a href="#voicechatscheduled">VoiceChatScheduled</a></td> +<td><em>Optional</em>. Service message: voice chat scheduled</td> +</tr> +<tr> +<td>voice_chat_started</td> +<td><a href="#voicechatstarted">VoiceChatStarted</a></td> +<td><em>Optional</em>. Service message: voice chat started</td> +</tr> +<tr> +<td>voice_chat_ended</td> +<td><a href="#voicechatended">VoiceChatEnded</a></td> +<td><em>Optional</em>. Service message: voice chat ended</td> +</tr> +<tr> +<td>voice_chat_participants_invited</td> +<td><a href="#voicechatparticipantsinvited">VoiceChatParticipantsInvited</a></td> +<td><em>Optional</em>. Service message: new participants invited to a voice chat</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. Inline keyboard attached to the message. <code>login_url</code> buttons are represented as ordinary <code>url</code> buttons.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="messageid" href="#messageid"><i class="anchor-icon"></i></a>MessageId</h4> +<p>This object represents a unique message identifier.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Unique message identifier</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="messageentity" href="#messageentity"><i class="anchor-icon"></i></a>MessageEntity</h4> +<p>This object represents one special entity in a text message. For example, hashtags, usernames, URLs, etc.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the entity. Currently, can be “mention” (<code>@username</code>), “hashtag” (<code>#hashtag</code>), “cashtag” (<code>$USD</code>), “bot_command” (<code>/start@jobs_bot</code>), “url” (<code>https://telegram.org</code>), “email” (<code>do-not-reply@telegram.org</code>), “phone_number” (<code>+1-212-555-0123</code>), “bold” (<strong>bold text</strong>), “italic” (<em>italic text</em>), “underline” (underlined text), “strikethrough” (strikethrough text), “spoiler” (spoiler message), “code” (monowidth string), “pre” (monowidth block), “text_link” (for clickable text URLs), “text_mention” (for users <a href="https://telegram.org/blog/edit#new-mentions">without usernames</a>)</td> +</tr> +<tr> +<td>offset</td> +<td>Integer</td> +<td>Offset in UTF-16 code units to the start of the entity</td> +</tr> +<tr> +<td>length</td> +<td>Integer</td> +<td>Length of the entity in UTF-16 code units</td> +</tr> +<tr> +<td>url</td> +<td>String</td> +<td><em>Optional</em>. For “text_link” only, url that will be opened after user taps on the text</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. For “text_mention” only, the mentioned user</td> +</tr> +<tr> +<td>language</td> +<td>String</td> +<td><em>Optional</em>. For “pre” only, the programming language of the entity text</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="photosize" href="#photosize"><i class="anchor-icon"></i></a>PhotoSize</h4> +<p>This object represents one size of a photo or a <a href="#document">file</a> / <a href="#sticker">sticker</a> thumbnail.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Photo width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Photo height</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="animation" href="#animation"><i class="anchor-icon"></i></a>Animation</h4> +<p>This object represents an animation file (GIF or H.264/MPEG-4 AVC video without sound).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Video width as defined by sender</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Video height as defined by sender</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the video in seconds as defined by sender</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Animation thumbnail as defined by sender</td> +</tr> +<tr> +<td>file_name</td> +<td>String</td> +<td><em>Optional</em>. Original animation filename as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="audio" href="#audio"><i class="anchor-icon"></i></a>Audio</h4> +<p>This object represents an audio file to be treated as music by the Telegram clients.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the audio in seconds as defined by sender</td> +</tr> +<tr> +<td>performer</td> +<td>String</td> +<td><em>Optional</em>. Performer of the audio as defined by sender or by audio tags</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title of the audio as defined by sender or by audio tags</td> +</tr> +<tr> +<td>file_name</td> +<td>String</td> +<td><em>Optional</em>. Original filename as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Thumbnail of the album cover to which the music file belongs</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="document" href="#document"><i class="anchor-icon"></i></a>Document</h4> +<p>This object represents a general file (as opposed to <a href="#photosize">photos</a>, <a href="#voice">voice messages</a> and <a href="#audio">audio files</a>).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Document thumbnail as defined by sender</td> +</tr> +<tr> +<td>file_name</td> +<td>String</td> +<td><em>Optional</em>. Original filename as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="video" href="#video"><i class="anchor-icon"></i></a>Video</h4> +<p>This object represents a video file.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Video width as defined by sender</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Video height as defined by sender</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the video in seconds as defined by sender</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Video thumbnail</td> +</tr> +<tr> +<td>file_name</td> +<td>String</td> +<td><em>Optional</em>. Original filename as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. Mime type of a file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="videonote" href="#videonote"><i class="anchor-icon"></i></a>VideoNote</h4> +<p>This object represents a <a href="https://telegram.org/blog/video-messages-and-telescope">video message</a> (available in Telegram apps as of <a href="https://telegram.org/blog/video-messages-and-telescope">v.4.0</a>).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>length</td> +<td>Integer</td> +<td>Video width and height (diameter of the video message) as defined by sender</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the video in seconds as defined by sender</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Video thumbnail</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="voice" href="#voice"><i class="anchor-icon"></i></a>Voice</h4> +<p>This object represents a voice note.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the audio in seconds as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="contact" href="#contact"><i class="anchor-icon"></i></a>Contact</h4> +<p>This object represents a phone contact.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>phone_number</td> +<td>String</td> +<td>Contact's phone number</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>Contact's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. Contact's last name</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td><em>Optional</em>. Contact's user identifier in Telegram. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>vcard</td> +<td>String</td> +<td><em>Optional</em>. Additional data about the contact in the form of a <a href="https://en.wikipedia.org/wiki/VCard">vCard</a></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="dice" href="#dice"><i class="anchor-icon"></i></a>Dice</h4> +<p>This object represents an animated emoji that displays a random value.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>emoji</td> +<td>String</td> +<td>Emoji on which the dice throw animation is based</td> +</tr> +<tr> +<td>value</td> +<td>Integer</td> +<td>Value of the dice, 1-6 for “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />”, “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" />” and “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB3.png" width="20" height="20" alt="🎳" />” base emoji, 1-5 for “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />” and “<img class="emoji" src="//telegram.org/img/emoji/40/E29ABD.png" width="20" height="20" alt="⚽" />” base emoji, 1-64 for “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB0.png" width="20" height="20" alt="🎰" />” base emoji</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="polloption" href="#polloption"><i class="anchor-icon"></i></a>PollOption</h4> +<p>This object contains information about one answer option in a poll.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>text</td> +<td>String</td> +<td>Option text, 1-100 characters</td> +</tr> +<tr> +<td>voter_count</td> +<td>Integer</td> +<td>Number of users that voted for this option</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="pollanswer" href="#pollanswer"><i class="anchor-icon"></i></a>PollAnswer</h4> +<p>This object represents an answer of a user in a non-anonymous poll.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>poll_id</td> +<td>String</td> +<td>Unique poll identifier</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>The user, who changed the answer to the poll</td> +</tr> +<tr> +<td>option_ids</td> +<td>Array of Integer</td> +<td>0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="poll" href="#poll"><i class="anchor-icon"></i></a>Poll</h4> +<p>This object contains information about a poll.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique poll identifier</td> +</tr> +<tr> +<td>question</td> +<td>String</td> +<td>Poll question, 1-300 characters</td> +</tr> +<tr> +<td>options</td> +<td>Array of <a href="#polloption">PollOption</a></td> +<td>List of poll options</td> +</tr> +<tr> +<td>total_voter_count</td> +<td>Integer</td> +<td>Total number of users that voted in the poll</td> +</tr> +<tr> +<td>is_closed</td> +<td>Boolean</td> +<td><em>True</em>, if the poll is closed</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td><em>True</em>, if the poll is anonymous</td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Poll type, currently can be “regular” or “quiz”</td> +</tr> +<tr> +<td>allows_multiple_answers</td> +<td>Boolean</td> +<td><em>True</em>, if the poll allows multiple answers</td> +</tr> +<tr> +<td>correct_option_id</td> +<td>Integer</td> +<td><em>Optional</em>. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.</td> +</tr> +<tr> +<td>explanation</td> +<td>String</td> +<td><em>Optional</em>. Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters</td> +</tr> +<tr> +<td>explanation_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. Special entities like usernames, URLs, bot commands, etc. that appear in the <em>explanation</em></td> +</tr> +<tr> +<td>open_period</td> +<td>Integer</td> +<td><em>Optional</em>. Amount of time in seconds the poll will be active after creation</td> +</tr> +<tr> +<td>close_date</td> +<td>Integer</td> +<td><em>Optional</em>. Point in time (Unix timestamp) when the poll will be automatically closed</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="location" href="#location"><i class="anchor-icon"></i></a>Location</h4> +<p>This object represents a point on the map.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>longitude</td> +<td>Float</td> +<td>Longitude as defined by sender</td> +</tr> +<tr> +<td>latitude</td> +<td>Float</td> +<td>Latitude as defined by sender</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>live_period</td> +<td>Integer</td> +<td><em>Optional</em>. Time relative to the message sending date, during which the location can be updated; in seconds. For active live locations only.</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td><em>Optional</em>. The direction in which user is moving, in degrees; 1-360. For active live locations only.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td><em>Optional</em>. Maximum distance for proximity alerts about approaching another chat member, in meters. For sent live locations only.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="venue" href="#venue"><i class="anchor-icon"></i></a>Venue</h4> +<p>This object represents a venue.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td>Venue location. Can't be a live location</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Name of the venue</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Address of the venue</td> +</tr> +<tr> +<td>foursquare_id</td> +<td>String</td> +<td><em>Optional</em>. Foursquare identifier of the venue</td> +</tr> +<tr> +<td>foursquare_type</td> +<td>String</td> +<td><em>Optional</em>. Foursquare type of the venue. (For example, “arts_entertainment/default”, “arts_entertainment/aquarium” or “food/icecream”.)</td> +</tr> +<tr> +<td>google_place_id</td> +<td>String</td> +<td><em>Optional</em>. Google Places identifier of the venue</td> +</tr> +<tr> +<td>google_place_type</td> +<td>String</td> +<td><em>Optional</em>. Google Places type of the venue. (See <a href="https://developers.google.com/places/web-service/supported_types">supported types</a>.)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="proximityalerttriggered" href="#proximityalerttriggered"><i class="anchor-icon"></i></a>ProximityAlertTriggered</h4> +<p>This object represents the content of a service message, sent whenever a user in the chat triggers a proximity alert set by another user.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>traveler</td> +<td><a href="#user">User</a></td> +<td>User that triggered the alert</td> +</tr> +<tr> +<td>watcher</td> +<td><a href="#user">User</a></td> +<td>User that set the alert</td> +</tr> +<tr> +<td>distance</td> +<td>Integer</td> +<td>The distance between the users</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="messageautodeletetimerchanged" href="#messageautodeletetimerchanged"><i class="anchor-icon"></i></a>MessageAutoDeleteTimerChanged</h4> +<p>This object represents a service message about a change in auto-delete timer settings.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>message_auto_delete_time</td> +<td>Integer</td> +<td>New auto-delete time for messages in the chat; in seconds</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="voicechatscheduled" href="#voicechatscheduled"><i class="anchor-icon"></i></a>VoiceChatScheduled</h4> +<p>This object represents a service message about a voice chat scheduled in the chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>start_date</td> +<td>Integer</td> +<td>Point in time (Unix timestamp) when the voice chat is supposed to be started by a chat administrator</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="voicechatstarted" href="#voicechatstarted"><i class="anchor-icon"></i></a>VoiceChatStarted</h4> +<p>This object represents a service message about a voice chat started in the chat. Currently holds no information.</p> +<h4><a class="anchor" name="voicechatended" href="#voicechatended"><i class="anchor-icon"></i></a>VoiceChatEnded</h4> +<p>This object represents a service message about a voice chat ended in the chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Voice chat duration in seconds</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="voicechatparticipantsinvited" href="#voicechatparticipantsinvited"><i class="anchor-icon"></i></a>VoiceChatParticipantsInvited</h4> +<p>This object represents a service message about new members invited to a voice chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>users</td> +<td>Array of <a href="#user">User</a></td> +<td><em>Optional</em>. New members that were invited to the voice chat</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="userprofilephotos" href="#userprofilephotos"><i class="anchor-icon"></i></a>UserProfilePhotos</h4> +<p>This object represent a user's profile pictures.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>total_count</td> +<td>Integer</td> +<td>Total number of profile pictures the target user has</td> +</tr> +<tr> +<td>photos</td> +<td>Array of Array of <a href="#photosize">PhotoSize</a></td> +<td>Requested profile pictures (in up to 4 sizes each)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="file" href="#file"><i class="anchor-icon"></i></a>File</h4> +<p>This object represents a file ready to be downloaded. The file can be downloaded via the link <code>https://api.telegram.org/file/bot<token>/<file_path></code>. It is guaranteed that the link will be valid for at least 1 hour. When the link expires, a new one can be requested by calling <a href="#getfile">getFile</a>.</p> +<blockquote> +<p>Maximum file size to download is 20 MB</p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes, if known</td> +</tr> +<tr> +<td>file_path</td> +<td>String</td> +<td><em>Optional</em>. File path. Use <code>https://api.telegram.org/file/bot<token>/<file_path></code> to get the file.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="replykeyboardmarkup" href="#replykeyboardmarkup"><i class="anchor-icon"></i></a>ReplyKeyboardMarkup</h4> +<p>This object represents a <a href="https://core.telegram.org/bots#keyboards">custom keyboard</a> with reply options (see <a href="https://core.telegram.org/bots#keyboards">Introduction to bots</a> for details and examples).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>keyboard</td> +<td>Array of Array of <a href="#keyboardbutton">KeyboardButton</a></td> +<td>Array of button rows, each represented by an Array of <a href="#keyboardbutton">KeyboardButton</a> objects</td> +</tr> +<tr> +<td>resize_keyboard</td> +<td>Boolean</td> +<td><em>Optional</em>. Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). Defaults to <em>false</em>, in which case the custom keyboard is always of the same height as the app's standard keyboard.</td> +</tr> +<tr> +<td>one_time_keyboard</td> +<td>Boolean</td> +<td><em>Optional</em>. Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat – the user can press a special button in the input field to see the custom keyboard again. Defaults to <em>false</em>.</td> +</tr> +<tr> +<td>input_field_placeholder</td> +<td>String</td> +<td><em>Optional</em>. The placeholder to be shown in the input field when the keyboard is active; 1-64 characters</td> +</tr> +<tr> +<td>selective</td> +<td>Boolean</td> +<td><em>Optional</em>. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href="#message">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.<br><br><em>Example:</em> A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="keyboardbutton" href="#keyboardbutton"><i class="anchor-icon"></i></a>KeyboardButton</h4> +<p>This object represents one button of the reply keyboard. For simple text buttons <em>String</em> can be used instead of this object to specify text of the button. Optional fields <em>request_contact</em>, <em>request_location</em>, and <em>request_poll</em> are mutually exclusive.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>text</td> +<td>String</td> +<td>Text of the button. If none of the optional fields are used, it will be sent as a message when the button is pressed</td> +</tr> +<tr> +<td>request_contact</td> +<td>Boolean</td> +<td><em>Optional</em>. If <em>True</em>, the user's phone number will be sent as a contact when the button is pressed. Available in private chats only</td> +</tr> +<tr> +<td>request_location</td> +<td>Boolean</td> +<td><em>Optional</em>. If <em>True</em>, the user's current location will be sent when the button is pressed. Available in private chats only</td> +</tr> +<tr> +<td>request_poll</td> +<td><a href="#keyboardbuttonpolltype">KeyboardButtonPollType</a></td> +<td><em>Optional</em>. If specified, the user will be asked to create a poll and send it to the bot when the button is pressed. Available in private chats only</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> <em>request_contact</em> and <em>request_location</em> options will only work in Telegram versions released after 9 April, 2016. Older clients will display <em>unsupported message</em>.<br><strong>Note:</strong> <em>request_poll</em> option will only work in Telegram versions released after 23 January, 2020. Older clients will display <em>unsupported message</em>.</p> +<h4><a class="anchor" name="keyboardbuttonpolltype" href="#keyboardbuttonpolltype"><i class="anchor-icon"></i></a>KeyboardButtonPollType</h4> +<p>This object represents type of a poll, which is allowed to be created and sent when the corresponding button is pressed.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td><em>Optional</em>. If <em>quiz</em> is passed, the user will be allowed to create only polls in the quiz mode. If <em>regular</em> is passed, only regular polls will be allowed. Otherwise, the user will be allowed to create a poll of any type.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="replykeyboardremove" href="#replykeyboardremove"><i class="anchor-icon"></i></a>ReplyKeyboardRemove</h4> +<p>Upon receiving a message with this object, Telegram clients will remove the current custom keyboard and display the default letter-keyboard. By default, custom keyboards are displayed until a new keyboard is sent by a bot. An exception is made for one-time keyboards that are hidden immediately after the user presses a button (see <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a>).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>remove_keyboard</td> +<td>True</td> +<td>Requests clients to remove the custom keyboard (user will not be able to summon this keyboard; if you want to hide the keyboard from sight but keep it accessible, use <em>one_time_keyboard</em> in <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a>)</td> +</tr> +<tr> +<td>selective</td> +<td>Boolean</td> +<td><em>Optional</em>. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href="#message">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.<br><br><em>Example:</em> A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinekeyboardmarkup" href="#inlinekeyboardmarkup"><i class="anchor-icon"></i></a>InlineKeyboardMarkup</h4> +<p>This object represents an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a> that appears right next to the message it belongs to.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>inline_keyboard</td> +<td>Array of Array of <a href="#inlinekeyboardbutton">InlineKeyboardButton</a></td> +<td>Array of button rows, each represented by an Array of <a href="#inlinekeyboardbutton">InlineKeyboardButton</a> objects</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will display <em>unsupported message</em>.</p> +<h4><a class="anchor" name="inlinekeyboardbutton" href="#inlinekeyboardbutton"><i class="anchor-icon"></i></a>InlineKeyboardButton</h4> +<p>This object represents one button of an inline keyboard. You <strong>must</strong> use exactly one of the optional fields.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>text</td> +<td>String</td> +<td>Label text on the button</td> +</tr> +<tr> +<td>url</td> +<td>String</td> +<td><em>Optional</em>. HTTP or tg:// url to be opened when the button is pressed. Links <code>tg://user?id=<user_id></code> can be used to mention a user by their ID without using a username, if this is allowed by their privacy settings.</td> +</tr> +<tr> +<td>login_url</td> +<td><a href="#loginurl">LoginUrl</a></td> +<td><em>Optional</em>. An HTTP URL used to automatically authorize the user. Can be used as a replacement for the <a href="https://core.telegram.org/widgets/login">Telegram Login Widget</a>.</td> +</tr> +<tr> +<td>callback_data</td> +<td>String</td> +<td><em>Optional</em>. Data to be sent in a <a href="#callbackquery">callback query</a> to the bot when button is pressed, 1-64 bytes</td> +</tr> +<tr> +<td>switch_inline_query</td> +<td>String</td> +<td><em>Optional</em>. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. Can be empty, in which case just the bot's username will be inserted.<br><br><strong>Note:</strong> This offers an easy way for users to start using your bot in <a href="/bots/inline">inline mode</a> when they are currently in a private chat with it. Especially useful when combined with <a href="#answerinlinequery"><em>switch_pm…</em></a> actions – in this case the user will be automatically returned to the chat they switched from, skipping the chat selection screen.</td> +</tr> +<tr> +<td>switch_inline_query_current_chat</td> +<td>String</td> +<td><em>Optional</em>. If set, pressing the button will insert the bot's username and the specified inline query in the current chat's input field. Can be empty, in which case only the bot's username will be inserted.<br><br>This offers a quick way for the user to open your bot in inline mode in the same chat – good for selecting something from multiple options.</td> +</tr> +<tr> +<td>callback_game</td> +<td><a href="#callbackgame">CallbackGame</a></td> +<td><em>Optional</em>. Description of the game that will be launched when the user presses the button.<br><br><strong>NOTE:</strong> This type of button <strong>must</strong> always be the first button in the first row.</td> +</tr> +<tr> +<td>pay</td> +<td>Boolean</td> +<td><em>Optional</em>. Specify <em>True</em>, to send a <a href="#payments">Pay button</a>.<br><br><strong>NOTE:</strong> This type of button <strong>must</strong> always be the first button in the first row and can only be used in invoice messages.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="loginurl" href="#loginurl"><i class="anchor-icon"></i></a>LoginUrl</h4> +<p>This object represents a parameter of the inline keyboard button used to automatically authorize a user. Serves as a great replacement for the <a href="https://core.telegram.org/widgets/login">Telegram Login Widget</a> when the user is coming from Telegram. All the user needs to do is tap/click a button and confirm that they want to log in:</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="TITLE" alt="TITLE" srcset="/file/811140015/1734/8VZFkwWXalM.97872/6127fa62d8a0bf2b3c , 2x" /></a> +</div> + +<p>Telegram apps support these buttons as of <a href="https://telegram.org/blog/privacy-discussions-web-bots#meet-seamless-web-bots">version 5.7</a>.</p> +<blockquote> +<p>Sample bot: <a href="https://t.me/discussbot">@discussbot</a></p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>url</td> +<td>String</td> +<td>An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in <a href="https://core.telegram.org/widgets/login#receiving-authorization-data">Receiving authorization data</a>.<br><br><strong>NOTE:</strong> You <strong>must</strong> always check the hash of the received data to verify the authentication and the integrity of the data as described in <a href="https://core.telegram.org/widgets/login#checking-authorization">Checking authorization</a>.</td> +</tr> +<tr> +<td>forward_text</td> +<td>String</td> +<td><em>Optional</em>. New text of the button in forwarded messages.</td> +</tr> +<tr> +<td>bot_username</td> +<td>String</td> +<td><em>Optional</em>. Username of a bot, which will be used for user authorization. See <a href="https://core.telegram.org/widgets/login#setting-up-a-bot">Setting up a bot</a> for more details. If not specified, the current bot's username will be assumed. The <em>url</em>'s domain must be the same as the domain linked with the bot. See <a href="https://core.telegram.org/widgets/login#linking-your-domain-to-the-bot">Linking your domain to the bot</a> for more details.</td> +</tr> +<tr> +<td>request_write_access</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em> to request the permission for your bot to send messages to the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="callbackquery" href="#callbackquery"><i class="anchor-icon"></i></a>CallbackQuery</h4> +<p>This object represents an incoming callback query from a callback button in an <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>. If the button that originated the query was attached to a message sent by the bot, the field <em>message</em> will be present. If the button was attached to a message sent via the bot (in <a href="#inline-mode">inline mode</a>), the field <em>inline_message_id</em> will be present. Exactly one of the fields <em>data</em> or <em>game_short_name</em> will be present.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this query</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>Sender</td> +</tr> +<tr> +<td>message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. Message with the callback button that originated the query. Note that message content and message date will not be available if the message is too old</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td><em>Optional</em>. Identifier of the message sent via the bot in inline mode, that originated the query.</td> +</tr> +<tr> +<td>chat_instance</td> +<td>String</td> +<td>Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in <a href="#games">games</a>.</td> +</tr> +<tr> +<td>data</td> +<td>String</td> +<td><em>Optional</em>. Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field.</td> +</tr> +<tr> +<td>game_short_name</td> +<td>String</td> +<td><em>Optional</em>. Short name of a <a href="#games">Game</a> to be returned, serves as the unique identifier for the game</td> +</tr> +</tbody> +</table> +<blockquote> +<p><strong>NOTE:</strong> After the user presses a callback button, Telegram clients will display a progress bar until you call <a href="#answercallbackquery">answerCallbackQuery</a>. It is, therefore, necessary to react by calling <a href="#answercallbackquery">answerCallbackQuery</a> even if no notification to the user is needed (e.g., without specifying any of the optional parameters).</p> +</blockquote> +<h4><a class="anchor" name="forcereply" href="#forcereply"><i class="anchor-icon"></i></a>ForceReply</h4> +<p>Upon receiving a message with this object, Telegram clients will display a reply interface to the user (act as if the user has selected the bot's message and tapped 'Reply'). This can be extremely useful if you want to create user-friendly step-by-step interfaces without having to sacrifice <a href="/bots#privacy-mode">privacy mode</a>.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>force_reply</td> +<td>True</td> +<td>Shows reply interface to the user, as if they manually selected the bot's message and tapped 'Reply'</td> +</tr> +<tr> +<td>input_field_placeholder</td> +<td>String</td> +<td><em>Optional</em>. The placeholder to be shown in the input field when the reply is active; 1-64 characters</td> +</tr> +<tr> +<td>selective</td> +<td>Boolean</td> +<td><em>Optional</em>. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href="#message">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.</td> +</tr> +</tbody> +</table> +<blockquote> +<p><strong>Example:</strong> A <a href="https://t.me/PollBot">poll bot</a> for groups runs in privacy mode (only receives commands, replies to its messages and mentions). There could be two ways to create a new poll:</p> +<ul> +<li>Explain the user how to send a command with parameters (e.g. /newpoll question answer1 answer2). May be appealing for hardcore users but lacks modern day polish.</li> +<li>Guide the user through a step-by-step process. 'Please send me your question', 'Cool, now let's add the first answer option', 'Great. Keep adding answer options, then send /done when you're ready'.</li> +</ul> +<p>The last option is definitely more attractive. And if you use <a href="#forcereply">ForceReply</a> in your bot's questions, it will receive the user's answers even if it only receives replies, commands and mentions — without any extra work for the user.</p> +</blockquote> +<h4><a class="anchor" name="chatphoto" href="#chatphoto"><i class="anchor-icon"></i></a>ChatPhoto</h4> +<p>This object represents a chat photo.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>small_file_id</td> +<td>String</td> +<td>File identifier of small (160x160) chat photo. This file_id can be used only for photo download and only for as long as the photo is not changed.</td> +</tr> +<tr> +<td>small_file_unique_id</td> +<td>String</td> +<td>Unique file identifier of small (160x160) chat photo, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>big_file_id</td> +<td>String</td> +<td>File identifier of big (640x640) chat photo. This file_id can be used only for photo download and only for as long as the photo is not changed.</td> +</tr> +<tr> +<td>big_file_unique_id</td> +<td>String</td> +<td>Unique file identifier of big (640x640) chat photo, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatinvitelink" href="#chatinvitelink"><i class="anchor-icon"></i></a>ChatInviteLink</h4> +<p>Represents an invite link for a chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>invite_link</td> +<td>String</td> +<td>The invite link. If the link was created by another chat administrator, then the second part of the link will be replaced with “…”.</td> +</tr> +<tr> +<td>creator</td> +<td><a href="#user">User</a></td> +<td>Creator of the link</td> +</tr> +<tr> +<td>creates_join_request</td> +<td>Boolean</td> +<td><em>True</em>, if users joining the chat via the link need to be approved by chat administrators</td> +</tr> +<tr> +<td>is_primary</td> +<td>Boolean</td> +<td><em>True</em>, if the link is primary</td> +</tr> +<tr> +<td>is_revoked</td> +<td>Boolean</td> +<td><em>True</em>, if the link is revoked</td> +</tr> +<tr> +<td>name</td> +<td>String</td> +<td><em>Optional</em>. Invite link name</td> +</tr> +<tr> +<td>expire_date</td> +<td>Integer</td> +<td><em>Optional</em>. Point in time (Unix timestamp) when the link will expire or has been expired</td> +</tr> +<tr> +<td>member_limit</td> +<td>Integer</td> +<td><em>Optional</em>. Maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999</td> +</tr> +<tr> +<td>pending_join_request_count</td> +<td>Integer</td> +<td><em>Optional</em>. Number of pending join requests created using this link</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatmember" href="#chatmember"><i class="anchor-icon"></i></a>ChatMember</h4> +<p>This object contains information about one member of a chat. Currently, the following 6 types of chat members are supported:</p> +<ul> +<li><a href="#chatmemberowner">ChatMemberOwner</a></li> +<li><a href="#chatmemberadministrator">ChatMemberAdministrator</a></li> +<li><a href="#chatmembermember">ChatMemberMember</a></li> +<li><a href="#chatmemberrestricted">ChatMemberRestricted</a></li> +<li><a href="#chatmemberleft">ChatMemberLeft</a></li> +<li><a href="#chatmemberbanned">ChatMemberBanned</a></li> +</ul> +<h4><a class="anchor" name="chatmemberowner" href="#chatmemberowner"><i class="anchor-icon"></i></a>ChatMemberOwner</h4> +<p>Represents a <a href="#chatmember">chat member</a> that owns the chat and has all administrator privileges.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always “creator”</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td><em>True</em>, if the user's presence in the chat is hidden</td> +</tr> +<tr> +<td>custom_title</td> +<td>String</td> +<td><em>Optional</em>. Custom title for this user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatmemberadministrator" href="#chatmemberadministrator"><i class="anchor-icon"></i></a>ChatMemberAdministrator</h4> +<p>Represents a <a href="#chatmember">chat member</a> that has some additional privileges.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always “administrator”</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +<tr> +<td>can_be_edited</td> +<td>Boolean</td> +<td><em>True</em>, if the bot is allowed to edit administrator privileges of that user</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td><em>True</em>, if the user's presence in the chat is hidden</td> +</tr> +<tr> +<td>can_manage_chat</td> +<td>Boolean</td> +<td><em>True</em>, if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege</td> +</tr> +<tr> +<td>can_delete_messages</td> +<td>Boolean</td> +<td><em>True</em>, if the administrator can delete messages of other users</td> +</tr> +<tr> +<td>can_manage_voice_chats</td> +<td>Boolean</td> +<td><em>True</em>, if the administrator can manage voice chats</td> +</tr> +<tr> +<td>can_restrict_members</td> +<td>Boolean</td> +<td><em>True</em>, if the administrator can restrict, ban or unban chat members</td> +</tr> +<tr> +<td>can_promote_members</td> +<td>Boolean</td> +<td><em>True</em>, if the administrator can add new administrators with a subset of their own privileges or demote administrators that he has promoted, directly or indirectly (promoted by administrators that were appointed by the user)</td> +</tr> +<tr> +<td>can_change_info</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to change the chat title, photo and other settings</td> +</tr> +<tr> +<td>can_invite_users</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to invite new users to the chat</td> +</tr> +<tr> +<td>can_post_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the administrator can post in the channel; channels only</td> +</tr> +<tr> +<td>can_edit_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the administrator can edit messages of other users and can pin messages; channels only</td> +</tr> +<tr> +<td>can_pin_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the user is allowed to pin messages; groups and supergroups only</td> +</tr> +<tr> +<td>custom_title</td> +<td>String</td> +<td><em>Optional</em>. Custom title for this user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatmembermember" href="#chatmembermember"><i class="anchor-icon"></i></a>ChatMemberMember</h4> +<p>Represents a <a href="#chatmember">chat member</a> that has no additional privileges or restrictions.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always “member”</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatmemberrestricted" href="#chatmemberrestricted"><i class="anchor-icon"></i></a>ChatMemberRestricted</h4> +<p>Represents a <a href="#chatmember">chat member</a> that is under certain restrictions in the chat. Supergroups only.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always “restricted”</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +<tr> +<td>is_member</td> +<td>Boolean</td> +<td><em>True</em>, if the user is a member of the chat at the moment of the request</td> +</tr> +<tr> +<td>can_change_info</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to change the chat title, photo and other settings</td> +</tr> +<tr> +<td>can_invite_users</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to invite new users to the chat</td> +</tr> +<tr> +<td>can_pin_messages</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to pin messages</td> +</tr> +<tr> +<td>can_send_messages</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to send text messages, contacts, locations and venues</td> +</tr> +<tr> +<td>can_send_media_messages</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to send audios, documents, photos, videos, video notes and voice notes</td> +</tr> +<tr> +<td>can_send_polls</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to send polls</td> +</tr> +<tr> +<td>can_send_other_messages</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to send animations, games, stickers and use inline bots</td> +</tr> +<tr> +<td>can_add_web_page_previews</td> +<td>Boolean</td> +<td><em>True</em>, if the user is allowed to add web page previews to their messages</td> +</tr> +<tr> +<td>until_date</td> +<td>Integer</td> +<td>Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatmemberleft" href="#chatmemberleft"><i class="anchor-icon"></i></a>ChatMemberLeft</h4> +<p>Represents a <a href="#chatmember">chat member</a> that isn't currently a member of the chat, but may join it themselves.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always “left”</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatmemberbanned" href="#chatmemberbanned"><i class="anchor-icon"></i></a>ChatMemberBanned</h4> +<p>Represents a <a href="#chatmember">chat member</a> that was banned in the chat and can't return to the chat or view chat messages.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always “kicked”</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +<tr> +<td>until_date</td> +<td>Integer</td> +<td>Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatmemberupdated" href="#chatmemberupdated"><i class="anchor-icon"></i></a>ChatMemberUpdated</h4> +<p>This object represents changes in the status of a chat member.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat</td> +<td><a href="#chat">Chat</a></td> +<td>Chat the user belongs to</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>Performer of the action, which resulted in the change</td> +</tr> +<tr> +<td>date</td> +<td>Integer</td> +<td>Date the change was done in Unix time</td> +</tr> +<tr> +<td>old_chat_member</td> +<td><a href="#chatmember">ChatMember</a></td> +<td>Previous information about the chat member</td> +</tr> +<tr> +<td>new_chat_member</td> +<td><a href="#chatmember">ChatMember</a></td> +<td>New information about the chat member</td> +</tr> +<tr> +<td>invite_link</td> +<td><a href="#chatinvitelink">ChatInviteLink</a></td> +<td><em>Optional</em>. Chat invite link, which was used by the user to join the chat; for joining by invite link events only.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatjoinrequest" href="#chatjoinrequest"><i class="anchor-icon"></i></a>ChatJoinRequest</h4> +<p>Represents a join request sent to a chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat</td> +<td><a href="#chat">Chat</a></td> +<td>Chat to which the request was sent</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>User that sent the join request</td> +</tr> +<tr> +<td>date</td> +<td>Integer</td> +<td>Date the request was sent in Unix time</td> +</tr> +<tr> +<td>bio</td> +<td>String</td> +<td><em>Optional</em>. Bio of the user.</td> +</tr> +<tr> +<td>invite_link</td> +<td><a href="#chatinvitelink">ChatInviteLink</a></td> +<td><em>Optional</em>. Chat invite link that was used by the user to send the join request</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatpermissions" href="#chatpermissions"><i class="anchor-icon"></i></a>ChatPermissions</h4> +<p>Describes actions that a non-administrator user is allowed to take in a chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>can_send_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the user is allowed to send text messages, contacts, locations and venues</td> +</tr> +<tr> +<td>can_send_media_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the user is allowed to send audios, documents, photos, videos, video notes and voice notes, implies can_send_messages</td> +</tr> +<tr> +<td>can_send_polls</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the user is allowed to send polls, implies can_send_messages</td> +</tr> +<tr> +<td>can_send_other_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the user is allowed to send animations, games, stickers and use inline bots, implies can_send_media_messages</td> +</tr> +<tr> +<td>can_add_web_page_previews</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the user is allowed to add web page previews to their messages, implies can_send_media_messages</td> +</tr> +<tr> +<td>can_change_info</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the user is allowed to change the chat title, photo and other settings. Ignored in public supergroups</td> +</tr> +<tr> +<td>can_invite_users</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the user is allowed to invite new users to the chat</td> +</tr> +<tr> +<td>can_pin_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. <em>True</em>, if the user is allowed to pin messages. Ignored in public supergroups</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="chatlocation" href="#chatlocation"><i class="anchor-icon"></i></a>ChatLocation</h4> +<p>Represents a location to which a chat is connected.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td>The location to which the supergroup is connected. Can't be a live location.</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Location address; 1-64 characters, as defined by the chat owner</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="botcommand" href="#botcommand"><i class="anchor-icon"></i></a>BotCommand</h4> +<p>This object represents a bot command.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>command</td> +<td>String</td> +<td>Text of the command; 1-32 characters. Can contain only lowercase English letters, digits and underscores.</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Description of the command; 1-256 characters.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="botcommandscope" href="#botcommandscope"><i class="anchor-icon"></i></a>BotCommandScope</h4> +<p>This object represents the scope to which bot commands are applied. Currently, the following 7 scopes are supported:</p> +<ul> +<li><a href="#botcommandscopedefault">BotCommandScopeDefault</a></li> +<li><a href="#botcommandscopeallprivatechats">BotCommandScopeAllPrivateChats</a></li> +<li><a href="#botcommandscopeallgroupchats">BotCommandScopeAllGroupChats</a></li> +<li><a href="#botcommandscopeallchatadministrators">BotCommandScopeAllChatAdministrators</a></li> +<li><a href="#botcommandscopechat">BotCommandScopeChat</a></li> +<li><a href="#botcommandscopechatadministrators">BotCommandScopeChatAdministrators</a></li> +<li><a href="#botcommandscopechatmember">BotCommandScopeChatMember</a></li> +</ul> +<h4><a class="anchor" name="determining-list-of-commands" href="#determining-list-of-commands"><i class="anchor-icon"></i></a>Determining list of commands</h4> +<p>The following algorithm is used to determine the list of commands for a particular user viewing the bot menu. The first list of commands which is set is returned:</p> +<p><strong>Commands in the chat with the bot</strong></p> +<ul> +<li>botCommandScopeChat + language_code</li> +<li>botCommandScopeChat</li> +<li>botCommandScopeAllPrivateChats + language_code</li> +<li>botCommandScopeAllPrivateChats</li> +<li>botCommandScopeDefault + language_code</li> +<li>botCommandScopeDefault</li> +</ul> +<p><strong>Commands in group and supergroup chats</strong></p> +<ul> +<li>botCommandScopeChatMember + language_code</li> +<li>botCommandScopeChatMember</li> +<li>botCommandScopeChatAdministrators + language_code (administrators only)</li> +<li>botCommandScopeChatAdministrators (administrators only)</li> +<li>botCommandScopeChat + language_code</li> +<li>botCommandScopeChat</li> +<li>botCommandScopeAllChatAdministrators + language_code (administrators only)</li> +<li>botCommandScopeAllChatAdministrators (administrators only)</li> +<li>botCommandScopeAllGroupChats + language_code</li> +<li>botCommandScopeAllGroupChats</li> +<li>botCommandScopeDefault + language_code</li> +<li>botCommandScopeDefault</li> +</ul> +<h4><a class="anchor" name="botcommandscopedefault" href="#botcommandscopedefault"><i class="anchor-icon"></i></a>BotCommandScopeDefault</h4> +<p>Represents the default <a href="#botcommandscope">scope</a> of bot commands. Default commands are used if no commands with a <a href="#determining-list-of-commands">narrower scope</a> are specified for the user.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>default</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="botcommandscopeallprivatechats" href="#botcommandscopeallprivatechats"><i class="anchor-icon"></i></a>BotCommandScopeAllPrivateChats</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering all private chats.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>all_private_chats</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="botcommandscopeallgroupchats" href="#botcommandscopeallgroupchats"><i class="anchor-icon"></i></a>BotCommandScopeAllGroupChats</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering all group and supergroup chats.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>all_group_chats</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="botcommandscopeallchatadministrators" href="#botcommandscopeallchatadministrators"><i class="anchor-icon"></i></a>BotCommandScopeAllChatAdministrators</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering all group and supergroup chat administrators.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>all_chat_administrators</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="botcommandscopechat" href="#botcommandscopechat"><i class="anchor-icon"></i></a>BotCommandScopeChat</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering a specific chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>chat</em></td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="botcommandscopechatadministrators" href="#botcommandscopechatadministrators"><i class="anchor-icon"></i></a>BotCommandScopeChatAdministrators</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering all administrators of a specific group or supergroup chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>chat_administrators</em></td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="botcommandscopechatmember" href="#botcommandscopechatmember"><i class="anchor-icon"></i></a>BotCommandScopeChatMember</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering a specific member of a group or supergroup chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>chat_member</em></td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Unique identifier of the target user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="responseparameters" href="#responseparameters"><i class="anchor-icon"></i></a>ResponseParameters</h4> +<p>Contains information about why a request was unsuccessful.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>migrate_to_chat_id</td> +<td>Integer</td> +<td><em>Optional</em>. The group has been migrated to a supergroup with the specified identifier. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>retry_after</td> +<td>Integer</td> +<td><em>Optional</em>. In case of exceeding flood control, the number of seconds left to wait before the request can be repeated</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputmedia" href="#inputmedia"><i class="anchor-icon"></i></a>InputMedia</h4> +<p>This object represents the content of a media message to be sent. It should be one of</p> +<ul> +<li><a href="#inputmediaanimation">InputMediaAnimation</a></li> +<li><a href="#inputmediadocument">InputMediaDocument</a></li> +<li><a href="#inputmediaaudio">InputMediaAudio</a></li> +<li><a href="#inputmediaphoto">InputMediaPhoto</a></li> +<li><a href="#inputmediavideo">InputMediaVideo</a></li> +</ul> +<h4><a class="anchor" name="inputmediaphoto" href="#inputmediaphoto"><i class="anchor-icon"></i></a>InputMediaPhoto</h4> +<p>Represents a photo to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>photo</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass “attach://<file_attach_name>” to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the photo to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the photo caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputmediavideo" href="#inputmediavideo"><i class="anchor-icon"></i></a>InputMediaVideo</h4> +<p>Represents a video to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>video</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass “attach://<file_attach_name>” to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td><em>Optional</em>. Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the video to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the video caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td><em>Optional</em>. Video width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td><em>Optional</em>. Video height</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td><em>Optional</em>. Video duration in seconds</td> +</tr> +<tr> +<td>supports_streaming</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if the uploaded video is suitable for streaming</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputmediaanimation" href="#inputmediaanimation"><i class="anchor-icon"></i></a>InputMediaAnimation</h4> +<p>Represents an animation file (GIF or H.264/MPEG-4 AVC video without sound) to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>animation</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass “attach://<file_attach_name>” to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td><em>Optional</em>. Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the animation to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the animation caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td><em>Optional</em>. Animation width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td><em>Optional</em>. Animation height</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td><em>Optional</em>. Animation duration in seconds</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputmediaaudio" href="#inputmediaaudio"><i class="anchor-icon"></i></a>InputMediaAudio</h4> +<p>Represents an audio file to be treated as music to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>audio</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass “attach://<file_attach_name>” to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td><em>Optional</em>. Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the audio to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the audio caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td><em>Optional</em>. Duration of the audio in seconds</td> +</tr> +<tr> +<td>performer</td> +<td>String</td> +<td><em>Optional</em>. Performer of the audio</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title of the audio</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputmediadocument" href="#inputmediadocument"><i class="anchor-icon"></i></a>InputMediaDocument</h4> +<p>Represents a general file to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>document</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass “attach://<file_attach_name>” to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td><em>Optional</em>. Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the document to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the document caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_content_type_detection</td> +<td>Boolean</td> +<td><em>Optional</em>. Disables automatic server-side content type detection for files uploaded using multipart/form-data. Always <em>True</em>, if the document is sent as part of an album.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputfile" href="#inputfile"><i class="anchor-icon"></i></a>InputFile</h4> +<p>This object represents the contents of a file to be uploaded. Must be posted using multipart/form-data in the usual way that files are uploaded via the browser.</p> +<h4><a class="anchor" name="sending-files" href="#sending-files"><i class="anchor-icon"></i></a>Sending files</h4> +<p> There are three ways to send files (photos, stickers, audio, media, etc.):</p> +<ol> +<li>If the file is already stored somewhere on the Telegram servers, you don't need to reupload it: each file object has a <strong>file_id</strong> field, simply pass this <strong>file_id</strong> as a parameter instead of uploading. There are <strong>no limits</strong> for files sent this way.</li> +<li>Provide Telegram with an HTTP URL for the file to be sent. Telegram will download and send the file. 5 MB max size for photos and 20 MB max for other types of content.</li> +<li>Post the file using multipart/form-data in the usual way that files are uploaded via the browser. 10 MB max size for photos, 50 MB for other files.</li> +</ol> +<p><strong>Sending by file_id</strong></p> +<ul> +<li>It is not possible to change the file type when resending by <strong>file_id</strong>. I.e. a <a href="#video">video</a> can't be <a href="#sendphoto">sent as a photo</a>, a <a href="#photosize">photo</a> can't be <a href="#senddocument">sent as a document</a>, etc.</li> +<li>It is not possible to resend thumbnails.</li> +<li>Resending a photo by <strong>file_id</strong> will send all of its <a href="#photosize">sizes</a>.</li> +<li><strong>file_id</strong> is unique for each individual bot and <strong>can't</strong> be transferred from one bot to another.</li> +<li><strong>file_id</strong> uniquely identifies a file, but a file can have different valid <strong>file_id</strong>s even for the same bot.</li> +</ul> +<p><strong>Sending by URL</strong></p> +<ul> +<li>When sending by URL the target file must have the correct MIME type (e.g., audio/mpeg for <a href="#sendaudio">sendAudio</a>, etc.).</li> +<li>In <a href="#senddocument">sendDocument</a>, sending by URL will currently only work for <strong>GIF</strong>, <strong>PDF</strong> and <strong>ZIP</strong> files.</li> +<li>To use <a href="#sendvoice">sendVoice</a>, the file must have the type audio/ogg and be no more than 1MB in size. 1-20MB voice notes will be sent as files.</li> +<li>Other configurations may work but we can't guarantee that they will.</li> +</ul> +<h4><a class="anchor" name="inline-mode-objects" href="#inline-mode-objects"><i class="anchor-icon"></i></a>Inline mode objects</h4> +<p>Objects and methods used in the inline mode are described in the <a href="#inline-mode">Inline mode section</a>.</p> +<h3><a class="anchor" name="available-methods" href="#available-methods"><i class="anchor-icon"></i></a>Available methods</h3> +<blockquote> +<p>All methods in the Bot API are case-insensitive. We support <strong>GET</strong> and <strong>POST</strong> HTTP methods. Use either <a href="https://en.wikipedia.org/wiki/Query_string">URL query string</a> or <em>application/json</em> or <em>application/x-www-form-urlencoded</em> or <em>multipart/form-data</em> for passing parameters in Bot API requests.<br>On successful call, a JSON-object containing the result will be returned.</p> +</blockquote> +<h4><a class="anchor" name="getme" href="#getme"><i class="anchor-icon"></i></a>getMe</h4> +<p>A simple method for testing your bot's authentication token. Requires no parameters. Returns basic information about the bot in form of a <a href="#user">User</a> object.</p> +<h4><a class="anchor" name="logout" href="#logout"><i class="anchor-icon"></i></a>logOut</h4> +<p>Use this method to log out from the cloud Bot API server before launching the bot locally. You <strong>must</strong> log out the bot before running it locally, otherwise there is no guarantee that the bot will receive updates. After a successful call, you can immediately log in on a local server, but will not be able to log in back to the cloud Bot API server for 10 minutes. Returns <em>True</em> on success. Requires no parameters.</p> +<h4><a class="anchor" name="close" href="#close"><i class="anchor-icon"></i></a>close</h4> +<p>Use this method to close the bot instance before moving it from one local server to another. You need to delete the webhook before calling this method to ensure that the bot isn't launched again after server restart. The method will return error 429 in the first 10 minutes after the bot is launched. Returns <em>True</em> on success. Requires no parameters.</p> +<h4><a class="anchor" name="sendmessage" href="#sendmessage"><i class="anchor-icon"></i></a>sendMessage</h4> +<p>Use this method to send text messages. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td>Yes</td> +<td>Text of the message to be sent, 1-4096 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the message text. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in message text, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_web_page_preview</td> +<td>Boolean</td> +<td>Optional</td> +<td>Disables link previews for links in this message</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="formatting-options" href="#formatting-options"><i class="anchor-icon"></i></a>Formatting options</h4> +<p>The Bot API supports basic formatting for messages. You can use bold, italic, underlined, strikethrough, and spoiler text, as well as inline links and pre-formatted code in your bots' messages. Telegram clients will render them accordingly. You can use either markdown-style or HTML-style formatting.</p> +<p>Note that Telegram clients will display an <strong>alert</strong> to the user before opening an inline link ('Open this link?' together with the full URL).</p> +<p>Message entities can be nested, providing following restrictions are met:<br>- If two entities have common characters then one of them is fully contained inside another.<br>- <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, and <em>spoiler</em> entities can contain and can be part of any other entities, except <em>pre</em> and <em>code</em>.<br>- All other entities can't contain each other.</p> +<p>Links <code>tg://user?id=<user_id></code> can be used to mention a user by their ID without using a username. Please note:</p> +<ul> +<li>These links will work <strong>only</strong> if they are used inside an inline link or in an inline keyboard button. For example, they will not work, when used in a message text.</li> +<li>These mentions are only guaranteed to work if the user has contacted the bot in the past, has sent a callback query to the bot via an inline button or is a member in the group where he was mentioned.</li> +</ul> +<h6><a class="anchor" name="markdownv2-style" href="#markdownv2-style"><i class="anchor-icon"></i></a>MarkdownV2 style</h6> +<p>To use this mode, pass <em>MarkdownV2</em> in the <em>parse_mode</em> field. Use the following syntax in your message:</p> +<pre><code>*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +`inline fixed-width code` +``` +pre-formatted fixed-width code block +``` +```python +pre-formatted fixed-width code block written in the Python programming language +```</code></pre> +<p>Please note:</p> +<ul> +<li>Any character with code between 1 and 126 inclusively can be escaped anywhere with a preceding '\' character, in which case it is treated as an ordinary character and not a part of the markup. This implies that '\' character usually must be escaped with a preceding '\' character.</li> +<li>Inside <code>pre</code> and <code>code</code> entities, all '`' and '\' characters must be escaped with a preceding '\' character.</li> +<li>Inside <code>(...)</code> part of inline link definition, all ')' and '\' must be escaped with a preceding '\' character.</li> +<li>In all other places characters '_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!' must be escaped with the preceding character '\'.</li> +<li>In case of ambiguity between <code>italic</code> and <code>underline</code> entities <code>__</code> is always greadily treated from left to right as beginning or end of <code>underline</code> entity, so instead of <code>___italic underline___</code> use <code>___italic underline_\r__</code>, where <code>\r</code> is a character with code 13, which will be ignored.</li> +</ul> +<h6><a class="anchor" name="html-style" href="#html-style"><i class="anchor-icon"></i></a>HTML style</h6> +<p>To use this mode, pass <em>HTML</em> in the <em>parse_mode</em> field. The following tags are currently supported:</p> +<pre><code><b>bold</b>, <strong>bold</strong> +<i>italic</i>, <em>italic</em> +<u>underline</u>, <ins>underline</ins> +<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del> +<span class="tg-spoiler">spoiler</span>, <tg-spoiler>spoiler</tg-spoiler> +<b>bold <i>italic bold <s>italic bold strikethrough <span class="tg-spoiler">italic bold strikethrough spoiler</span></s> <u>underline italic bold</u></i> bold</b> +<a href="http://www.example.com/">inline URL</a> +<a href="tg://user?id=123456789">inline mention of a user</a> +<code>inline fixed-width code</code> +<pre>pre-formatted fixed-width code block</pre> +<pre><code class="language-python">pre-formatted fixed-width code block written in the Python programming language</code></pre></code></pre> +<p>Please note:</p> +<ul> +<li>Only the tags mentioned above are currently supported.</li> +<li>All <code><</code>, <code>></code> and <code>&</code> symbols that are not a part of a tag or an HTML entity must be replaced with the corresponding HTML entities (<code><</code> with <code>&lt;</code>, <code>></code> with <code>&gt;</code> and <code>&</code> with <code>&amp;</code>).</li> +<li>All numerical HTML entities are supported.</li> +<li>The API currently supports only the following named HTML entities: <code>&lt;</code>, <code>&gt;</code>, <code>&amp;</code> and <code>&quot;</code>.</li> +<li>Use nested <code>pre</code> and <code>code</code> tags, to define programming language for <code>pre</code> entity.</li> +<li>Programming language can't be specified for standalone <code>code</code> tags.</li> +</ul> +<h6><a class="anchor" name="markdown-style" href="#markdown-style"><i class="anchor-icon"></i></a>Markdown style</h6> +<p>This is a legacy mode, retained for backward compatibility. To use this mode, pass <em>Markdown</em> in the <em>parse_mode</em> field. Use the following syntax in your message:</p> +<pre><code>*bold text* +_italic text_ +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +`inline fixed-width code` +``` +pre-formatted fixed-width code block +``` +```python +pre-formatted fixed-width code block written in the Python programming language +```</code></pre> +<p>Please note:</p> +<ul> +<li>Entities must not be nested, use parse mode <a href="#markdownv2-style">MarkdownV2</a> instead.</li> +<li>There is no way to specify underline and strikethrough entities, use parse mode <a href="#markdownv2-style">MarkdownV2</a> instead.</li> +<li>To escape characters '_', '*', '`', '[' outside of an entity, prepend the characters '\' before them.</li> +<li>Escaping inside entities is not allowed, so entity must be closed first and reopened again: use <code>_snake_\__case_</code> for italic <code>snake_case</code> and <code>*2*\**2=4*</code> for bold <code>2*2=4</code>.</li> +</ul> +<h4><a class="anchor" name="forwardmessage" href="#forwardmessage"><i class="anchor-icon"></i></a>forwardMessage</h4> +<p>Use this method to forward messages of any kind. Service messages can't be forwarded. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>from_chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the chat where the original message was sent (or channel username in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the forwarded message from forwarding and saving</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Message identifier in the chat specified in <em>from_chat_id</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="copymessage" href="#copymessage"><i class="anchor-icon"></i></a>copyMessage</h4> +<p>Use this method to copy messages of any kind. Service messages and invoice messages can't be copied. The method is analogous to the method <a href="#forwardmessage">forwardMessage</a>, but the copied message doesn't have a link to the original message. Returns the <a href="#messageid">MessageId</a> of the sent message on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>from_chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the chat where the original message was sent (or channel username in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Message identifier in the chat specified in <em>from_chat_id</em></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>New caption for media, 0-1024 characters after entities parsing. If not specified, the original caption is kept</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the new caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the new caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendphoto" href="#sendphoto"><i class="anchor-icon"></i></a>sendPhoto</h4> +<p>Use this method to send photos. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>photo</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Photo to send. Pass a file_id as String to send a photo that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a photo from the Internet, or upload a new photo using multipart/form-data. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Photo caption (may also be used when resending photos by <em>file_id</em>), 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the photo caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendaudio" href="#sendaudio"><i class="anchor-icon"></i></a>sendAudio</h4> +<p>Use this method to send audio files, if you want Telegram clients to display them in the music player. Your audio must be in the .MP3 or .M4A format. On success, the sent <a href="#message">Message</a> is returned. Bots can currently send audio files of up to 50 MB in size, this limit may be changed in the future.</p> +<p>For sending voice messages, use the <a href="#sendvoice">sendVoice</a> method instead.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>audio</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Audio file to send. Pass a file_id as String to send an audio file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an audio file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Audio caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the audio caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of the audio in seconds</td> +</tr> +<tr> +<td>performer</td> +<td>String</td> +<td>Optional</td> +<td>Performer</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Optional</td> +<td>Track name</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="senddocument" href="#senddocument"><i class="anchor-icon"></i></a>sendDocument</h4> +<p>Use this method to send general files. On success, the sent <a href="#message">Message</a> is returned. Bots can currently send files of any type of up to 50 MB in size, this limit may be changed in the future.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>document</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>File to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Document caption (may also be used when resending documents by <em>file_id</em>), 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the document caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_content_type_detection</td> +<td>Boolean</td> +<td>Optional</td> +<td>Disables automatic server-side content type detection for files uploaded using multipart/form-data</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendvideo" href="#sendvideo"><i class="anchor-icon"></i></a>sendVideo</h4> +<p>Use this method to send video files, Telegram clients support mp4 videos (other formats may be sent as <a href="#document">Document</a>). On success, the sent <a href="#message">Message</a> is returned. Bots can currently send video files of up to 50 MB in size, this limit may be changed in the future.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>video</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Video to send. Pass a file_id as String to send a video that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a video from the Internet, or upload a new video using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of sent video in seconds</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Optional</td> +<td>Video width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Optional</td> +<td>Video height</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Video caption (may also be used when resending videos by <em>file_id</em>), 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the video caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>supports_streaming</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the uploaded video is suitable for streaming</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendanimation" href="#sendanimation"><i class="anchor-icon"></i></a>sendAnimation</h4> +<p>Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound). On success, the sent <a href="#message">Message</a> is returned. Bots can currently send animation files of up to 50 MB in size, this limit may be changed in the future.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>animation</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Animation to send. Pass a file_id as String to send an animation that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an animation from the Internet, or upload a new animation using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of sent animation in seconds</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Optional</td> +<td>Animation width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Optional</td> +<td>Animation height</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Animation caption (may also be used when resending animation by <em>file_id</em>), 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the animation caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendvoice" href="#sendvoice"><i class="anchor-icon"></i></a>sendVoice</h4> +<p>Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. For this to work, your audio must be in an .OGG file encoded with OPUS (other formats may be sent as <a href="#audio">Audio</a> or <a href="#document">Document</a>). On success, the sent <a href="#message">Message</a> is returned. Bots can currently send voice messages of up to 50 MB in size, this limit may be changed in the future.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>voice</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Audio file to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Voice message caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the voice message caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of the voice message in seconds</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendvideonote" href="#sendvideonote"><i class="anchor-icon"></i></a>sendVideoNote</h4> +<p>As of <a href="https://telegram.org/blog/video-messages-and-telescope">v.4.0</a>, Telegram clients support rounded square mp4 videos of up to 1 minute long. Use this method to send video messages. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>video_note</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Video note to send. Pass a file_id as String to send a video note that exists on the Telegram servers (recommended) or upload a new video using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a>. Sending video notes by a URL is currently unsupported</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of sent video in seconds</td> +</tr> +<tr> +<td>length</td> +<td>Integer</td> +<td>Optional</td> +<td>Video width and height, i.e. diameter of the video message</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendmediagroup" href="#sendmediagroup"><i class="anchor-icon"></i></a>sendMediaGroup</h4> +<p>Use this method to send a group of photos, videos, documents or audios as an album. Documents and audio files can be only grouped in an album with messages of the same type. On success, an array of <a href="#message">Messages</a> that were sent is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>media</td> +<td>Array of <a href="#inputmediaaudio">InputMediaAudio</a>, <a href="#inputmediadocument">InputMediaDocument</a>, <a href="#inputmediaphoto">InputMediaPhoto</a> and <a href="#inputmediavideo">InputMediaVideo</a></td> +<td>Yes</td> +<td>A JSON-serialized array describing messages to be sent, must include 2-10 items</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends messages <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent messages from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the messages are a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendlocation" href="#sendlocation"><i class="anchor-icon"></i></a>sendLocation</h4> +<p>Use this method to send point on the map. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>latitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Latitude of the location</td> +</tr> +<tr> +<td>longitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Longitude of the location</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td>Optional</td> +<td>The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>live_period</td> +<td>Integer</td> +<td>Optional</td> +<td>Period in seconds for which the location will be updated (see <a href="https://telegram.org/blog/live-locations">Live Locations</a>, should be between 60 and 86400.</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td>Optional</td> +<td>For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td>Optional</td> +<td>For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="editmessagelivelocation" href="#editmessagelivelocation"><i class="anchor-icon"></i></a>editMessageLiveLocation</h4> +<p>Use this method to edit live location messages. A location can be edited until its <em>live_period</em> expires or editing is explicitly disabled by a call to <a href="#stopmessagelivelocation">stopMessageLiveLocation</a>. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>latitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Latitude of new location</td> +</tr> +<tr> +<td>longitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Longitude of new location</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td>Optional</td> +<td>The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td>Optional</td> +<td>Direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td>Optional</td> +<td>Maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for a new <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="stopmessagelivelocation" href="#stopmessagelivelocation"><i class="anchor-icon"></i></a>stopMessageLiveLocation</h4> +<p>Use this method to stop updating a live location message before <em>live_period</em> expires. On success, if the message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message with live location to stop</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for a new <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendvenue" href="#sendvenue"><i class="anchor-icon"></i></a>sendVenue</h4> +<p>Use this method to send information about a venue. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>latitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Latitude of the venue</td> +</tr> +<tr> +<td>longitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Longitude of the venue</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Yes</td> +<td>Name of the venue</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Yes</td> +<td>Address of the venue</td> +</tr> +<tr> +<td>foursquare_id</td> +<td>String</td> +<td>Optional</td> +<td>Foursquare identifier of the venue</td> +</tr> +<tr> +<td>foursquare_type</td> +<td>String</td> +<td>Optional</td> +<td>Foursquare type of the venue, if known. (For example, “arts_entertainment/default”, “arts_entertainment/aquarium” or “food/icecream”.)</td> +</tr> +<tr> +<td>google_place_id</td> +<td>String</td> +<td>Optional</td> +<td>Google Places identifier of the venue</td> +</tr> +<tr> +<td>google_place_type</td> +<td>String</td> +<td>Optional</td> +<td>Google Places type of the venue. (See <a href="https://developers.google.com/places/web-service/supported_types">supported types</a>.)</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendcontact" href="#sendcontact"><i class="anchor-icon"></i></a>sendContact</h4> +<p>Use this method to send phone contacts. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>phone_number</td> +<td>String</td> +<td>Yes</td> +<td>Contact's phone number</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>Yes</td> +<td>Contact's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td>Optional</td> +<td>Contact's last name</td> +</tr> +<tr> +<td>vcard</td> +<td>String</td> +<td>Optional</td> +<td>Additional data about the contact in the form of a <a href="https://en.wikipedia.org/wiki/VCard">vCard</a>, 0-2048 bytes</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendpoll" href="#sendpoll"><i class="anchor-icon"></i></a>sendPoll</h4> +<p>Use this method to send a native poll. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>question</td> +<td>String</td> +<td>Yes</td> +<td>Poll question, 1-300 characters</td> +</tr> +<tr> +<td>options</td> +<td>Array of String</td> +<td>Yes</td> +<td>A JSON-serialized list of answer options, 2-10 strings 1-100 characters each</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td>Optional</td> +<td><em>True</em>, if the poll needs to be anonymous, defaults to <em>True</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Optional</td> +<td>Poll type, “quiz” or “regular”, defaults to “regular”</td> +</tr> +<tr> +<td>allows_multiple_answers</td> +<td>Boolean</td> +<td>Optional</td> +<td><em>True</em>, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to <em>False</em></td> +</tr> +<tr> +<td>correct_option_id</td> +<td>Integer</td> +<td>Optional</td> +<td>0-based identifier of the correct answer option, required for polls in quiz mode</td> +</tr> +<tr> +<td>explanation</td> +<td>String</td> +<td>Optional</td> +<td>Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing</td> +</tr> +<tr> +<td>explanation_parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the explanation. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>explanation_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the poll explanation, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>open_period</td> +<td>Integer</td> +<td>Optional</td> +<td>Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with <em>close_date</em>.</td> +</tr> +<tr> +<td>close_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with <em>open_period</em>.</td> +</tr> +<tr> +<td>is_closed</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the poll needs to be immediately closed. This can be useful for poll preview.</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="senddice" href="#senddice"><i class="anchor-icon"></i></a>sendDice</h4> +<p>Use this method to send an animated emoji that will display a random value. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>emoji</td> +<td>String</td> +<td>Optional</td> +<td>Emoji on which the dice throw animation is based. Currently, must be one of “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />”, “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" />”, “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />”, “<img class="emoji" src="//telegram.org/img/emoji/40/E29ABD.png" width="20" height="20" alt="⚽" />”, “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB3.png" width="20" height="20" alt="🎳" />”, or “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB0.png" width="20" height="20" alt="🎰" />”. Dice can have values 1-6 for “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />”, “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" />” and “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB3.png" width="20" height="20" alt="🎳" />”, values 1-5 for “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />” and “<img class="emoji" src="//telegram.org/img/emoji/40/E29ABD.png" width="20" height="20" alt="⚽" />”, and values 1-64 for “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB0.png" width="20" height="20" alt="🎰" />”. Defaults to “<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />”</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendchataction" href="#sendchataction"><i class="anchor-icon"></i></a>sendChatAction</h4> +<p>Use this method when you need to tell the user that something is happening on the bot's side. The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status). Returns <em>True</em> on success.</p> +<blockquote> +<p>Example: The <a href="https://t.me/imagebot">ImageBot</a> needs some time to process a request and upload the image. Instead of sending a text message along the lines of “Retrieving image, please wait…”, the bot may use <a href="#sendchataction">sendChatAction</a> with <em>action</em> = <em>upload_photo</em>. The user will see a “sending photo” status for the bot.</p> +</blockquote> +<p>We only recommend using this method when a response from the bot will take a <strong>noticeable</strong> amount of time to arrive.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>action</td> +<td>String</td> +<td>Yes</td> +<td>Type of action to broadcast. Choose one, depending on what the user is about to receive: <em>typing</em> for <a href="#sendmessage">text messages</a>, <em>upload_photo</em> for <a href="#sendphoto">photos</a>, <em>record_video</em> or <em>upload_video</em> for <a href="#sendvideo">videos</a>, <em>record_voice</em> or <em>upload_voice</em> for <a href="#sendvoice">voice notes</a>, <em>upload_document</em> for <a href="#senddocument">general files</a>, <em>choose_sticker</em> for <a href="#sendsticker">stickers</a>, <em>find_location</em> for <a href="#sendlocation">location data</a>, <em>record_video_note</em> or <em>upload_video_note</em> for <a href="#sendvideonote">video notes</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getuserprofilephotos" href="#getuserprofilephotos"><i class="anchor-icon"></i></a>getUserProfilePhotos</h4> +<p>Use this method to get a list of profile pictures for a user. Returns a <a href="#userprofilephotos">UserProfilePhotos</a> object.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>offset</td> +<td>Integer</td> +<td>Optional</td> +<td>Sequential number of the first photo to be returned. By default, all photos are returned.</td> +</tr> +<tr> +<td>limit</td> +<td>Integer</td> +<td>Optional</td> +<td>Limits the number of photos to be retrieved. Values between 1-100 are accepted. Defaults to 100.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getfile" href="#getfile"><i class="anchor-icon"></i></a>getFile</h4> +<p>Use this method to get basic info about a file and prepare it for downloading. For the moment, bots can download files of up to 20MB in size. On success, a <a href="#file">File</a> object is returned. The file can then be downloaded via the link <code>https://api.telegram.org/file/bot<token>/<file_path></code>, where <code><file_path></code> is taken from the response. It is guaranteed that the link will be valid for at least 1 hour. When the link expires, a new one can be requested by calling <a href="#getfile">getFile</a> again.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Yes</td> +<td>File identifier to get info about</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This function may not preserve the original file name and MIME type. You should save the file's MIME type and name (if available) when the File object is received.</p> +<h4><a class="anchor" name="banchatmember" href="#banchatmember"><i class="anchor-icon"></i></a>banChatMember</h4> +<p>Use this method to ban a user in a group, a supergroup or a channel. In the case of supergroups and channels, the user will not be able to return to the chat on their own using invite links, etc., unless <a href="#unbanchatmember">unbanned</a> first. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target group or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>until_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.</td> +</tr> +<tr> +<td>revoke_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em> to delete all messages from the chat for the user that is being removed. If <em>False</em>, the user will be able to see messages in the group that were sent before the user was removed. Always <em>True</em> for supergroups and channels.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="unbanchatmember" href="#unbanchatmember"><i class="anchor-icon"></i></a>unbanChatMember</h4> +<p>Use this method to unban a previously banned user in a supergroup or channel. The user will <strong>not</strong> return to the group or channel automatically, but will be able to join via link, etc. The bot must be an administrator for this to work. By default, this method guarantees that after the call the user is not a member of the chat, but will be able to join it. So if the user is a member of the chat they will also be <strong>removed</strong> from the chat. If you don't want this, use the parameter <em>only_if_banned</em>. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target group or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>only_if_banned</td> +<td>Boolean</td> +<td>Optional</td> +<td>Do nothing if the user is not banned</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="restrictchatmember" href="#restrictchatmember"><i class="anchor-icon"></i></a>restrictChatMember</h4> +<p>Use this method to restrict a user in a supergroup. The bot must be an administrator in the supergroup for this to work and must have the appropriate administrator rights. Pass <em>True</em> for all permissions to lift restrictions from a user. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>permissions</td> +<td><a href="#chatpermissions">ChatPermissions</a></td> +<td>Yes</td> +<td>A JSON-serialized object for new user permissions</td> +</tr> +<tr> +<td>until_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Date when restrictions will be lifted for the user, unix time. If user is restricted for more than 366 days or less than 30 seconds from the current time, they are considered to be restricted forever</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="promotechatmember" href="#promotechatmember"><i class="anchor-icon"></i></a>promoteChatMember</h4> +<p>Use this method to promote or demote a user in a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Pass <em>False</em> for all boolean parameters to demote a user. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator's presence in the chat is hidden</td> +</tr> +<tr> +<td>can_manage_chat</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege</td> +</tr> +<tr> +<td>can_post_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can create channel posts, channels only</td> +</tr> +<tr> +<td>can_edit_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can edit messages of other users and can pin messages, channels only</td> +</tr> +<tr> +<td>can_delete_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can delete messages of other users</td> +</tr> +<tr> +<td>can_manage_voice_chats</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can manage voice chats</td> +</tr> +<tr> +<td>can_restrict_members</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can restrict, ban or unban chat members</td> +</tr> +<tr> +<td>can_promote_members</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can add new administrators with a subset of their own privileges or demote administrators that he has promoted, directly or indirectly (promoted by administrators that were appointed by him)</td> +</tr> +<tr> +<td>can_change_info</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can change chat title, photo and other settings</td> +</tr> +<tr> +<td>can_invite_users</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can invite new users to the chat</td> +</tr> +<tr> +<td>can_pin_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator can pin messages, supergroups only</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setchatadministratorcustomtitle" href="#setchatadministratorcustomtitle"><i class="anchor-icon"></i></a>setChatAdministratorCustomTitle</h4> +<p>Use this method to set a custom title for an administrator in a supergroup promoted by the bot. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>custom_title</td> +<td>String</td> +<td>Yes</td> +<td>New custom title for the administrator; 0-16 characters, emoji are not allowed</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="banchatsenderchat" href="#banchatsenderchat"><i class="anchor-icon"></i></a>banChatSenderChat</h4> +<p>Use this method to ban a channel chat in a supergroup or a channel. Until the chat is <a href="#unbanchatsenderchat">unbanned</a>, the owner of the banned chat won't be able to send messages on behalf of <strong>any of their channels</strong>. The bot must be an administrator in the supergroup or channel for this to work and must have the appropriate administrator rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>sender_chat_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target sender chat</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="unbanchatsenderchat" href="#unbanchatsenderchat"><i class="anchor-icon"></i></a>unbanChatSenderChat</h4> +<p>Use this method to unban a previously banned channel chat in a supergroup or channel. The bot must be an administrator for this to work and must have the appropriate administrator rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>sender_chat_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target sender chat</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setchatpermissions" href="#setchatpermissions"><i class="anchor-icon"></i></a>setChatPermissions</h4> +<p>Use this method to set default chat permissions for all members. The bot must be an administrator in the group or a supergroup for this to work and must have the <em>can_restrict_members</em> administrator rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>permissions</td> +<td><a href="#chatpermissions">ChatPermissions</a></td> +<td>Yes</td> +<td>A JSON-serialized object for new default chat permissions</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="exportchatinvitelink" href="#exportchatinvitelink"><i class="anchor-icon"></i></a>exportChatInviteLink</h4> +<p>Use this method to generate a new primary invite link for a chat; any previously generated primary link is revoked. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Returns the new invite link as <em>String</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<blockquote> +<p>Note: Each administrator in a chat generates their own invite links. Bots can't use invite links generated by other administrators. If you want your bot to work with invite links, it will need to generate its own link using <a href="#exportchatinvitelink">exportChatInviteLink</a> or by calling the <a href="#getchat">getChat</a> method. If your bot needs to generate a new primary invite link replacing its previous one, use <a href="#exportchatinvitelink">exportChatInviteLink</a> again.</p> +</blockquote> +<h4><a class="anchor" name="createchatinvitelink" href="#createchatinvitelink"><i class="anchor-icon"></i></a>createChatInviteLink</h4> +<p>Use this method to create an additional invite link for a chat. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. The link can be revoked using the method <a href="#revokechatinvitelink">revokeChatInviteLink</a>. Returns the new invite link as <a href="#chatinvitelink">ChatInviteLink</a> object.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>name</td> +<td>String</td> +<td>Optional</td> +<td>Invite link name; 0-32 characters</td> +</tr> +<tr> +<td>expire_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Point in time (Unix timestamp) when the link will expire</td> +</tr> +<tr> +<td>member_limit</td> +<td>Integer</td> +<td>Optional</td> +<td>Maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999</td> +</tr> +<tr> +<td>creates_join_request</td> +<td>Boolean</td> +<td>Optional</td> +<td><em>True</em>, if users joining the chat via the link need to be approved by chat administrators. If <em>True</em>, <em>member_limit</em> can't be specified</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="editchatinvitelink" href="#editchatinvitelink"><i class="anchor-icon"></i></a>editChatInviteLink</h4> +<p>Use this method to edit a non-primary invite link created by the bot. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Returns the edited invite link as a <a href="#chatinvitelink">ChatInviteLink</a> object.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>invite_link</td> +<td>String</td> +<td>Yes</td> +<td>The invite link to edit</td> +</tr> +<tr> +<td>name</td> +<td>String</td> +<td>Optional</td> +<td>Invite link name; 0-32 characters</td> +</tr> +<tr> +<td>expire_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Point in time (Unix timestamp) when the link will expire</td> +</tr> +<tr> +<td>member_limit</td> +<td>Integer</td> +<td>Optional</td> +<td>Maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999</td> +</tr> +<tr> +<td>creates_join_request</td> +<td>Boolean</td> +<td>Optional</td> +<td><em>True</em>, if users joining the chat via the link need to be approved by chat administrators. If <em>True</em>, <em>member_limit</em> can't be specified</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="revokechatinvitelink" href="#revokechatinvitelink"><i class="anchor-icon"></i></a>revokeChatInviteLink</h4> +<p>Use this method to revoke an invite link created by the bot. If the primary link is revoked, a new link is automatically generated. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Returns the revoked invite link as <a href="#chatinvitelink">ChatInviteLink</a> object.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier of the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>invite_link</td> +<td>String</td> +<td>Yes</td> +<td>The invite link to revoke</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="approvechatjoinrequest" href="#approvechatjoinrequest"><i class="anchor-icon"></i></a>approveChatJoinRequest</h4> +<p>Use this method to approve a chat join request. The bot must be an administrator in the chat for this to work and must have the <em>can_invite_users</em> administrator right. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="declinechatjoinrequest" href="#declinechatjoinrequest"><i class="anchor-icon"></i></a>declineChatJoinRequest</h4> +<p>Use this method to decline a chat join request. The bot must be an administrator in the chat for this to work and must have the <em>can_invite_users</em> administrator right. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setchatphoto" href="#setchatphoto"><i class="anchor-icon"></i></a>setChatPhoto</h4> +<p>Use this method to set a new profile photo for the chat. Photos can't be changed for private chats. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>photo</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Yes</td> +<td>New chat photo, uploaded using multipart/form-data</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="deletechatphoto" href="#deletechatphoto"><i class="anchor-icon"></i></a>deleteChatPhoto</h4> +<p>Use this method to delete a chat photo. Photos can't be changed for private chats. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setchattitle" href="#setchattitle"><i class="anchor-icon"></i></a>setChatTitle</h4> +<p>Use this method to change the title of a chat. Titles can't be changed for private chats. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Yes</td> +<td>New chat title, 1-255 characters</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setchatdescription" href="#setchatdescription"><i class="anchor-icon"></i></a>setChatDescription</h4> +<p>Use this method to change the description of a group, a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Optional</td> +<td>New chat description, 0-255 characters</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="pinchatmessage" href="#pinchatmessage"><i class="anchor-icon"></i></a>pinChatMessage</h4> +<p>Use this method to add a message to the list of pinned messages in a chat. If the chat is not a private chat, the bot must be an administrator in the chat for this to work and must have the 'can_pin_messages' administrator right in a supergroup or 'can_edit_messages' administrator right in a channel. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Identifier of a message to pin</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if it is not necessary to send a notification to all chat members about the new pinned message. Notifications are always disabled in channels and private chats.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="unpinchatmessage" href="#unpinchatmessage"><i class="anchor-icon"></i></a>unpinChatMessage</h4> +<p>Use this method to remove a message from the list of pinned messages in a chat. If the chat is not a private chat, the bot must be an administrator in the chat for this to work and must have the 'can_pin_messages' administrator right in a supergroup or 'can_edit_messages' administrator right in a channel. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Identifier of a message to unpin. If not specified, the most recent pinned message (by sending date) will be unpinned.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="unpinallchatmessages" href="#unpinallchatmessages"><i class="anchor-icon"></i></a>unpinAllChatMessages</h4> +<p>Use this method to clear the list of pinned messages in a chat. If the chat is not a private chat, the bot must be an administrator in the chat for this to work and must have the 'can_pin_messages' administrator right in a supergroup or 'can_edit_messages' administrator right in a channel. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="leavechat" href="#leavechat"><i class="anchor-icon"></i></a>leaveChat</h4> +<p>Use this method for your bot to leave a group, supergroup or channel. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getchat" href="#getchat"><i class="anchor-icon"></i></a>getChat</h4> +<p>Use this method to get up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or channel, etc.). Returns a <a href="#chat">Chat</a> object on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getchatadministrators" href="#getchatadministrators"><i class="anchor-icon"></i></a>getChatAdministrators</h4> +<p>Use this method to get a list of administrators in a chat. On success, returns an Array of <a href="#chatmember">ChatMember</a> objects that contains information about all chat administrators except other bots. If the chat is a group or a supergroup and no administrators were appointed, only the creator will be returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getchatmembercount" href="#getchatmembercount"><i class="anchor-icon"></i></a>getChatMemberCount</h4> +<p>Use this method to get the number of members in a chat. Returns <em>Int</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getchatmember" href="#getchatmember"><i class="anchor-icon"></i></a>getChatMember</h4> +<p>Use this method to get information about a member of a chat. Returns a <a href="#chatmember">ChatMember</a> object on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setchatstickerset" href="#setchatstickerset"><i class="anchor-icon"></i></a>setChatStickerSet</h4> +<p>Use this method to set a new group sticker set for a supergroup. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Use the field <em>can_set_sticker_set</em> optionally returned in <a href="#getchat">getChat</a> requests to check if the bot can use this method. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>sticker_set_name</td> +<td>String</td> +<td>Yes</td> +<td>Name of the sticker set to be set as the group sticker set</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="deletechatstickerset" href="#deletechatstickerset"><i class="anchor-icon"></i></a>deleteChatStickerSet</h4> +<p>Use this method to delete a group sticker set from a supergroup. The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights. Use the field <em>can_set_sticker_set</em> optionally returned in <a href="#getchat">getChat</a> requests to check if the bot can use this method. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="answercallbackquery" href="#answercallbackquery"><i class="anchor-icon"></i></a>answerCallbackQuery</h4> +<p>Use this method to send answers to callback queries sent from <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboards</a>. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. On success, <em>True</em> is returned.</p> +<blockquote> +<p>Alternatively, the user can be redirected to the specified Game URL. For this option to work, you must first create a game for your bot via <a href="https://t.me/botfather">@Botfather</a> and accept the terms. Otherwise, you may use links like <code>t.me/your_bot?start=XXXX</code> that open your bot with a parameter.</p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>callback_query_id</td> +<td>String</td> +<td>Yes</td> +<td>Unique identifier for the query to be answered</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td>Optional</td> +<td>Text of the notification. If not specified, nothing will be shown to the user, 0-200 characters</td> +</tr> +<tr> +<td>show_alert</td> +<td>Boolean</td> +<td>Optional</td> +<td>If <em>True</em>, an alert will be shown by the client instead of a notification at the top of the chat screen. Defaults to <em>false</em>.</td> +</tr> +<tr> +<td>url</td> +<td>String</td> +<td>Optional</td> +<td>URL that will be opened by the user's client. If you have created a <a href="#game">Game</a> and accepted the conditions via <a href="https://t.me/botfather">@Botfather</a>, specify the URL that opens your game — note that this will only work if the query comes from a <a href="#inlinekeyboardbutton"><em>callback_game</em></a> button.<br><br>Otherwise, you may use links like <code>t.me/your_bot?start=XXXX</code> that open your bot with a parameter.</td> +</tr> +<tr> +<td>cache_time</td> +<td>Integer</td> +<td>Optional</td> +<td>The maximum amount of time in seconds that the result of the callback query may be cached client-side. Telegram apps will support caching starting in version 3.14. Defaults to 0.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setmycommands" href="#setmycommands"><i class="anchor-icon"></i></a>setMyCommands</h4> +<p>Use this method to change the list of the bot's commands. See <a href="https://core.telegram.org/bots#commands"><a href="https://core.telegram.org/bots#commands">https://core.telegram.org/bots#commands</a></a> for more details about bot commands. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>commands</td> +<td>Array of <a href="#botcommand">BotCommand</a></td> +<td>Yes</td> +<td>A JSON-serialized list of bot commands to be set as the list of the bot's commands. At most 100 commands can be specified.</td> +</tr> +<tr> +<td>scope</td> +<td><a href="#botcommandscope">BotCommandScope</a></td> +<td>Optional</td> +<td>A JSON-serialized object, describing scope of users for which the commands are relevant. Defaults to <a href="#botcommandscopedefault">BotCommandScopeDefault</a>.</td> +</tr> +<tr> +<td>language_code</td> +<td>String</td> +<td>Optional</td> +<td>A two-letter ISO 639-1 language code. If empty, commands will be applied to all users from the given scope, for whose language there are no dedicated commands</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="deletemycommands" href="#deletemycommands"><i class="anchor-icon"></i></a>deleteMyCommands</h4> +<p>Use this method to delete the list of the bot's commands for the given scope and user language. After deletion, <a href="#determining-list-of-commands">higher level commands</a> will be shown to affected users. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>scope</td> +<td><a href="#botcommandscope">BotCommandScope</a></td> +<td>Optional</td> +<td>A JSON-serialized object, describing scope of users for which the commands are relevant. Defaults to <a href="#botcommandscopedefault">BotCommandScopeDefault</a>.</td> +</tr> +<tr> +<td>language_code</td> +<td>String</td> +<td>Optional</td> +<td>A two-letter ISO 639-1 language code. If empty, commands will be applied to all users from the given scope, for whose language there are no dedicated commands</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getmycommands" href="#getmycommands"><i class="anchor-icon"></i></a>getMyCommands</h4> +<p>Use this method to get the current list of the bot's commands for the given scope and user language. Returns Array of <a href="#botcommand">BotCommand</a> on success. If commands aren't set, an empty list is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>scope</td> +<td><a href="#botcommandscope">BotCommandScope</a></td> +<td>Optional</td> +<td>A JSON-serialized object, describing scope of users. Defaults to <a href="#botcommandscopedefault">BotCommandScopeDefault</a>.</td> +</tr> +<tr> +<td>language_code</td> +<td>String</td> +<td>Optional</td> +<td>A two-letter ISO 639-1 language code or an empty string</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inline-mode-methods" href="#inline-mode-methods"><i class="anchor-icon"></i></a>Inline mode methods</h4> +<p>Methods and objects used in the inline mode are described in the <a href="#inline-mode">Inline mode section</a>.</p> +<h3><a class="anchor" name="updating-messages" href="#updating-messages"><i class="anchor-icon"></i></a>Updating messages</h3> +<p>The following methods allow you to change an existing message in the message history instead of sending a new one with a result of an action. This is most useful for messages with <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboards</a> using callback queries, but can also help reduce clutter in conversations with regular chat bots.</p> +<p>Please note, that it is currently only possible to edit messages without <em>reply_markup</em> or with <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboards</a>.</p> +<h4><a class="anchor" name="editmessagetext" href="#editmessagetext"><i class="anchor-icon"></i></a>editMessageText</h4> +<p>Use this method to edit text and <a href="#games">game</a> messages. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td>Yes</td> +<td>New text of the message, 1-4096 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the message text. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in message text, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_web_page_preview</td> +<td>Boolean</td> +<td>Optional</td> +<td>Disables link previews for links in this message</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="editmessagecaption" href="#editmessagecaption"><i class="anchor-icon"></i></a>editMessageCaption</h4> +<p>Use this method to edit captions of messages. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>New caption of the message, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the message caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="editmessagemedia" href="#editmessagemedia"><i class="anchor-icon"></i></a>editMessageMedia</h4> +<p>Use this method to edit animation, audio, document, photo, or video messages. If a message is part of a message album, then it can be edited only to an audio for audio albums, only to a document for document albums and to a photo or a video otherwise. When an inline message is edited, a new file can't be uploaded; use a previously uploaded file via its file_id or specify a URL. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>media</td> +<td><a href="#inputmedia">InputMedia</a></td> +<td>Yes</td> +<td>A JSON-serialized object for a new media content of the message</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for a new <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="editmessagereplymarkup" href="#editmessagereplymarkup"><i class="anchor-icon"></i></a>editMessageReplyMarkup</h4> +<p>Use this method to edit only the reply markup of messages. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="stoppoll" href="#stoppoll"><i class="anchor-icon"></i></a>stopPoll</h4> +<p>Use this method to stop a poll which was sent by the bot. On success, the stopped <a href="#poll">Poll</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Identifier of the original message with the poll</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for a new message <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="deletemessage" href="#deletemessage"><i class="anchor-icon"></i></a>deleteMessage</h4> +<p>Use this method to delete a message, including service messages, with the following limitations:<br>- A message can only be deleted if it was sent less than 48 hours ago.<br>- A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.<br>- Bots can delete outgoing messages in private chats, groups, and supergroups.<br>- Bots can delete incoming messages in private chats.<br>- Bots granted <em>can_post_messages</em> permissions can delete outgoing messages in channels.<br>- If the bot is an administrator of a group, it can delete any message there.<br>- If the bot has <em>can_delete_messages</em> permission in a supergroup or a channel, it can delete any message there.<br>Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Identifier of the message to delete</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="stickers" href="#stickers"><i class="anchor-icon"></i></a>Stickers</h3> +<p>The following methods and objects allow your bot to handle stickers and sticker sets.</p> +<h4><a class="anchor" name="sticker" href="#sticker"><i class="anchor-icon"></i></a>Sticker</h4> +<p>This object represents a sticker.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Sticker width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Sticker height</td> +</tr> +<tr> +<td>is_animated</td> +<td>Boolean</td> +<td><em>True</em>, if the sticker is <a href="https://telegram.org/blog/animated-stickers">animated</a></td> +</tr> +<tr> +<td>is_video</td> +<td>Boolean</td> +<td><em>True</em>, if the sticker is a <a href="https://telegram.org/blog/video-stickers-better-reactions">video sticker</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Sticker thumbnail in the .WEBP or .JPG format</td> +</tr> +<tr> +<td>emoji</td> +<td>String</td> +<td><em>Optional</em>. Emoji associated with the sticker</td> +</tr> +<tr> +<td>set_name</td> +<td>String</td> +<td><em>Optional</em>. Name of the sticker set to which the sticker belongs</td> +</tr> +<tr> +<td>mask_position</td> +<td><a href="#maskposition">MaskPosition</a></td> +<td><em>Optional</em>. For mask stickers, the position where the mask should be placed</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="stickerset" href="#stickerset"><i class="anchor-icon"></i></a>StickerSet</h4> +<p>This object represents a sticker set.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>name</td> +<td>String</td> +<td>Sticker set name</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Sticker set title</td> +</tr> +<tr> +<td>is_animated</td> +<td>Boolean</td> +<td><em>True</em>, if the sticker set contains <a href="https://telegram.org/blog/animated-stickers">animated stickers</a></td> +</tr> +<tr> +<td>is_video</td> +<td>Boolean</td> +<td><em>True</em>, if the sticker set contains <a href="https://telegram.org/blog/video-stickers-better-reactions">video stickers</a></td> +</tr> +<tr> +<td>contains_masks</td> +<td>Boolean</td> +<td><em>True</em>, if the sticker set contains masks</td> +</tr> +<tr> +<td>stickers</td> +<td>Array of <a href="#sticker">Sticker</a></td> +<td>List of all set stickers</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Sticker set thumbnail in the .WEBP, .TGS, or .WEBM format</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="maskposition" href="#maskposition"><i class="anchor-icon"></i></a>MaskPosition</h4> +<p>This object describes the position on faces where a mask should be placed by default.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>point</td> +<td>String</td> +<td>The part of the face relative to which the mask should be placed. One of “forehead”, “eyes”, “mouth”, or “chin”.</td> +</tr> +<tr> +<td>x_shift</td> +<td>Float number</td> +<td>Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position.</td> +</tr> +<tr> +<td>y_shift</td> +<td>Float number</td> +<td>Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.</td> +</tr> +<tr> +<td>scale</td> +<td>Float number</td> +<td>Mask scaling coefficient. For example, 2.0 means double size.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="sendsticker" href="#sendsticker"><i class="anchor-icon"></i></a>sendSticker</h4> +<p>Use this method to send static .WEBP, <a href="https://telegram.org/blog/animated-stickers">animated</a> .TGS, or <a href="https://telegram.org/blog/video-stickers-better-reactions">video</a> .WEBM stickers. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>sticker</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Sticker to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a .WEBP file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getstickerset" href="#getstickerset"><i class="anchor-icon"></i></a>getStickerSet</h4> +<p>Use this method to get a sticker set. On success, a <a href="#stickerset">StickerSet</a> object is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>name</td> +<td>String</td> +<td>Yes</td> +<td>Name of the sticker set</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="uploadstickerfile" href="#uploadstickerfile"><i class="anchor-icon"></i></a>uploadStickerFile</h4> +<p>Use this method to upload a .PNG file with a sticker for later use in <em>createNewStickerSet</em> and <em>addStickerToSet</em> methods (can be used multiple times). Returns the uploaded <a href="#file">File</a> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier of sticker file owner</td> +</tr> +<tr> +<td>png_sticker</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Yes</td> +<td><strong>PNG</strong> image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="createnewstickerset" href="#createnewstickerset"><i class="anchor-icon"></i></a>createNewStickerSet</h4> +<p>Use this method to create a new sticker set owned by a user. The bot will be able to edit the sticker set thus created. You <strong>must</strong> use exactly one of the fields <em>png_sticker</em>, <em>tgs_sticker</em>, or <em>webm_sticker</em>. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier of created sticker set owner</td> +</tr> +<tr> +<td>name</td> +<td>String</td> +<td>Yes</td> +<td>Short name of sticker set, to be used in <code>t.me/addstickers/</code> URLs (e.g., <em>animals</em>). Can contain only english letters, digits and underscores. Must begin with a letter, can't contain consecutive underscores and must end in <em>“_by_<bot username>”</em>. <em><bot_username></em> is case insensitive. 1-64 characters.</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Yes</td> +<td>Sticker set title, 1-64 characters</td> +</tr> +<tr> +<td>png_sticker</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td><strong>PNG</strong> image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a <em>file_id</em> as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>tgs_sticker</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Optional</td> +<td><strong>TGS</strong> animation with the sticker, uploaded using multipart/form-data. See <a href="https://core.telegram.org/stickers#animated-sticker-requirements"><a href="https://core.telegram.org/stickers#animated-sticker-requirements">https://core.telegram.org/stickers#animated-sticker-requirements</a></a> for technical requirements</td> +</tr> +<tr> +<td>webm_sticker</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Optional</td> +<td><strong>WEBM</strong> video with the sticker, uploaded using multipart/form-data. See <a href="https://core.telegram.org/stickers#video-sticker-requirements"><a href="https://core.telegram.org/stickers#video-sticker-requirements">https://core.telegram.org/stickers#video-sticker-requirements</a></a> for technical requirements</td> +</tr> +<tr> +<td>emojis</td> +<td>String</td> +<td>Yes</td> +<td>One or more emoji corresponding to the sticker</td> +</tr> +<tr> +<td>contains_masks</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if a set of mask stickers should be created</td> +</tr> +<tr> +<td>mask_position</td> +<td><a href="#maskposition">MaskPosition</a></td> +<td>Optional</td> +<td>A JSON-serialized object for position where the mask should be placed on faces</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="addstickertoset" href="#addstickertoset"><i class="anchor-icon"></i></a>addStickerToSet</h4> +<p>Use this method to add a new sticker to a set created by the bot. You <strong>must</strong> use exactly one of the fields <em>png_sticker</em>, <em>tgs_sticker</em>, or <em>webm_sticker</em>. Animated stickers can be added to animated sticker sets and only to them. Animated sticker sets can have up to 50 stickers. Static sticker sets can have up to 120 stickers. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier of sticker set owner</td> +</tr> +<tr> +<td>name</td> +<td>String</td> +<td>Yes</td> +<td>Sticker set name</td> +</tr> +<tr> +<td>png_sticker</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td><strong>PNG</strong> image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a <em>file_id</em> as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>tgs_sticker</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Optional</td> +<td><strong>TGS</strong> animation with the sticker, uploaded using multipart/form-data. See <a href="https://core.telegram.org/stickers#animated-sticker-requirements"><a href="https://core.telegram.org/stickers#animated-sticker-requirements">https://core.telegram.org/stickers#animated-sticker-requirements</a></a> for technical requirements</td> +</tr> +<tr> +<td>webm_sticker</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Optional</td> +<td><strong>WEBM</strong> video with the sticker, uploaded using multipart/form-data. See <a href="https://core.telegram.org/stickers#video-sticker-requirements"><a href="https://core.telegram.org/stickers#video-sticker-requirements">https://core.telegram.org/stickers#video-sticker-requirements</a></a> for technical requirements</td> +</tr> +<tr> +<td>emojis</td> +<td>String</td> +<td>Yes</td> +<td>One or more emoji corresponding to the sticker</td> +</tr> +<tr> +<td>mask_position</td> +<td><a href="#maskposition">MaskPosition</a></td> +<td>Optional</td> +<td>A JSON-serialized object for position where the mask should be placed on faces</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setstickerpositioninset" href="#setstickerpositioninset"><i class="anchor-icon"></i></a>setStickerPositionInSet</h4> +<p>Use this method to move a sticker in a set created by the bot to a specific position. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>sticker</td> +<td>String</td> +<td>Yes</td> +<td>File identifier of the sticker</td> +</tr> +<tr> +<td>position</td> +<td>Integer</td> +<td>Yes</td> +<td>New sticker position in the set, zero-based</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="deletestickerfromset" href="#deletestickerfromset"><i class="anchor-icon"></i></a>deleteStickerFromSet</h4> +<p>Use this method to delete a sticker from a set created by the bot. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>sticker</td> +<td>String</td> +<td>Yes</td> +<td>File identifier of the sticker</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setstickersetthumb" href="#setstickersetthumb"><i class="anchor-icon"></i></a>setStickerSetThumb</h4> +<p>Use this method to set the thumbnail of a sticker set. Animated thumbnails can be set for animated sticker sets only. Video thumbnails can be set only for video sticker sets only. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>name</td> +<td>String</td> +<td>Yes</td> +<td>Sticker set name</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier of the sticker set owner</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>A <strong>PNG</strong> image with the thumbnail, must be up to 128 kilobytes in size and have width and height exactly 100px, or a <strong>TGS</strong> animation with the thumbnail up to 32 kilobytes in size; see <a href="https://core.telegram.org/stickers#animated-sticker-requirements"><a href="https://core.telegram.org/stickers#animated-sticker-requirements">https://core.telegram.org/stickers#animated-sticker-requirements</a></a> for animated sticker technical requirements, or a <strong>WEBM</strong> video with the thumbnail up to 32 kilobytes in size; see <a href="https://core.telegram.org/stickers#video-sticker-requirements"><a href="https://core.telegram.org/stickers#video-sticker-requirements">https://core.telegram.org/stickers#video-sticker-requirements</a></a> for video sticker technical requirements. Pass a <em>file_id</em> as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a>. Animated sticker set thumbnails can't be uploaded via HTTP URL.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="inline-mode" href="#inline-mode"><i class="anchor-icon"></i></a>Inline mode</h3> +<p>The following methods and objects allow your bot to work in <a href="/bots/inline">inline mode</a>.<br>Please see our <a href="/bots/inline">Introduction to Inline bots</a> for more details.</p> +<p>To enable this option, send the <code>/setinline</code> command to <a href="https://t.me/botfather">@BotFather</a> and provide the placeholder text that the user will see in the input field after typing your bot's name.</p> +<h4><a class="anchor" name="inlinequery" href="#inlinequery"><i class="anchor-icon"></i></a>InlineQuery</h4> +<p>This object represents an incoming inline query. When the user sends an empty query, your bot could return some default or trending results.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this query</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>Sender</td> +</tr> +<tr> +<td>query</td> +<td>String</td> +<td>Text of the query (up to 256 characters)</td> +</tr> +<tr> +<td>offset</td> +<td>String</td> +<td>Offset of the results to be returned, can be controlled by the bot</td> +</tr> +<tr> +<td>chat_type</td> +<td>String</td> +<td><em>Optional</em>. Type of the chat, from which the inline query was sent. Can be either “sender” for a private chat with the inline query sender, “private”, “group”, “supergroup”, or “channel”. The chat type should be always known for requests sent from official clients and most third-party clients, unless the request was sent from a secret chat</td> +</tr> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td><em>Optional</em>. Sender location, only for bots that request user location</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="answerinlinequery" href="#answerinlinequery"><i class="anchor-icon"></i></a>answerInlineQuery</h4> +<p>Use this method to send answers to an inline query. On success, <em>True</em> is returned.<br>No more than <strong>50</strong> results per query are allowed.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>inline_query_id</td> +<td>String</td> +<td>Yes</td> +<td>Unique identifier for the answered query</td> +</tr> +<tr> +<td>results</td> +<td>Array of <a href="#inlinequeryresult">InlineQueryResult</a></td> +<td>Yes</td> +<td>A JSON-serialized array of results for the inline query</td> +</tr> +<tr> +<td>cache_time</td> +<td>Integer</td> +<td>Optional</td> +<td>The maximum amount of time in seconds that the result of the inline query may be cached on the server. Defaults to 300.</td> +</tr> +<tr> +<td>is_personal</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query</td> +</tr> +<tr> +<td>next_offset</td> +<td>String</td> +<td>Optional</td> +<td>Pass the offset that a client should send in the next query with the same text to receive more results. Pass an empty string if there are no more results or if you don't support pagination. Offset length can't exceed 64 bytes.</td> +</tr> +<tr> +<td>switch_pm_text</td> +<td>String</td> +<td>Optional</td> +<td>If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter <em>switch_pm_parameter</em></td> +</tr> +<tr> +<td>switch_pm_parameter</td> +<td>String</td> +<td>Optional</td> +<td><a href="/bots#deep-linking">Deep-linking</a> parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only <code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>_</code> and <code>-</code> are allowed.<br><br><em>Example:</em> An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a <a href="#inlinekeyboardmarkup"><em>switch_inline</em></a> button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresult" href="#inlinequeryresult"><i class="anchor-icon"></i></a>InlineQueryResult</h4> +<p>This object represents one result of an inline query. Telegram clients currently support results of the following 20 types:</p> +<ul> +<li><a href="#inlinequeryresultcachedaudio">InlineQueryResultCachedAudio</a></li> +<li><a href="#inlinequeryresultcacheddocument">InlineQueryResultCachedDocument</a></li> +<li><a href="#inlinequeryresultcachedgif">InlineQueryResultCachedGif</a></li> +<li><a href="#inlinequeryresultcachedmpeg4gif">InlineQueryResultCachedMpeg4Gif</a></li> +<li><a href="#inlinequeryresultcachedphoto">InlineQueryResultCachedPhoto</a></li> +<li><a href="#inlinequeryresultcachedsticker">InlineQueryResultCachedSticker</a></li> +<li><a href="#inlinequeryresultcachedvideo">InlineQueryResultCachedVideo</a></li> +<li><a href="#inlinequeryresultcachedvoice">InlineQueryResultCachedVoice</a></li> +<li><a href="#inlinequeryresultarticle">InlineQueryResultArticle</a></li> +<li><a href="#inlinequeryresultaudio">InlineQueryResultAudio</a></li> +<li><a href="#inlinequeryresultcontact">InlineQueryResultContact</a></li> +<li><a href="#inlinequeryresultgame">InlineQueryResultGame</a></li> +<li><a href="#inlinequeryresultdocument">InlineQueryResultDocument</a></li> +<li><a href="#inlinequeryresultgif">InlineQueryResultGif</a></li> +<li><a href="#inlinequeryresultlocation">InlineQueryResultLocation</a></li> +<li><a href="#inlinequeryresultmpeg4gif">InlineQueryResultMpeg4Gif</a></li> +<li><a href="#inlinequeryresultphoto">InlineQueryResultPhoto</a></li> +<li><a href="#inlinequeryresultvenue">InlineQueryResultVenue</a></li> +<li><a href="#inlinequeryresultvideo">InlineQueryResultVideo</a></li> +<li><a href="#inlinequeryresultvoice">InlineQueryResultVoice</a></li> +</ul> +<p><strong>Note:</strong> All URLs passed in inline query results will be available to end users and therefore must be assumed to be <strong>public</strong>.</p> +<h4><a class="anchor" name="inlinequeryresultarticle" href="#inlinequeryresultarticle"><i class="anchor-icon"></i></a>InlineQueryResultArticle</h4> +<p>Represents a link to an article or web page.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>article</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 Bytes</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title of the result</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td>Content of the message to be sent</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>url</td> +<td>String</td> +<td><em>Optional</em>. URL of the result</td> +</tr> +<tr> +<td>hide_url</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you don't want the URL to be shown in the message</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. Url of the thumbnail for the result</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresultphoto" href="#inlinequeryresultphoto"><i class="anchor-icon"></i></a>InlineQueryResultPhoto</h4> +<p>Represents a link to a photo. By default, this photo will be sent by the user with optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the photo.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>photo</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>photo_url</td> +<td>String</td> +<td>A valid URL of the photo. Photo must be in <strong>JPEG</strong> format. Photo size must not exceed 5MB</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td>URL of the thumbnail for the photo</td> +</tr> +<tr> +<td>photo_width</td> +<td>Integer</td> +<td><em>Optional</em>. Width of the photo</td> +</tr> +<tr> +<td>photo_height</td> +<td>Integer</td> +<td><em>Optional</em>. Height of the photo</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the photo to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the photo caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the photo</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresultgif" href="#inlinequeryresultgif"><i class="anchor-icon"></i></a>InlineQueryResultGif</h4> +<p>Represents a link to an animated GIF file. By default, this animated GIF file will be sent by the user with optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the animation.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>gif</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>gif_url</td> +<td>String</td> +<td>A valid URL for the GIF file. File size must not exceed 1MB</td> +</tr> +<tr> +<td>gif_width</td> +<td>Integer</td> +<td><em>Optional</em>. Width of the GIF</td> +</tr> +<tr> +<td>gif_height</td> +<td>Integer</td> +<td><em>Optional</em>. Height of the GIF</td> +</tr> +<tr> +<td>gif_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Duration of the GIF in seconds</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td>URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for the result</td> +</tr> +<tr> +<td>thumb_mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the thumbnail, must be one of “image/jpeg”, “image/gif”, or “video/mp4”. Defaults to “image/jpeg”</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the GIF file to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the GIF animation</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresultmpeg4gif" href="#inlinequeryresultmpeg4gif"><i class="anchor-icon"></i></a>InlineQueryResultMpeg4Gif</h4> +<p>Represents a link to a video animation (H.264/MPEG-4 AVC video without sound). By default, this animated MPEG-4 file will be sent by the user with optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the animation.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>mpeg4_gif</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>mpeg4_url</td> +<td>String</td> +<td>A valid URL for the MP4 file. File size must not exceed 1MB</td> +</tr> +<tr> +<td>mpeg4_width</td> +<td>Integer</td> +<td><em>Optional</em>. Video width</td> +</tr> +<tr> +<td>mpeg4_height</td> +<td>Integer</td> +<td><em>Optional</em>. Video height</td> +</tr> +<tr> +<td>mpeg4_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Video duration in seconds</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td>URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for the result</td> +</tr> +<tr> +<td>thumb_mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the thumbnail, must be one of “image/jpeg”, “image/gif”, or “video/mp4”. Defaults to “image/jpeg”</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the MPEG-4 file to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the video animation</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresultvideo" href="#inlinequeryresultvideo"><i class="anchor-icon"></i></a>InlineQueryResultVideo</h4> +<p>Represents a link to a page containing an embedded video player or a video file. By default, this video file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the video.</p> +<blockquote> +<p>If an InlineQueryResultVideo message contains an embedded video (e.g., YouTube), you <strong>must</strong> replace its content using <em>input_message_content</em>.</p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>video</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>video_url</td> +<td>String</td> +<td>A valid URL for the embedded video player or video file</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td>Mime type of the content of video url, “text/html” or “video/mp4”</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td>URL of the thumbnail (JPEG only) for the video</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the video to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the video caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>video_width</td> +<td>Integer</td> +<td><em>Optional</em>. Video width</td> +</tr> +<tr> +<td>video_height</td> +<td>Integer</td> +<td><em>Optional</em>. Video height</td> +</tr> +<tr> +<td>video_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Video duration in seconds</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the video. This field is <strong>required</strong> if InlineQueryResultVideo is used to send an HTML-page as a result (e.g., a YouTube video).</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresultaudio" href="#inlinequeryresultaudio"><i class="anchor-icon"></i></a>InlineQueryResultAudio</h4> +<p>Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>audio</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>audio_url</td> +<td>String</td> +<td>A valid URL for the audio file</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the audio caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>performer</td> +<td>String</td> +<td><em>Optional</em>. Performer</td> +</tr> +<tr> +<td>audio_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Audio duration in seconds</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the audio</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" name="inlinequeryresultvoice" href="#inlinequeryresultvoice"><i class="anchor-icon"></i></a>InlineQueryResultVoice</h4> +<p>Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the the voice message.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>voice</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>voice_url</td> +<td>String</td> +<td>A valid URL for the voice recording</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Recording title</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the voice message caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>voice_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Recording duration in seconds</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the voice recording</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" name="inlinequeryresultdocument" href="#inlinequeryresultdocument"><i class="anchor-icon"></i></a>InlineQueryResultDocument</h4> +<p>Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file. Currently, only <strong>.PDF</strong> and <strong>.ZIP</strong> files can be sent using this method.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>document</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the document to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the document caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>document_url</td> +<td>String</td> +<td>A valid URL for the file</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td>Mime type of the content of the file, either “application/pdf” or “application/zip”</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. Inline keyboard attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the file</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. URL of the thumbnail (JPEG only) for the file</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" name="inlinequeryresultlocation" href="#inlinequeryresultlocation"><i class="anchor-icon"></i></a>InlineQueryResultLocation</h4> +<p>Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the location.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>location</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 Bytes</td> +</tr> +<tr> +<td>latitude</td> +<td>Float number</td> +<td>Location latitude in degrees</td> +</tr> +<tr> +<td>longitude</td> +<td>Float number</td> +<td>Location longitude in degrees</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Location title</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>live_period</td> +<td>Integer</td> +<td><em>Optional</em>. Period in seconds for which the location can be updated, should be between 60 and 86400.</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td><em>Optional</em>. For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td><em>Optional</em>. For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the location</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. Url of the thumbnail for the result</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" name="inlinequeryresultvenue" href="#inlinequeryresultvenue"><i class="anchor-icon"></i></a>InlineQueryResultVenue</h4> +<p>Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the venue.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>venue</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 Bytes</td> +</tr> +<tr> +<td>latitude</td> +<td>Float</td> +<td>Latitude of the venue location in degrees</td> +</tr> +<tr> +<td>longitude</td> +<td>Float</td> +<td>Longitude of the venue location in degrees</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title of the venue</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Address of the venue</td> +</tr> +<tr> +<td>foursquare_id</td> +<td>String</td> +<td><em>Optional</em>. Foursquare identifier of the venue if known</td> +</tr> +<tr> +<td>foursquare_type</td> +<td>String</td> +<td><em>Optional</em>. Foursquare type of the venue, if known. (For example, “arts_entertainment/default”, “arts_entertainment/aquarium” or “food/icecream”.)</td> +</tr> +<tr> +<td>google_place_id</td> +<td>String</td> +<td><em>Optional</em>. Google Places identifier of the venue</td> +</tr> +<tr> +<td>google_place_type</td> +<td>String</td> +<td><em>Optional</em>. Google Places type of the venue. (See <a href="https://developers.google.com/places/web-service/supported_types">supported types</a>.)</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the venue</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. Url of the thumbnail for the result</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" name="inlinequeryresultcontact" href="#inlinequeryresultcontact"><i class="anchor-icon"></i></a>InlineQueryResultContact</h4> +<p>Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the contact.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>contact</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 Bytes</td> +</tr> +<tr> +<td>phone_number</td> +<td>String</td> +<td>Contact's phone number</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>Contact's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. Contact's last name</td> +</tr> +<tr> +<td>vcard</td> +<td>String</td> +<td><em>Optional</em>. Additional data about the contact in the form of a <a href="https://en.wikipedia.org/wiki/VCard">vCard</a>, 0-2048 bytes</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the contact</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. Url of the thumbnail for the result</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" name="inlinequeryresultgame" href="#inlinequeryresultgame"><i class="anchor-icon"></i></a>InlineQueryResultGame</h4> +<p>Represents a <a href="#games">Game</a>.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>game</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>game_short_name</td> +<td>String</td> +<td>Short name of the game</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after October 1, 2016. Older clients will not display any inline results if a game result is among them.</p> +<h4><a class="anchor" name="inlinequeryresultcachedphoto" href="#inlinequeryresultcachedphoto"><i class="anchor-icon"></i></a>InlineQueryResultCachedPhoto</h4> +<p>Represents a link to a photo stored on the Telegram servers. By default, this photo will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the photo.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>photo</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>photo_file_id</td> +<td>String</td> +<td>A valid file identifier of the photo</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the photo to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the photo caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the photo</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresultcachedgif" href="#inlinequeryresultcachedgif"><i class="anchor-icon"></i></a>InlineQueryResultCachedGif</h4> +<p>Represents a link to an animated GIF file stored on the Telegram servers. By default, this animated GIF file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with specified content instead of the animation.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>gif</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>gif_file_id</td> +<td>String</td> +<td>A valid file identifier for the GIF file</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the GIF file to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the GIF animation</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresultcachedmpeg4gif" href="#inlinequeryresultcachedmpeg4gif"><i class="anchor-icon"></i></a>InlineQueryResultCachedMpeg4Gif</h4> +<p>Represents a link to a video animation (H.264/MPEG-4 AVC video without sound) stored on the Telegram servers. By default, this animated MPEG-4 file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the animation.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>mpeg4_gif</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>mpeg4_file_id</td> +<td>String</td> +<td>A valid file identifier for the MP4 file</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the MPEG-4 file to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the video animation</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresultcachedsticker" href="#inlinequeryresultcachedsticker"><i class="anchor-icon"></i></a>InlineQueryResultCachedSticker</h4> +<p>Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the sticker.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>sticker</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>sticker_file_id</td> +<td>String</td> +<td>A valid file identifier of the sticker</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the sticker</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016 for static stickers and after 06 July, 2019 for <a href="https://telegram.org/blog/animated-stickers">animated stickers</a>. Older clients will ignore them.</p> +<h4><a class="anchor" name="inlinequeryresultcacheddocument" href="#inlinequeryresultcacheddocument"><i class="anchor-icon"></i></a>InlineQueryResultCachedDocument</h4> +<p>Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>document</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title for the result</td> +</tr> +<tr> +<td>document_file_id</td> +<td>String</td> +<td>A valid file identifier for the file</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the document to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the document caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the file</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" name="inlinequeryresultcachedvideo" href="#inlinequeryresultcachedvideo"><i class="anchor-icon"></i></a>InlineQueryResultCachedVideo</h4> +<p>Represents a link to a video file stored on the Telegram servers. By default, this video file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the video.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>video</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>video_file_id</td> +<td>String</td> +<td>A valid file identifier for the video file</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title for the result</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the video to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the video caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the video</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inlinequeryresultcachedvoice" href="#inlinequeryresultcachedvoice"><i class="anchor-icon"></i></a>InlineQueryResultCachedVoice</h4> +<p>Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the voice message.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>voice</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>voice_file_id</td> +<td>String</td> +<td>A valid file identifier for the voice message</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Voice message title</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the voice message caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the voice message</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" name="inlinequeryresultcachedaudio" href="#inlinequeryresultcachedaudio"><i class="anchor-icon"></i></a>InlineQueryResultCachedAudio</h4> +<p>Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>audio</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>audio_file_id</td> +<td>String</td> +<td>A valid file identifier for the audio file</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the audio caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the audio</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" name="inputmessagecontent" href="#inputmessagecontent"><i class="anchor-icon"></i></a>InputMessageContent</h4> +<p>This object represents the content of a message to be sent as a result of an inline query. Telegram clients currently support the following 5 types:</p> +<ul> +<li><a href="#inputtextmessagecontent">InputTextMessageContent</a></li> +<li><a href="#inputlocationmessagecontent">InputLocationMessageContent</a></li> +<li><a href="#inputvenuemessagecontent">InputVenueMessageContent</a></li> +<li><a href="#inputcontactmessagecontent">InputContactMessageContent</a></li> +<li><a href="#inputinvoicemessagecontent">InputInvoiceMessageContent</a></li> +</ul> +<h4><a class="anchor" name="inputtextmessagecontent" href="#inputtextmessagecontent"><i class="anchor-icon"></i></a>InputTextMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of a text message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>message_text</td> +<td>String</td> +<td>Text of the message to be sent, 1-4096 characters</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the message text. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in message text, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_web_page_preview</td> +<td>Boolean</td> +<td><em>Optional</em>. Disables link previews for links in the sent message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputlocationmessagecontent" href="#inputlocationmessagecontent"><i class="anchor-icon"></i></a>InputLocationMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of a location message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>latitude</td> +<td>Float</td> +<td>Latitude of the location in degrees</td> +</tr> +<tr> +<td>longitude</td> +<td>Float</td> +<td>Longitude of the location in degrees</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>live_period</td> +<td>Integer</td> +<td><em>Optional</em>. Period in seconds for which the location can be updated, should be between 60 and 86400.</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td><em>Optional</em>. For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td><em>Optional</em>. For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputvenuemessagecontent" href="#inputvenuemessagecontent"><i class="anchor-icon"></i></a>InputVenueMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of a venue message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>latitude</td> +<td>Float</td> +<td>Latitude of the venue in degrees</td> +</tr> +<tr> +<td>longitude</td> +<td>Float</td> +<td>Longitude of the venue in degrees</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Name of the venue</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Address of the venue</td> +</tr> +<tr> +<td>foursquare_id</td> +<td>String</td> +<td><em>Optional</em>. Foursquare identifier of the venue, if known</td> +</tr> +<tr> +<td>foursquare_type</td> +<td>String</td> +<td><em>Optional</em>. Foursquare type of the venue, if known. (For example, “arts_entertainment/default”, “arts_entertainment/aquarium” or “food/icecream”.)</td> +</tr> +<tr> +<td>google_place_id</td> +<td>String</td> +<td><em>Optional</em>. Google Places identifier of the venue</td> +</tr> +<tr> +<td>google_place_type</td> +<td>String</td> +<td><em>Optional</em>. Google Places type of the venue. (See <a href="https://developers.google.com/places/web-service/supported_types">supported types</a>.)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputcontactmessagecontent" href="#inputcontactmessagecontent"><i class="anchor-icon"></i></a>InputContactMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of a contact message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>phone_number</td> +<td>String</td> +<td>Contact's phone number</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>Contact's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. Contact's last name</td> +</tr> +<tr> +<td>vcard</td> +<td>String</td> +<td><em>Optional</em>. Additional data about the contact in the form of a <a href="https://en.wikipedia.org/wiki/VCard">vCard</a>, 0-2048 bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="inputinvoicemessagecontent" href="#inputinvoicemessagecontent"><i class="anchor-icon"></i></a>InputInvoiceMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of an invoice message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>title</td> +<td>String</td> +<td>Product name, 1-32 characters</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Product description, 1-255 characters</td> +</tr> +<tr> +<td>payload</td> +<td>String</td> +<td>Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.</td> +</tr> +<tr> +<td>provider_token</td> +<td>String</td> +<td>Payment provider token, obtained via <a href="https://t.me/botfather">Botfather</a></td> +</tr> +<tr> +<td>currency</td> +<td>String</td> +<td>Three-letter ISO 4217 currency code, see <a href="/bots/payments#supported-currencies">more on currencies</a></td> +</tr> +<tr> +<td>prices</td> +<td>Array of <a href="#labeledprice">LabeledPrice</a></td> +<td>Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)</td> +</tr> +<tr> +<td>max_tip_amount</td> +<td>Integer</td> +<td><em>Optional</em>. The maximum accepted amount for tips in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a maximum tip of <code>US$ 1.45</code> pass <code>max_tip_amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0</td> +</tr> +<tr> +<td>suggested_tip_amounts</td> +<td>Array of Integer</td> +<td><em>Optional</em>. A JSON-serialized array of suggested amounts of tip in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed <em>max_tip_amount</em>.</td> +</tr> +<tr> +<td>provider_data</td> +<td>String</td> +<td><em>Optional</em>. A JSON-serialized object for data about the invoice, which will be shared with the payment provider. A detailed description of the required fields should be provided by the payment provider.</td> +</tr> +<tr> +<td>photo_url</td> +<td>String</td> +<td><em>Optional</em>. URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.</td> +</tr> +<tr> +<td>photo_size</td> +<td>Integer</td> +<td><em>Optional</em>. Photo size</td> +</tr> +<tr> +<td>photo_width</td> +<td>Integer</td> +<td><em>Optional</em>. Photo width</td> +</tr> +<tr> +<td>photo_height</td> +<td>Integer</td> +<td><em>Optional</em>. Photo height</td> +</tr> +<tr> +<td>need_name</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you require the user's full name to complete the order</td> +</tr> +<tr> +<td>need_phone_number</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you require the user's phone number to complete the order</td> +</tr> +<tr> +<td>need_email</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you require the user's email address to complete the order</td> +</tr> +<tr> +<td>need_shipping_address</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you require the user's shipping address to complete the order</td> +</tr> +<tr> +<td>send_phone_number_to_provider</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if user's phone number should be sent to provider</td> +</tr> +<tr> +<td>send_email_to_provider</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if user's email address should be sent to provider</td> +</tr> +<tr> +<td>is_flexible</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if the final price depends on the shipping method</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="choseninlineresult" href="#choseninlineresult"><i class="anchor-icon"></i></a>ChosenInlineResult</h4> +<p>Represents a <a href="#inlinequeryresult">result</a> of an inline query that was chosen by the user and sent to their chat partner.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>result_id</td> +<td>String</td> +<td>The unique identifier for the result that was chosen</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>The user that chose the result</td> +</tr> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td><em>Optional</em>. Sender location, only for bots that require user location</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td><em>Optional</em>. Identifier of the sent inline message. Available only if there is an <a href="#inlinekeyboardmarkup">inline keyboard</a> attached to the message. Will be also received in <a href="#callbackquery">callback queries</a> and can be used to <a href="#updating-messages">edit</a> the message.</td> +</tr> +<tr> +<td>query</td> +<td>String</td> +<td>The query that was used to obtain the result</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> It is necessary to enable <a href="/bots/inline#collecting-feedback">inline feedback</a> via <a href="https://t.me/botfather">@Botfather</a> in order to receive these objects in updates.</p> +<h3><a class="anchor" name="payments" href="#payments"><i class="anchor-icon"></i></a>Payments</h3> +<p>Your bot can accept payments from Telegram users. Please see the <a href="/bots/payments">introduction to payments</a> for more details on the process and how to set up payments for your bot. Please note that users will need Telegram v.4.0 or higher to use payments (released on May 18, 2017).</p> +<h4><a class="anchor" name="sendinvoice" href="#sendinvoice"><i class="anchor-icon"></i></a>sendInvoice</h4> +<p>Use this method to send invoices. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Yes</td> +<td>Product name, 1-32 characters</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Yes</td> +<td>Product description, 1-255 characters</td> +</tr> +<tr> +<td>payload</td> +<td>String</td> +<td>Yes</td> +<td>Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.</td> +</tr> +<tr> +<td>provider_token</td> +<td>String</td> +<td>Yes</td> +<td>Payments provider token, obtained via <a href="https://t.me/botfather">Botfather</a></td> +</tr> +<tr> +<td>currency</td> +<td>String</td> +<td>Yes</td> +<td>Three-letter ISO 4217 currency code, see <a href="/bots/payments#supported-currencies">more on currencies</a></td> +</tr> +<tr> +<td>prices</td> +<td>Array of <a href="#labeledprice">LabeledPrice</a></td> +<td>Yes</td> +<td>Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)</td> +</tr> +<tr> +<td>max_tip_amount</td> +<td>Integer</td> +<td>Optional</td> +<td>The maximum accepted amount for tips in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a maximum tip of <code>US$ 1.45</code> pass <code>max_tip_amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0</td> +</tr> +<tr> +<td>suggested_tip_amounts</td> +<td>Array of Integer</td> +<td>Optional</td> +<td>A JSON-serialized array of suggested amounts of tips in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed <em>max_tip_amount</em>.</td> +</tr> +<tr> +<td>start_parameter</td> +<td>String</td> +<td>Optional</td> +<td>Unique deep-linking parameter. If left empty, <strong>forwarded copies</strong> of the sent message will have a <em>Pay</em> button, allowing multiple users to pay directly from the forwarded message, using the same invoice. If non-empty, forwarded copies of the sent message will have a <em>URL</em> button with a deep link to the bot (instead of a <em>Pay</em> button), with the value used as the start parameter</td> +</tr> +<tr> +<td>provider_data</td> +<td>String</td> +<td>Optional</td> +<td>A JSON-serialized data about the invoice, which will be shared with the payment provider. A detailed description of required fields should be provided by the payment provider.</td> +</tr> +<tr> +<td>photo_url</td> +<td>String</td> +<td>Optional</td> +<td>URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.</td> +</tr> +<tr> +<td>photo_size</td> +<td>Integer</td> +<td>Optional</td> +<td>Photo size</td> +</tr> +<tr> +<td>photo_width</td> +<td>Integer</td> +<td>Optional</td> +<td>Photo width</td> +</tr> +<tr> +<td>photo_height</td> +<td>Integer</td> +<td>Optional</td> +<td>Photo height</td> +</tr> +<tr> +<td>need_name</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if you require the user's full name to complete the order</td> +</tr> +<tr> +<td>need_phone_number</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if you require the user's phone number to complete the order</td> +</tr> +<tr> +<td>need_email</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if you require the user's email address to complete the order</td> +</tr> +<tr> +<td>need_shipping_address</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if you require the user's shipping address to complete the order</td> +</tr> +<tr> +<td>send_phone_number_to_provider</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if user's phone number should be sent to provider</td> +</tr> +<tr> +<td>send_email_to_provider</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if user's email address should be sent to provider</td> +</tr> +<tr> +<td>is_flexible</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the final price depends on the shipping method</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>. If empty, one 'Pay <code>total price</code>' button will be shown. If not empty, the first button must be a Pay button.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="answershippingquery" href="#answershippingquery"><i class="anchor-icon"></i></a>answerShippingQuery</h4> +<p>If you sent an invoice requesting a shipping address and the parameter <em>is_flexible</em> was specified, the Bot API will send an <a href="#update">Update</a> with a <em>shipping_query</em> field to the bot. Use this method to reply to shipping queries. On success, <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>shipping_query_id</td> +<td>String</td> +<td>Yes</td> +<td>Unique identifier for the query to be answered</td> +</tr> +<tr> +<td>ok</td> +<td>Boolean</td> +<td>Yes</td> +<td>Specify <em>True</em> if delivery to the specified address is possible and False if there are any problems (for example, if delivery to the specified address is not possible)</td> +</tr> +<tr> +<td>shipping_options</td> +<td>Array of <a href="#shippingoption">ShippingOption</a></td> +<td>Optional</td> +<td>Required if <em>ok</em> is <em>True</em>. A JSON-serialized array of available shipping options.</td> +</tr> +<tr> +<td>error_message</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>ok</em> is False. Error message in human readable form that explains why it is impossible to complete the order (e.g. "Sorry, delivery to your desired address is unavailable'). Telegram will display this message to the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="answerprecheckoutquery" href="#answerprecheckoutquery"><i class="anchor-icon"></i></a>answerPreCheckoutQuery</h4> +<p>Once the user has confirmed their payment and shipping details, the Bot API sends the final confirmation in the form of an <a href="#update">Update</a> with the field <em>pre_checkout_query</em>. Use this method to respond to such pre-checkout queries. On success, <em>True</em> is returned. <strong>Note:</strong> The Bot API must receive an answer within 10 seconds after the pre-checkout query was sent.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>pre_checkout_query_id</td> +<td>String</td> +<td>Yes</td> +<td>Unique identifier for the query to be answered</td> +</tr> +<tr> +<td>ok</td> +<td>Boolean</td> +<td>Yes</td> +<td>Specify <em>True</em> if everything is alright (goods are available, etc.) and the bot is ready to proceed with the order. Use <em>False</em> if there are any problems.</td> +</tr> +<tr> +<td>error_message</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>ok</em> is <em>False</em>. Error message in human readable form that explains the reason for failure to proceed with the checkout (e.g. "Sorry, somebody just bought the last of our amazing black T-shirts while you were busy filling out your payment details. Please choose a different color or garment!"). Telegram will display this message to the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="labeledprice" href="#labeledprice"><i class="anchor-icon"></i></a>LabeledPrice</h4> +<p>This object represents a portion of the price for goods or services.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>label</td> +<td>String</td> +<td>Portion label</td> +</tr> +<tr> +<td>amount</td> +<td>Integer</td> +<td>Price of the product in the <em>smallest units</em> of the <a href="/bots/payments#supported-currencies">currency</a> (integer, <strong>not</strong> float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="invoice" href="#invoice"><i class="anchor-icon"></i></a>Invoice</h4> +<p>This object contains basic information about an invoice.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>title</td> +<td>String</td> +<td>Product name</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Product description</td> +</tr> +<tr> +<td>start_parameter</td> +<td>String</td> +<td>Unique bot deep-linking parameter that can be used to generate this invoice</td> +</tr> +<tr> +<td>currency</td> +<td>String</td> +<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td> +</tr> +<tr> +<td>total_amount</td> +<td>Integer</td> +<td>Total price in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="shippingaddress" href="#shippingaddress"><i class="anchor-icon"></i></a>ShippingAddress</h4> +<p>This object represents a shipping address.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>country_code</td> +<td>String</td> +<td>ISO 3166-1 alpha-2 country code</td> +</tr> +<tr> +<td>state</td> +<td>String</td> +<td>State, if applicable</td> +</tr> +<tr> +<td>city</td> +<td>String</td> +<td>City</td> +</tr> +<tr> +<td>street_line1</td> +<td>String</td> +<td>First line for the address</td> +</tr> +<tr> +<td>street_line2</td> +<td>String</td> +<td>Second line for the address</td> +</tr> +<tr> +<td>post_code</td> +<td>String</td> +<td>Address post code</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="orderinfo" href="#orderinfo"><i class="anchor-icon"></i></a>OrderInfo</h4> +<p>This object represents information about an order.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>name</td> +<td>String</td> +<td><em>Optional</em>. User name</td> +</tr> +<tr> +<td>phone_number</td> +<td>String</td> +<td><em>Optional</em>. User's phone number</td> +</tr> +<tr> +<td>email</td> +<td>String</td> +<td><em>Optional</em>. User email</td> +</tr> +<tr> +<td>shipping_address</td> +<td><a href="#shippingaddress">ShippingAddress</a></td> +<td><em>Optional</em>. User shipping address</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="shippingoption" href="#shippingoption"><i class="anchor-icon"></i></a>ShippingOption</h4> +<p>This object represents one shipping option.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Shipping option identifier</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Option title</td> +</tr> +<tr> +<td>prices</td> +<td>Array of <a href="#labeledprice">LabeledPrice</a></td> +<td>List of price portions</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="successfulpayment" href="#successfulpayment"><i class="anchor-icon"></i></a>SuccessfulPayment</h4> +<p>This object contains basic information about a successful payment.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>currency</td> +<td>String</td> +<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td> +</tr> +<tr> +<td>total_amount</td> +<td>Integer</td> +<td>Total price in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +</tr> +<tr> +<td>invoice_payload</td> +<td>String</td> +<td>Bot specified invoice payload</td> +</tr> +<tr> +<td>shipping_option_id</td> +<td>String</td> +<td><em>Optional</em>. Identifier of the shipping option chosen by the user</td> +</tr> +<tr> +<td>order_info</td> +<td><a href="#orderinfo">OrderInfo</a></td> +<td><em>Optional</em>. Order info provided by the user</td> +</tr> +<tr> +<td>telegram_payment_charge_id</td> +<td>String</td> +<td>Telegram payment identifier</td> +</tr> +<tr> +<td>provider_payment_charge_id</td> +<td>String</td> +<td>Provider payment identifier</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="shippingquery" href="#shippingquery"><i class="anchor-icon"></i></a>ShippingQuery</h4> +<p>This object contains information about an incoming shipping query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique query identifier</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>User who sent the query</td> +</tr> +<tr> +<td>invoice_payload</td> +<td>String</td> +<td>Bot specified invoice payload</td> +</tr> +<tr> +<td>shipping_address</td> +<td><a href="#shippingaddress">ShippingAddress</a></td> +<td>User specified shipping address</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="precheckoutquery" href="#precheckoutquery"><i class="anchor-icon"></i></a>PreCheckoutQuery</h4> +<p>This object contains information about an incoming pre-checkout query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique query identifier</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>User who sent the query</td> +</tr> +<tr> +<td>currency</td> +<td>String</td> +<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td> +</tr> +<tr> +<td>total_amount</td> +<td>Integer</td> +<td>Total price in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +</tr> +<tr> +<td>invoice_payload</td> +<td>String</td> +<td>Bot specified invoice payload</td> +</tr> +<tr> +<td>shipping_option_id</td> +<td>String</td> +<td><em>Optional</em>. Identifier of the shipping option chosen by the user</td> +</tr> +<tr> +<td>order_info</td> +<td><a href="#orderinfo">OrderInfo</a></td> +<td><em>Optional</em>. Order info provided by the user</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="telegram-passport" href="#telegram-passport"><i class="anchor-icon"></i></a>Telegram Passport</h3> +<p><strong>Telegram Passport</strong> is a unified authorization method for services that require personal identification. Users can upload their documents once, then instantly share their data with services that require real-world ID (finance, ICOs, etc.). Please see the <a href="/passport">manual</a> for details.</p> +<h4><a class="anchor" name="passportdata" href="#passportdata"><i class="anchor-icon"></i></a>PassportData</h4> +<p>Contains information about Telegram Passport data shared with the bot by the user.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>data</td> +<td>Array of <a href="#encryptedpassportelement">EncryptedPassportElement</a></td> +<td>Array with information about documents and other Telegram Passport elements that was shared with the bot</td> +</tr> +<tr> +<td>credentials</td> +<td><a href="#encryptedcredentials">EncryptedCredentials</a></td> +<td>Encrypted credentials required to decrypt the data</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportfile" href="#passportfile"><i class="anchor-icon"></i></a>PassportFile</h4> +<p>This object represents a file uploaded to Telegram Passport. Currently all Telegram Passport files are in JPEG format when decrypted and don't exceed 10MB.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td>File size in bytes</td> +</tr> +<tr> +<td>file_date</td> +<td>Integer</td> +<td>Unix time when the file was uploaded</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="encryptedpassportelement" href="#encryptedpassportelement"><i class="anchor-icon"></i></a>EncryptedPassportElement</h4> +<p>Contains information about documents or other Telegram Passport elements shared with the bot by the user.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Element type. One of “personal_details”, “passport”, “driver_license”, “identity_card”, “internal_passport”, “address”, “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration”, “temporary_registration”, “phone_number”, “email”.</td> +</tr> +<tr> +<td>data</td> +<td>String</td> +<td><em>Optional</em>. Base64-encoded encrypted Telegram Passport element data provided by the user, available for “personal_details”, “passport”, “driver_license”, “identity_card”, “internal_passport” and “address” types. Can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>phone_number</td> +<td>String</td> +<td><em>Optional</em>. User's verified phone number, available only for “phone_number” type</td> +</tr> +<tr> +<td>email</td> +<td>String</td> +<td><em>Optional</em>. User's verified email address, available only for “email” type</td> +</tr> +<tr> +<td>files</td> +<td>Array of <a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Array of encrypted files with documents provided by the user, available for “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration” and “temporary_registration” types. Files can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>front_side</td> +<td><a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Encrypted file with the front side of the document, provided by the user. Available for “passport”, “driver_license”, “identity_card” and “internal_passport”. The file can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>reverse_side</td> +<td><a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Encrypted file with the reverse side of the document, provided by the user. Available for “driver_license” and “identity_card”. The file can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>selfie</td> +<td><a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Encrypted file with the selfie of the user holding a document, provided by the user; available for “passport”, “driver_license”, “identity_card” and “internal_passport”. The file can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>translation</td> +<td>Array of <a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Array of encrypted files with translated versions of documents provided by the user. Available if requested for “passport”, “driver_license”, “identity_card”, “internal_passport”, “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration” and “temporary_registration” types. Files can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>hash</td> +<td>String</td> +<td>Base64-encoded element hash for using in <a href="#passportelementerrorunspecified">PassportElementErrorUnspecified</a></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="encryptedcredentials" href="#encryptedcredentials"><i class="anchor-icon"></i></a>EncryptedCredentials</h4> +<p>Contains data required for decrypting and authenticating <a href="#encryptedpassportelement">EncryptedPassportElement</a>. See the <a href="https://core.telegram.org/passport#receiving-information">Telegram Passport Documentation</a> for a complete description of the data decryption and authentication processes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>data</td> +<td>String</td> +<td>Base64-encoded encrypted JSON-serialized data with unique user's payload, data hashes and secrets required for <a href="#encryptedpassportelement">EncryptedPassportElement</a> decryption and authentication</td> +</tr> +<tr> +<td>hash</td> +<td>String</td> +<td>Base64-encoded data hash for data authentication</td> +</tr> +<tr> +<td>secret</td> +<td>String</td> +<td>Base64-encoded secret, encrypted with the bot's public RSA key, required for data decryption</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="setpassportdataerrors" href="#setpassportdataerrors"><i class="anchor-icon"></i></a>setPassportDataErrors</h4> +<p>Informs a user that some of the Telegram Passport elements they provided contains errors. The user will not be able to re-submit their Passport to you until the errors are fixed (the contents of the field for which you returned the error must change). Returns <em>True</em> on success.</p> +<p>Use this if the data submitted by the user doesn't satisfy the standards your service requires for any reason. For example, if a birthday date seems invalid, a submitted document is blurry, a scan shows evidence of tampering, etc. Supply some details in the error message to make sure the user knows how to correct the issues.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier</td> +</tr> +<tr> +<td>errors</td> +<td>Array of <a href="#passportelementerror">PassportElementError</a></td> +<td>Yes</td> +<td>A JSON-serialized array describing the errors</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportelementerror" href="#passportelementerror"><i class="anchor-icon"></i></a>PassportElementError</h4> +<p>This object represents an error in the Telegram Passport element which was submitted that should be resolved by the user. It should be one of:</p> +<ul> +<li><a href="#passportelementerrordatafield">PassportElementErrorDataField</a></li> +<li><a href="#passportelementerrorfrontside">PassportElementErrorFrontSide</a></li> +<li><a href="#passportelementerrorreverseside">PassportElementErrorReverseSide</a></li> +<li><a href="#passportelementerrorselfie">PassportElementErrorSelfie</a></li> +<li><a href="#passportelementerrorfile">PassportElementErrorFile</a></li> +<li><a href="#passportelementerrorfiles">PassportElementErrorFiles</a></li> +<li><a href="#passportelementerrortranslationfile">PassportElementErrorTranslationFile</a></li> +<li><a href="#passportelementerrortranslationfiles">PassportElementErrorTranslationFiles</a></li> +<li><a href="#passportelementerrorunspecified">PassportElementErrorUnspecified</a></li> +</ul> +<h4><a class="anchor" name="passportelementerrordatafield" href="#passportelementerrordatafield"><i class="anchor-icon"></i></a>PassportElementErrorDataField</h4> +<p>Represents an issue in one of the data fields that was provided by the user. The error is considered resolved when the field's value changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>data</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the error, one of “personal_details”, “passport”, “driver_license”, “identity_card”, “internal_passport”, “address”</td> +</tr> +<tr> +<td>field_name</td> +<td>String</td> +<td>Name of the data field which has the error</td> +</tr> +<tr> +<td>data_hash</td> +<td>String</td> +<td>Base64-encoded data hash</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportelementerrorfrontside" href="#passportelementerrorfrontside"><i class="anchor-icon"></i></a>PassportElementErrorFrontSide</h4> +<p>Represents an issue with the front side of a document. The error is considered resolved when the file with the front side of the document changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>front_side</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of “passport”, “driver_license”, “identity_card”, “internal_passport”</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded hash of the file with the front side of the document</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportelementerrorreverseside" href="#passportelementerrorreverseside"><i class="anchor-icon"></i></a>PassportElementErrorReverseSide</h4> +<p>Represents an issue with the reverse side of a document. The error is considered resolved when the file with reverse side of the document changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>reverse_side</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of “driver_license”, “identity_card”</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded hash of the file with the reverse side of the document</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportelementerrorselfie" href="#passportelementerrorselfie"><i class="anchor-icon"></i></a>PassportElementErrorSelfie</h4> +<p>Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>selfie</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of “passport”, “driver_license”, “identity_card”, “internal_passport”</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded hash of the file with the selfie</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportelementerrorfile" href="#passportelementerrorfile"><i class="anchor-icon"></i></a>PassportElementErrorFile</h4> +<p>Represents an issue with a document scan. The error is considered resolved when the file with the document scan changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>file</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration”, “temporary_registration”</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded file hash</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportelementerrorfiles" href="#passportelementerrorfiles"><i class="anchor-icon"></i></a>PassportElementErrorFiles</h4> +<p>Represents an issue with a list of scans. The error is considered resolved when the list of files containing the scans changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>files</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration”, “temporary_registration”</td> +</tr> +<tr> +<td>file_hashes</td> +<td>Array of String</td> +<td>List of base64-encoded file hashes</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportelementerrortranslationfile" href="#passportelementerrortranslationfile"><i class="anchor-icon"></i></a>PassportElementErrorTranslationFile</h4> +<p>Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>translation_file</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Type of element of the user's Telegram Passport which has the issue, one of “passport”, “driver_license”, “identity_card”, “internal_passport”, “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration”, “temporary_registration”</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded file hash</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportelementerrortranslationfiles" href="#passportelementerrortranslationfiles"><i class="anchor-icon"></i></a>PassportElementErrorTranslationFiles</h4> +<p>Represents an issue with the translated version of a document. The error is considered resolved when a file with the document translation change.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>translation_files</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Type of element of the user's Telegram Passport which has the issue, one of “passport”, “driver_license”, “identity_card”, “internal_passport”, “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration”, “temporary_registration”</td> +</tr> +<tr> +<td>file_hashes</td> +<td>Array of String</td> +<td>List of base64-encoded file hashes</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="passportelementerrorunspecified" href="#passportelementerrorunspecified"><i class="anchor-icon"></i></a>PassportElementErrorUnspecified</h4> +<p>Represents an issue in an unspecified place. The error is considered resolved when new data is added.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>unspecified</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Type of element of the user's Telegram Passport which has the issue</td> +</tr> +<tr> +<td>element_hash</td> +<td>String</td> +<td>Base64-encoded element hash</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="games" href="#games"><i class="anchor-icon"></i></a>Games</h3> +<p>Your bot can offer users <strong>HTML5 games</strong> to play solo or to compete against each other in groups and one-on-one chats. Create games via <a href="https://t.me/botfather">@BotFather</a> using the <em>/newgame</em> command. Please note that this kind of power requires responsibility: you will need to accept the terms for each game that your bots will be offering.</p> +<ul> +<li>Games are a new type of content on Telegram, represented by the <a href="#game">Game</a> and <a href="#inlinequeryresultgame">InlineQueryResultGame</a> objects.</li> +<li>Once you've created a game via <a href="https://t.me/botfather">BotFather</a>, you can send games to chats as regular messages using the <a href="#sendgame">sendGame</a> method, or use <a href="#inline-mode">inline mode</a> with <a href="#inlinequeryresultgame">InlineQueryResultGame</a>.</li> +<li>If you send the game message without any buttons, it will automatically have a 'Play <em>GameName</em>' button. When this button is pressed, your bot gets a <a href="#callbackquery">CallbackQuery</a> with the <em>game_short_name</em> of the requested game. You provide the correct URL for this particular user and the app opens the game in the in-app browser.</li> +<li>You can manually add multiple buttons to your game message. Please note that the first button in the first row <strong>must always</strong> launch the game, using the field <em>callback_game</em> in <a href="#inlinekeyboardbutton">InlineKeyboardButton</a>. You can add extra buttons according to taste: e.g., for a description of the rules, or to open the game's official community.</li> +<li>To make your game more attractive, you can upload a GIF animation that demostrates the game to the users via <a href="https://t.me/botfather">BotFather</a> (see <a href="https://t.me/gamebot?game=lumberjack">Lumberjack</a> for example).</li> +<li>A game message will also display high scores for the current chat. Use <a href="#setgamescore">setGameScore</a> to post high scores to the chat with the game, add the <em>edit_message</em> parameter to automatically update the message with the current scoreboard.</li> +<li>Use <a href="#getgamehighscores">getGameHighScores</a> to get data for in-game high score tables.</li> +<li>You can also add an extra <a href="/bots/games#sharing-your-game-to-telegram-chats">sharing button</a> for users to share their best score to different chats.</li> +<li>For examples of what can be done using this new stuff, check the <a href="https://t.me/gamebot">@gamebot</a> and <a href="https://t.me/gamee">@gamee</a> bots.</li> +</ul> +<h4><a class="anchor" name="sendgame" href="#sendgame"><i class="anchor-icon"></i></a>sendGame</h4> +<p>Use this method to send a game. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier for the target chat</td> +</tr> +<tr> +<td>game_short_name</td> +<td>String</td> +<td>Yes</td> +<td>Short name of the game, serves as the unique identifier for the game. Set up your games via <a href="https://t.me/botfather">Botfather</a>.</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>protect_content</td> +<td>Boolean</td> +<td>Optional</td> +<td>Protects the contents of the sent message from forwarding and saving</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>. If empty, one 'Play game_title' button will be shown. If not empty, the first button must launch the game.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="game" href="#game"><i class="anchor-icon"></i></a>Game</h4> +<p>This object represents a game. Use BotFather to create and edit games, their short names will act as unique identifiers.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>title</td> +<td>String</td> +<td>Title of the game</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Description of the game</td> +</tr> +<tr> +<td>photo</td> +<td>Array of <a href="#photosize">PhotoSize</a></td> +<td>Photo that will be displayed in the game message in chats.</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td><em>Optional</em>. Brief description of the game or high scores included in the game message. Can be automatically edited to include current high scores for the game when the bot calls <a href="#setgamescore">setGameScore</a>, or manually edited using <a href="#editmessagetext">editMessageText</a>. 0-4096 characters.</td> +</tr> +<tr> +<td>text_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. Special entities that appear in <em>text</em>, such as usernames, URLs, bot commands, etc.</td> +</tr> +<tr> +<td>animation</td> +<td><a href="#animation">Animation</a></td> +<td><em>Optional</em>. Animation that will be displayed in the game message in chats. Upload via <a href="https://t.me/botfather">BotFather</a></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="callbackgame" href="#callbackgame"><i class="anchor-icon"></i></a>CallbackGame</h4> +<p>A placeholder, currently holds no information. Use <a href="https://t.me/botfather">BotFather</a> to set up your game.</p> +<h4><a class="anchor" name="setgamescore" href="#setgamescore"><i class="anchor-icon"></i></a>setGameScore</h4> +<p>Use this method to set the score of the specified user in a game message. On success, if the message is not an inline message, the <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned. Returns an error, if the new score is not greater than the user's current score in the chat and <em>force</em> is <em>False</em>.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier</td> +</tr> +<tr> +<td>score</td> +<td>Integer</td> +<td>Yes</td> +<td>New score, must be non-negative</td> +</tr> +<tr> +<td>force</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters</td> +</tr> +<tr> +<td>disable_edit_message</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the game message should not be automatically edited to include the current scoreboard</td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the sent message</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="getgamehighscores" href="#getgamehighscores"><i class="anchor-icon"></i></a>getGameHighScores</h4> +<p>Use this method to get data for high score tables. Will return the score of the specified user and several of their neighbors in a game. On success, returns an <em>Array</em> of <a href="#gamehighscore">GameHighScore</a> objects.</p> +<blockquote> +<p>This method will currently return scores for the target user, plus two of their closest neighbors on each side. Will also return the top three users if the user and his neighbors are not among them. Please note that this behavior is subject to change.</p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Target user id</td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the sent message</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" name="gamehighscore" href="#gamehighscore"><i class="anchor-icon"></i></a>GameHighScore</h4> +<p>This object represents one row of the high scores table for a game.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>position</td> +<td>Integer</td> +<td>Position in high score table for the game</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>User</td> +</tr> +<tr> +<td>score</td> +<td>Integer</td> +<td>Score</td> +</tr> +</tbody> +</table> +<hr> +<p>And that's about all we've got for now.<br>If you've got any questions, please check out our <a href="/bots/faq"><strong>Bot FAQ »</strong></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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/bots/faq.html b/data/core.telegram.org/bots/faq.html new file mode 100644 index 0000000000..223b0a9eea --- /dev/null +++ b/data/core.telegram.org/bots/faq.html @@ -0,0 +1,243 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Bots FAQ</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="If you are new to Telegram bots, we recommend checking out our Introduction to Bots first. +You may also find the Bot API…"> + <meta property="og:title" content="Bots FAQ"> + <meta property="og:image" content="https://core.telegram.org/file/811140979/3/5p52TWl9X2o/5c6d684ee0d6a4399d"> + <meta property="og:description" content="If you are new to Telegram bots, we recommend checking out our Introduction to Bots first. +You may also find the Bot API…"> + <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?215" 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="/bots" >Telegram Bots</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/bots/faq" >Bots FAQ</a></li></ul></div> + <h1 id="dev_page_title">Bots FAQ</h1> + + <div id="dev_page_content"><blockquote> +<p>If you are new to Telegram bots, we recommend checking out our <a href="/bots"><strong>Introduction to Bots</strong></a> first.<br>You may also find the <strong><a href="/bots/api">Bot API Manual</a></strong> useful.</p> +</blockquote> +<p><div class="dev_page_nav_wrap"></p> +<p><a href="#general-questions"><strong>General</strong></a></p> +<ul> +<li><a href="#how-do-i-create-a-bot">How do I create a bot?</a></li> +<li><a href="#i-39m-a-developer-where-can-i-find-some-examples">Where can I get some code examples?</a></li> +<li><a href="#will-you-add-x-to-the-bot-api">I have a feature request!</a></li> +<li><a href="#what-messages-will-my-bot-get">What messages will my bot get?</a></li> +<li><a href="#why-doesn-39t-my-bot-see-messages-from-other-bots">Why doesn't my bot see messages from other bots?</a></li> +</ul> +<p><a href="#getting-updates"><strong>Getting Updates</strong></a></p> +<ul> +<li><a href="#how-do-i-get-updates">How do I get updates?</a></li> +<li><a href="#long-polling-gives-me-the-same-updates-again-and-again">Long polling problems</a></li> +<li><a href="#i-39m-having-problems-with-webhooks">Webhook problems</a></li> +<li><a href="#i-39m-having-trouble-with-my-self-signed-certificate">Using self-signed certificates</a></li> +<li><a href="#how-can-i-make-sure-that-webhook-requests-are-coming-from-telegr">How can I make sure webhook requests come from Telegram?</a></li> +</ul> +<p><a href="#handling-media"><strong>Handling Media</strong></a></p> +<ul> +<li><a href="#how-do-i-download-files">Downloading files</a></li> +<li><a href="#how-do-i-upload-a-large-file">Uploading large files</a></li> +<li><a href="#can-i-count-on-file-ids-to-be-persistent">Can I count of file_ids to be persistent?</a></li> +</ul> +<p><a href="#broadcasting-to-users"><strong>Broadcasting to Users</strong></a></p> +<ul> +<li><a href="#my-bot-is-hitting-limits-how-do-i-avoid-this">How do I avoid hitting limits?</a></li> +<li><a href="#how-can-i-message-all-of-my-bot-39s-subscribers-at-once">How do I message all my subscribers?</a><br></div></li> +</ul> +<hr> +<h3><a class="anchor" name="general-questions" href="#general-questions"><i class="anchor-icon"></i></a>General Questions</h3> +<h4><a class="anchor" name="how-do-i-create-a-bot" href="#how-do-i-create-a-bot"><i class="anchor-icon"></i></a>How do I create a bot?</h4> +<p>Creating Telegram bots is super-easy, but you will need at least some skills at computer programming. In order for a bot to work, set up a bot account with <a href="https://telegram.me/botfather">@BotFather</a>, then connect it to your backend server via our <a href="/bots/api">API</a>.</p> +<p>Unfortunately, there are no out-of-the-box ways to create a working bot if you are not a developer. But we're sure you'll soon find plenty of bots created by other people to play with.</p> +<h4><a class="anchor" name="i-39m-a-developer-where-can-i-find-some-examples" href="#i-39m-a-developer-where-can-i-find-some-examples"><i class="anchor-icon"></i></a>I'm a developer. Where can I find some examples?</h4> +<p>Here are two sample bots, both written in PHP:</p> +<ul> +<li><a href="/bots/samples/hellobot">Hello Bot</a> demonstrates the basics of the Telegram bot API.</li> +<li><a href="https://github.com/kolar/telegram-poll-bot">Simple Poll bot</a> is a more complete example, it supports both long-polling and Webhooks for updates.</li> +</ul> +<blockquote> +<p>Many members of our community are building bots and publishing sources.<br>We're collecting them on <a href="/bots/samples"><strong>this page »</strong></a></p> +</blockquote> +<p>Ping us on <a href="https://telegram.me/botsupport">@BotSupport</a> if you've built a bot and would like to share it with others.</p> +<h4><a class="anchor" name="will-you-add-x-to-the-bot-api" href="#will-you-add-x-to-the-bot-api"><i class="anchor-icon"></i></a>Will you add X to the Bot API?</h4> +<p>The bot API is still pretty young. There are many potential features to consider and implement. We'll be studying what people do with their bots for a while to see which directions will be most important for the platform.</p> +<p>All bot developers are welcome to share ideas for our Bot API with our <a href="https://telegram.me/botsupport"><strong>@BotSupport</strong></a> account.</p> +<h4><a class="anchor" name="what-messages-will-my-bot-get" href="#what-messages-will-my-bot-get"><i class="anchor-icon"></i></a>What messages will my bot get?</h4> +<p><strong>1.</strong> <strong>All bots</strong>, regardless of settings, will receive:</p> +<ul> +<li>All service messages.</li> +<li>All messages from private chats with users.</li> +<li>All messages from channels where they are a member.</li> +</ul> +<p><strong>2.</strong> <strong>Bot admins</strong> and bots with <a href="/bots#privacy-mode">privacy mode</a> <strong>disabled</strong> will receive all messages except messages sent by other bots.</p> +<p><strong>3.</strong> Bots with <a href="/bots#privacy-mode">privacy mode</a> <strong>enabled</strong> will receive:</p> +<ul> +<li>Commands explicitly meant for them (e.g., /command@this_bot).</li> +<li>General commands from users (e.g. /start) <strong>if</strong> the bot was the last bot to send a message to the group.</li> +<li>Messages sent <a href="/bots/api#inline-mode">via</a> this bot.</li> +<li>Replies to any messages implicitly or explicitly meant for this bot.</li> +</ul> +<p><strong>Note</strong> that each particular message can only be available to <strong>one</strong> privacy-enabled bot at a time, i.e., a reply to bot A containing an explicit command for bot B or sent via bot C will only be available to bot A. Replies have the highest priority.</p> +<h4><a class="anchor" name="why-doesn-39t-my-bot-see-messages-from-other-bots" href="#why-doesn-39t-my-bot-see-messages-from-other-bots"><i class="anchor-icon"></i></a>Why doesn't my bot see messages from other bots?</h4> +<p>Bots talking to each other could potentially get stuck in unwelcome loops. To avoid this, we decided that bots will not be able to see messages from other bots regardless of mode.</p> +<h3><a class="anchor" name="getting-updates" href="#getting-updates"><i class="anchor-icon"></i></a>Getting Updates</h3> +<h4><a class="anchor" name="how-do-i-get-updates" href="#how-do-i-get-updates"><i class="anchor-icon"></i></a>How do I get updates?</h4> +<p>There are currently two ways of getting updates. You can either use <a href="https://core.telegram.org/bots/api#getupdates">long polling</a> or <a href="https://core.telegram.org/bots/api#setwebhook">Webhooks</a>. Please note that it's <strong>not</strong> possible to get updates via long polling while an outgoing Webhook is set.</p> +<h4><a class="anchor" name="long-polling-gives-me-the-same-updates-again-and-again" href="#long-polling-gives-me-the-same-updates-again-and-again"><i class="anchor-icon"></i></a>Long polling gives me the same updates again and again!</h4> +<p>The <a href="/bots/api#getupdates">getUpdates</a> method returns the earliest 100 unconfirmed updates. To confirm an update, use the <em>offset</em> parameter when calling getUpdates like this:</p> +<pre><code>offset = update_id of last processed update + 1</code></pre> +<p>All updates with <em>update_id</em> less than or equal to <em>offset</em> will be marked as confirmed on the server and will no longer be returned.</p> +<h4><a class="anchor" name="i-39m-having-problems-with-webhooks" href="#i-39m-having-problems-with-webhooks"><i class="anchor-icon"></i></a>I'm having problems with Webhooks.</h4> +<p>If you've set up your webhook successfully, but are not getting any updates, please remember:</p> +<ul> +<li>You need a valid SSL certificate for webhooks to work.</li> +<li>To use a self-signed certificate, you need to upload your public key certificate using the <em>certificate</em> parameter in <a href="/bots/api#setwebhook">setWebhook</a>. Please upload as InputFile, sending a String will not work.</li> +<li>Ports currently supported for Webhooks: <strong>443</strong>, <strong>80</strong>, <strong>88</strong>, <strong>8443</strong>.</li> +<li>Wildcard certificates may not be supported.</li> +<li>Redirects are not supported.</li> +<li>CN must exactly match your domain.</li> +</ul> +<blockquote> +<p>Please check out this new <a href="/bots/webhooks"><strong>WEBHOOK GUIDE</strong></a> to learn all there is to know about webhooks!</p> +</blockquote> +<h4><a class="anchor" name="i-39m-having-trouble-with-my-self-signed-certificate" href="#i-39m-having-trouble-with-my-self-signed-certificate"><i class="anchor-icon"></i></a>I'm having trouble with my self-signed certificate!</h4> +<p>Please take a look at this <a href="/bots/self-signed">self-signed certificate guide</a> we made just for you. If you've read it and still have a question, ping us on botsupport.</p> +<h4><a class="anchor" name="how-can-i-make-sure-that-webhook-requests-are-coming-from-telegr" href="#how-can-i-make-sure-that-webhook-requests-are-coming-from-telegr"><i class="anchor-icon"></i></a>How can I make sure that Webhook requests are coming from Telegram?</h4> +<p>If you'd like to make sure that the Webhook request comes from Telegram, we recommend using a secret path in the URL you give us, e.g. www.example.com/your_token. Since nobody else knows your bot's token, you can be pretty sure it's us.</p> +<h4><a class="anchor" name="how-can-i-make-requests-in-response-to-updates" href="#how-can-i-make-requests-in-response-to-updates"><i class="anchor-icon"></i></a>How can I make requests in response to updates?</h4> +<p>This is possible if you're using webhooks. The upside is that you need less requests, the downside — that in this case it's not possible to know that such a request was successful or get its result. </p> +<p>Whenever you receive a webhook update, you have two options:</p> +<p><strong>1. Issue POST to https://api.telegram.org/bot<token>/method</strong></p> +<div> +<a href="/file/811140979/3/5p52TWl9X2o/5c6d684ee0d6a4399d" target="_blank"><img src="/file/811140979/3/5p52TWl9X2o/5c6d684ee0d6a4399d" title="Confirm and request" class="dev_page_image" style="width:500px;" /></a> +</div> + +<p><strong>2. Reply directly and give method as JSON payload in the reply</strong></p> +<div> + <a href="/file/811140266/2/vGxiVmENAos/6cffad00cbe72be7f2" target="_blank"><img src="/file/811140266/2/vGxiVmENAos/6cffad00cbe72be7f2" title="Reply with payload" class="dev_page_image" style="width:500px;" /></a></div> + +<blockquote> +<p>You may also want to look at our sample <a href="/bots/samples/hellobot">HelloBot</a>, it offers a PHP implementation of this.</p> +</blockquote> +<h3><a class="anchor" name="handling-media" href="#handling-media"><i class="anchor-icon"></i></a>Handling Media</h3> +<h4><a class="anchor" name="how-do-i-download-files" href="#how-do-i-download-files"><i class="anchor-icon"></i></a>How do I download files?</h4> +<p>Use the <a href="/bots/api#getfile">getFile</a> method. Please note that this will only work with files of up to 20 MB in size.</p> +<h4><a class="anchor" name="how-do-i-upload-a-large-file" href="#how-do-i-upload-a-large-file"><i class="anchor-icon"></i></a>How do I upload a large file?</h4> +<p>Bots can currently send files of any type of up to 50 MB in size, so yes, very large files won't work for now. Sorry. This limit may be changed in the future.</p> +<h4><a class="anchor" name="can-i-count-on-file-ids-to-be-persistent" href="#can-i-count-on-file-ids-to-be-persistent"><i class="anchor-icon"></i></a>Can I count on file_ids to be persistent?</h4> +<p>Yes, file_ids can be treated as persistent.</p> +<h3><a class="anchor" name="broadcasting-to-users" href="#broadcasting-to-users"><i class="anchor-icon"></i></a>Broadcasting to Users</h3> +<h4><a class="anchor" name="my-bot-is-hitting-limits-how-do-i-avoid-this" href="#my-bot-is-hitting-limits-how-do-i-avoid-this"><i class="anchor-icon"></i></a>My bot is hitting limits, how do I avoid this?</h4> +<p>When sending messages inside a particular chat, avoid sending more than one message per second. We may allow short bursts that go over this limit, but eventually you'll begin receiving 429 errors.</p> +<p>If you're sending bulk notifications to multiple users, the API will not allow more than 30 messages per second or so. Consider spreading out notifications over large intervals of 8—12 hours for best results.</p> +<p>Also note that your bot will not be able to send more than 20 messages per minute to the same group.</p> +<h4><a class="anchor" name="how-can-i-message-all-of-my-bot-39s-subscribers-at-once" href="#how-can-i-message-all-of-my-bot-39s-subscribers-at-once"><i class="anchor-icon"></i></a>How can I message all of my bot's subscribers at once?</h4> +<p>Unfortunately, at this moment we don't have methods for sending bulk messages, e.g. notifications. We may add something along these lines in the future.</p> +<p>In order to avoid hitting our limits when sending out mass notifications, consider spreading them over longer intervals, e.g. 8-12 hours. The API will not allow bulk notifications to more than ~30 users per second, if you go over that, you'll start getting 429 errors.</p> +<p>See also: <a href="#my-bot-is-hitting-limits-how-do-i-avoid-this">How to avoid hitting limits?</a></p> +<hr> +<blockquote> +<p>If you've got questions that are not answered on this page, ping us at <a href="https://telegram.me/botsupport">@BotSupport</a> in Telegram.<br>We welcome any suggestions for the Bot Platform and API.</p> +</blockquote> +</div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/bots/inline.html b/data/core.telegram.org/bots/inline.html new file mode 100644 index 0000000000..3bf2192115 --- /dev/null +++ b/data/core.telegram.org/bots/inline.html @@ -0,0 +1,182 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Inline Bots</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Inline bots: A new way to interact with bots and send bot-generated content to any chat, group or channel."> + <meta property="og:title" content="Inline Bots"> + <meta property="og:image" content="https://core.telegram.org/file/811140530/1/h-eMmPp2vp4/cd4a109f75e6561305"> + <meta property="og:description" content="Inline bots: A new way to interact with bots and send bot-generated content to any chat, group or channel."> + <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?215" 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="/bots" >Telegram Bots</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/bots/inline" >Inline Bots</a></li></ul></div> + <h1 id="dev_page_title">Inline Bots</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<div class="dev_side_image"> + <a href="/file/811140221/1/fW9vnLya4Fg/e2b5c530c7b0e019c4" target="_blank"><img src="/file/811140530/1/h-eMmPp2vp4/cd4a109f75e6561305" title="Inline bots. Click for hi-res picture"> +</a></div> + +<p>Beyond sending commands in private messages or groups, users can interact with your bot via <a href="/bots/api#inline-mode"><strong>inline queries</strong></a>. If inline queries are enabled, users can call your bot by typing its username and a query in the <strong>text input field</strong> in <strong>any</strong> chat. The query is sent to your bot in an update. This way, people can request content from your bot in <strong>any</strong> of their chats, groups, or channels without sending any messages at all.</p> +<div><center> + <a href="/file/811140995/1/I-wubuXAnzk/2e39739d0ac6bd5458" target="_blank"><img src="/file/811140995/1/I-wubuXAnzk/2e39739d0ac6bd5458" title="Users can type the bot’s username in any chat, then type a query without sending any messages" style="width:300px; padding:10px 0px 10px"/></a></center> +<br></div> + + +<p>To enable this option, send the <code>/setinline</code> command to <a href="https://telegram.me/botfather">@BotFather</a> and provide the placeholder text that the user will see in the input field after typing your bot’s name.</p> +<blockquote> +<p>See the <a href="/bots/api#inline-mode">Bot API Manual</a> for the relevant methods and objects.</p> +</blockquote> +<h3><a class="anchor" name="inline-results" href="#inline-results"><i class="anchor-icon"></i></a>Inline results</h3> +<p>Inline bots support <strong>all types of content</strong> available in Telegram (20 in all). They are capable of sending stickers, videos, music, locations, documents and more. </p> +<div><center> +<a href="/file/811140994/2/fvw-q_CRaBQ/c618325e119b0a8229" target="_blank"><img src="/file/811140994/2/fvw-q_CRaBQ/c618325e119b0a8229" title="All kinds of inline content" style="width: 295px; padding: 10px 20px;" /></a></center><br> +</div> + +<p>Clients can display the results with vertical or horizontal scrolling, depending on the type of content:</p> +<div><center> + + <a href="/file/811140049/2/M2mzqjZoiUw/2d872f0df2aed182d6" target="_blank"><img src="/file/811140049/2/M2mzqjZoiUw/2d872f0df2aed182d6" title="Vertical scrolling" style="width: 295px; padding: 0px 20px;" /></a> + +<a href="/file/811140592/2/P4-tFhmBsCg/57418af08f1a252d45" target="_blank"><img src="/file/811140592/2/P4-tFhmBsCg/57418af08f1a252d45" title="Horizontal scrolling" style="width: 295px; padding: 0px 20px;" /></a> + +</center> +<br></div> + +<p>As soon as the user taps on an item, it's immediately sent to the recipient, and the input field is cleared.</p> +<h3><a class="anchor" name="switching-inline-pm-modes" href="#switching-inline-pm-modes"><i class="anchor-icon"></i></a>Switching inline/PM modes</h3> +<p>Some inline bots can benefit from an initial setup process, like connecting them to an account on an external service (e.g., YouTube). We've added an easy way of switching between the private chat with a bot and whatever chat the user wants to share inline results in.</p> +<div><center> +<a href="/file/811140951/1/FD93gAgDVDI/8d8bdd16e6a7b40c12" target="_blank"><img src="/file/811140951/1/FD93gAgDVDI/8d8bdd16e6a7b40c12" title="Switch to PM button" style="width: 295px; padding: 10px 20px;" /></a></center><br> +</div> + +<p>You can display a special ‘Switch to PM’ button above the inline results (or instead of them). This button will open a private chat with the bot and pass a parameter of your choosing, so that you can prompt the user for the relevant setup actions. Once done, you can use an inline keyboard with a <a href="/bots/api#inlinekeyboardmarkup"><em>switch_inline_query</em></a> button to send the user back to the original chat. </p> +<p><strong>Sample bots</strong><br><a href="https://telegram.me/youtube">@youtube</a> – Shows a ‘Sign in to YouTube’ button, then suggests personalized results.</p> +<blockquote> +<p><a href="/bots/api#answerinlinequery">Manual: Switch to PM</a></p> +</blockquote> +<h3><a class="anchor" name="location-based-results" href="#location-based-results"><i class="anchor-icon"></i></a>Location-based results</h3> +<p>Inline bots can request location data from their users. Use the <code>/setinlinegeo</code> command with <a href="https://telegram.me/botfather">@BotFather</a> to enable this. Your bot will ask the user for permission to access their location whenever they send an inline request.</p> +<p><strong>Sample bot</strong><br><a href="https://telegram.me/foursquare">@foursquare</a> – This bot will ask for permission to access the user's location, then provide geo-targeted results.</p> +<h3><a class="anchor" name="spreading-virally" href="#spreading-virally"><i class="anchor-icon"></i></a>Spreading virally</h3> +<p>Messages sent with the help of your bot will show its username next to the sender's name.</p> +<div><center> + + <a href="/file/811140680/2/P3E5RVFzGZ8/5ae6f9c9610b0cbace" target="_blank"><img src="/file/811140680/2/P3E5RVFzGZ8/5ae6f9c9610b0cbace" title="Gif shared via a bot" style="width: 295px; padding: 0px 20px;" /></a> + <a href="/file/811140016/2/2b_B7nq9OQA/161b06d38843930fe5" target="_blank"><img src="/file/811140016/2/2b_B7nq9OQA/161b06d38843930fe5" title="Inline bot suggestions" style="width: 295px; padding: 0px 20px;" /></a> + + +<br><br></center></div> + +<p>When a user taps on the bot username in the message header, the mention is automatically inserted into the input field. Entering the <code>@</code> symbol in the input field brings up a list of suggestions, featuring recently used inline bots.</p> +<h4><a class="anchor" name="collecting-feedback" href="#collecting-feedback"><i class="anchor-icon"></i></a>Collecting feedback</h4> +<p>To know which of the provided results your users are sending to their chat partners, send <a href="https://telegram.me/botfather">@Botfather</a> the <code>/setinlinefeedback</code> command. With this enabled, you will receive updates on the results chosen by your users.</p> +<p>Please note that this can create load issues for popular bots – you may receive more results than actual requests due to caching (see the <em>cache_time</em> parameter in <a href="/bots/api#answerinlinequery">answerInlineQuery</a>). For these cases, we recommend adjusting the probability setting to receive 1/10, 1/100 or 1/1000 of the results.</p> +<h3><a class="anchor" name="inline-bot-samples" href="#inline-bot-samples"><i class="anchor-icon"></i></a>Inline bot samples</h3> +<p>Here are some sample inline bots, in case you’re curious to see one in action. Try any of these:<br><a href="https://telegram.me/gif">@gif</a> – GIF search<br><a href="https://telegram.me/vid">@vid</a> – Video search<br><a href="https://telegram.me/pic">@pic</a> – Yandex image search<br><a href="https://telegram.me/bing">@bing</a> – Bing image search<br><a href="https://telegram.me/wiki">@wiki</a> – Wikipedia search<br><a href="https://telegram.me/imdb">@imdb</a> – IMDB search<br><a href="https://telegram.me/bold">@bold</a> – Make bold, italic or fixed sys text</p> +<p><strong>NEW</strong><br><a href="https://telegram.me/youtube">@youtube</a> - Connect your account for personalized results<br><a href="https://telegram.me/music">@music</a> - Search and send classical music<br><a href="https://telegram.me/foursquare">@foursquare</a> – Find and send venue addresses<br><a href="https://telegram.me/sticker">@sticker</a> – Find and send stickers based on emoji</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/topPeerCategoryPeers.html b/data/core.telegram.org/constructor/account.chatThemes similarity index 85% rename from data/core.telegram.org/constructor/topPeerCategoryPeers.html rename to data/core.telegram.org/constructor/account.chatThemes index e1cbdf1a44..77eac280a5 100644 --- a/data/core.telegram.org/constructor/topPeerCategoryPeers.html +++ b/data/core.telegram.org/constructor/account.chatThemes @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>topPeerCategoryPeers</title> + <title>account.chatThemes</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Top peer category"> - <meta property="og:title" content="topPeerCategoryPeers"> + <meta property="description" content="Available chat themes"> + <meta property="og:title" content="account.chatThemes"> <meta property="og:image" content=""> - <meta property="og:description" content="Top peer category"> + <meta property="og:description" content="Available chat themes"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/topPeerCategoryPeers" >topPeerCategoryPeers</a></li></ul></div> - <h1 id="dev_page_title">topPeerCategoryPeers</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/account.chatThemes" >account.chatThemes</a></li></ul></div> + <h1 id="dev_page_title">account.chatThemes</h1> - <div id="dev_page_content"><p>Top peer category</p> + <div id="dev_page_content"><p>Available chat themes</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryPeers" class="current_page_link" >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><<a href="/type/TopPeer" >TopPeer</a>> = <a href="/type/TopPeerCategoryPeers" >TopPeerCategoryPeers</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/account.chatThemes" class="current_page_link" >account.chatThemes</a>#fe4cbebd hash:<a href="/type/int" >int</a> themes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChatTheme" >ChatTheme</a>> = <a href="/type/account.ChatThemes" >account.ChatThemes</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -64,24 +64,22 @@ </thead> <tbody> <tr> -<td><strong>category</strong></td> -<td style="text-align: center;"><a href="/type/TopPeerCategory">TopPeerCategory</a></td> -<td>Top peer category of peers</td> -</tr> -<tr> -<td><strong>count</strong></td> +<td><strong>hash</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Count of peers</td> +<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td> </tr> <tr> -<td><strong>peers</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/TopPeer">TopPeer</a>></td> -<td>Peers</td> +<td><strong>themes</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/ChatTheme">ChatTheme</a>></td> +<td>Available chat themes</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/TopPeerCategoryPeers">TopPeerCategoryPeers</a></p></div> +<p><a href="/type/account.ChatThemes">account.ChatThemes</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="#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> diff --git a/data/core.telegram.org/constructor/messages.messages b/data/core.telegram.org/constructor/account.privacyRules similarity index 87% rename from data/core.telegram.org/constructor/messages.messages rename to data/core.telegram.org/constructor/account.privacyRules index 9aec4d0344..46337ebbae 100644 --- a/data/core.telegram.org/constructor/messages.messages +++ b/data/core.telegram.org/constructor/account.privacyRules @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.messages</title> + <title>account.privacyRules</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Full list of messages with auxilary data."> - <meta property="og:title" content="messages.messages"> + <meta property="description" content="Privacy rules"> + <meta property="og:title" content="account.privacyRules"> <meta property="og:image" content=""> - <meta property="og:description" content="Full list of messages with auxilary data."> + <meta property="og:description" content="Privacy rules"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.messages" >messages.messages</a></li></ul></div> - <h1 id="dev_page_title">messages.messages</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/account.privacyRules" >account.privacyRules</a></li></ul></div> + <h1 id="dev_page_title">account.privacyRules</h1> - <div id="dev_page_content"><p>Full list of messages with auxilary data.</p> + <div id="dev_page_content"><p>Privacy rules</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.messages" class="current_page_link" >messages.messages</a>#8c718e87 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.Messages" >messages.Messages</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/account.privacyRules" class="current_page_link" >account.privacyRules</a>#50a04e45 rules:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PrivacyRule" >PrivacyRule</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/account.PrivacyRules" >account.PrivacyRules</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> @@ -64,24 +64,24 @@ </thead> <tbody> <tr> -<td><strong>messages</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Message">Message</a>></td> -<td>List of messages</td> +<td><strong>rules</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/PrivacyRule">PrivacyRule</a>></td> +<td>Privacy rules</td> </tr> <tr> <td><strong>chats</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> -<td>List of chats mentioned in dialogs</td> +<td>Chats to which the rules apply</td> </tr> <tr> <td><strong>users</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>List of users mentioned in messages and chats</td> +<td>Users to which the rules apply</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.Messages">messages.Messages</a></p></div> +<p><a href="/type/account.PrivacyRules">account.PrivacyRules</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/account.wallPapersNotModified b/data/core.telegram.org/constructor/account.wallPapersNotModified new file mode 100644 index 0000000000..47da3801ad --- /dev/null +++ b/data/core.telegram.org/constructor/account.wallPapersNotModified @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.wallPapersNotModified</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="No new wallpapers were found"> + <meta property="og:title" content="account.wallPapersNotModified"> + <meta property="og:image" content=""> + <meta property="og:description" content="No new wallpapers were found"> + <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?215" 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/account.wallPapersNotModified" >account.wallPapersNotModified</a></li></ul></div> + <h1 id="dev_page_title">account.wallPapersNotModified</h1> + + <div id="dev_page_content"><p>No new wallpapers were found</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/account.wallPapersNotModified" class="current_page_link" >account.wallPapersNotModified</a>#1c199183 = <a href="/type/account.WallPapers" >account.WallPapers</a>;</code></pre></p> +<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<p>This constructor does not require any parameters.</p> +<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/account.WallPapers">account.WallPapers</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/auth.codeTypeFlashCall b/data/core.telegram.org/constructor/auth.codeTypeFlashCall new file mode 100644 index 0000000000..9a3b9150f6 --- /dev/null +++ b/data/core.telegram.org/constructor/auth.codeTypeFlashCall @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.codeTypeFlashCall</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Type of verification code that will be sent next if you call the resendCode method: SMS code"> + <meta property="og:title" content="auth.codeTypeFlashCall"> + <meta property="og:image" content=""> + <meta property="og:description" content="Type of verification code that will be sent next if you call the resendCode method: SMS code"> + <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?215" 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/auth.codeTypeFlashCall" >auth.codeTypeFlashCall</a></li></ul></div> + <h1 id="dev_page_title">auth.codeTypeFlashCall</h1> + + <div id="dev_page_content"><p>Type of verification code that will be sent next if you call the resendCode method: SMS 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.codeTypeFlashCall" class="current_page_link" >auth.codeTypeFlashCall</a>#226ccefb = <a href="/type/auth.CodeType" >auth.CodeType</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/auth.CodeType">auth.CodeType</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/botCommandScopePeerUser.html b/data/core.telegram.org/constructor/botCommandScopePeerUser.html new file mode 100644 index 0000000000..b9e1f1945f --- /dev/null +++ b/data/core.telegram.org/constructor/botCommandScopePeerUser.html @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>botCommandScopePeerUser</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="The specified bot commands will be valid only for a specific user in the specified group or supergroup."> + <meta property="og:title" content="botCommandScopePeerUser"> + <meta property="og:image" content=""> + <meta property="og:description" content="The specified bot commands will be valid only for a specific user in the specified group or supergroup."> + <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?215" 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/botCommandScopePeerUser" >botCommandScopePeerUser</a></li></ul></div> + <h1 id="dev_page_title">botCommandScopePeerUser</h1> + + <div id="dev_page_content"><p>The specified bot commands will be valid only for a specific user in the specified <a href="/api/channel">group or supergroup</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/botCommandScopePeerUser" class="current_page_link" >botCommandScopePeerUser</a>#a1321f3 peer:<a href="/type/InputPeer" >InputPeer</a> user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/BotCommandScope" >BotCommandScope</a>;</code></pre></p> +<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th style="text-align: center;">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>The chat</td> +</tr> +<tr> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> +<td>The user</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/BotCommandScope">BotCommandScope</a></p> +<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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/botInlineMessageMediaGeo.html b/data/core.telegram.org/constructor/botInlineMessageMediaAuto.html similarity index 79% rename from data/corefork.telegram.org/constructor/botInlineMessageMediaGeo.html rename to data/core.telegram.org/constructor/botInlineMessageMediaAuto.html index f2f045f3a7..fafae10d6a 100644 --- a/data/corefork.telegram.org/constructor/botInlineMessageMediaGeo.html +++ b/data/core.telegram.org/constructor/botInlineMessageMediaAuto.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>botInlineMessageMediaGeo</title> + <title>botInlineMessageMediaAuto</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Send a geolocation"> - <meta property="og:title" content="botInlineMessageMediaGeo"> + <meta property="description" content="Send whatever media is attached to the botInlineMediaResult"> + <meta property="og:title" content="botInlineMessageMediaAuto"> <meta property="og:image" content=""> - <meta property="og:description" content="Send a geolocation"> + <meta property="og:description" content="Send whatever media is attached to the botInlineMediaResult"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/botInlineMessageMediaGeo" >botInlineMessageMediaGeo</a></li></ul></div> - <h1 id="dev_page_title">botInlineMessageMediaGeo</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/botInlineMessageMediaAuto" >botInlineMessageMediaAuto</a></li></ul></div> + <h1 id="dev_page_title">botInlineMessageMediaAuto</h1> - <div id="dev_page_content"><p>Send a geolocation</p> + <div id="dev_page_content"><p>Send whatever media is attached to the <a href="/constructor/botInlineMediaResult">botInlineMediaResult</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/botInlineMessageMediaGeo" class="current_page_link" >botInlineMessageMediaGeo</a>#51846fd flags:<a href="/type/%23" >#</a> geo:<a href="/type/GeoPoint" >GeoPoint</a> heading:flags.0?<a href="/type/int" >int</a> period:flags.1?<a href="/type/int" >int</a> proximity_notification_radius:flags.3?<a href="/type/int" >int</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" >BotInlineMessage</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/botInlineMessageMediaAuto" class="current_page_link" >botInlineMessageMediaAuto</a>#764cf810 flags:<a href="/type/%23" >#</a> message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" >BotInlineMessage</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> @@ -69,24 +69,14 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>geo</strong></td> -<td style="text-align: center;"><a href="/type/GeoPoint">GeoPoint</a></td> -<td>Geolocation</td> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Caption</td> </tr> <tr> -<td><strong>heading</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>For <a href="/api/live-location">live locations</a>, a direction in which the location moves, in degrees; 1-360.</td> -</tr> -<tr> -<td><strong>period</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>Validity period</td> -</tr> -<tr> -<td><strong>proximity_notification_radius</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/int">int</a></td> -<td>For <a href="/api/live-location">live locations</a>, a maximum distance to another chat member for proximity alerts, in meters (0-100000).</td> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td><a href="/api/entities">Message entities for styled text</a></td> </tr> <tr> <td><strong>reply_markup</strong></td> @@ -98,8 +88,10 @@ <h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> <p><a href="/type/BotInlineMessage">BotInlineMessage</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="#live-geolocation" id="live-geolocation" name="live-geolocation"><i class="anchor-icon"></i></a><a href="/api/live-location">Live geolocation</a></h4> -<p>Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert.</p></div> +<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#botinlinemediaresult" id="botinlinemediaresult" name="botinlinemediaresult"><i class="anchor-icon"></i></a><a href="/constructor/botInlineMediaResult">botInlineMediaResult</a></h4> +<p>Media result</p></div> </div> @@ -138,9 +130,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -157,7 +149,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/constructor/account.sentEmailCode b/data/core.telegram.org/constructor/cdnPublicKey.html similarity index 86% rename from data/core.telegram.org/constructor/account.sentEmailCode rename to data/core.telegram.org/constructor/cdnPublicKey.html index 9827a5cb18..d6eaa0e16a 100644 --- a/data/core.telegram.org/constructor/account.sentEmailCode +++ b/data/core.telegram.org/constructor/cdnPublicKey.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>account.sentEmailCode</title> + <title>cdnPublicKey</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="The sent email code"> - <meta property="og:title" content="account.sentEmailCode"> + <meta property="description" content="Public key to use only during handshakes to CDN DCs."> + <meta property="og:title" content="cdnPublicKey"> <meta property="og:image" content=""> - <meta property="og:description" content="The sent email code"> + <meta property="og:description" content="Public key to use only during handshakes to CDN DCs."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/account.sentEmailCode" >account.sentEmailCode</a></li></ul></div> - <h1 id="dev_page_title">account.sentEmailCode</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/cdnPublicKey" >cdnPublicKey</a></li></ul></div> + <h1 id="dev_page_title">cdnPublicKey</h1> - <div id="dev_page_content"><p>The sent email code</p> + <div id="dev_page_content"><p>Public key to use <strong>only</strong> during handshakes to <a href="/cdn">CDN</a> DCs.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/account.sentEmailCode" class="current_page_link" >account.sentEmailCode</a>#811f854f email_pattern:<a href="/type/string" >string</a> length:<a href="/type/int" >int</a> = <a href="/type/account.SentEmailCode" >account.SentEmailCode</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/cdnPublicKey" class="current_page_link" >cdnPublicKey</a>#c982eaba dc_id:<a href="/type/int" >int</a> public_key:<a href="/type/string" >string</a> = <a href="/type/CdnPublicKey" >CdnPublicKey</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> @@ -64,22 +64,21 @@ </thead> <tbody> <tr> -<td><strong>email_pattern</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>The email (to which the code was sent) must match this <a href="/api/pattern">pattern</a></td> +<td><strong>dc_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/cdn">CDN DC</a> ID</td> </tr> <tr> -<td><strong>length</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>The length of the verification code</td> +<td><strong>public_key</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>RSA public key</td> </tr> </tbody> </table> <h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> -<p><a href="/type/account.SentEmailCode">account.SentEmailCode</a></p> +<p><a href="/type/CdnPublicKey">CdnPublicKey</a></p> <h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3> -<h4><a class="anchor" href="#pattern-matching" id="pattern-matching" name="pattern-matching"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern matching</a></h4> -<p>Some methods require the client to verify if the data obtained from an external source matches a certain pattern.</p></div> +<h4><a class="anchor" href="#encrypted-cdns-for-speed-and-security" id="encrypted-cdns-for-speed-and-security" name="encrypted-cdns-for-speed-and-security"><i class="anchor-icon"></i></a><a href="/cdn">Encrypted CDNs for Speed and Security</a></h4></div> </div> diff --git a/data/core.telegram.org/constructor/channel.html b/data/core.telegram.org/constructor/channel.html new file mode 100644 index 0000000000..73ec97d243 --- /dev/null +++ b/data/core.telegram.org/constructor/channel.html @@ -0,0 +1,289 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>channel</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Channel/supergroup info"> + <meta property="og:title" content="channel"> + <meta property="og:image" content=""> + <meta property="og:description" content="Channel/supergroup 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?215" 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/channel" >channel</a></li></ul></div> + <h1 id="dev_page_title">channel</h1> + + <div id="dev_page_content"><p>Channel/supergroup info</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/channel" class="current_page_link" >channel</a>#8261ac61 flags:<a href="/type/%23" >#</a> creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true id:<a href="/type/long" >long</a> access_hash:flags.13?<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> username:flags.6?<a href="/type/string" >string</a> photo:<a href="/type/ChatPhoto" >ChatPhoto</a> date:<a href="/type/int" >int</a> restriction_reason:flags.9?<a href="/type/Vector%20t" >Vector</a><<a href="/type/RestrictionReason" >RestrictionReason</a>> admin_rights:flags.14?<a href="/type/ChatAdminRights" >ChatAdminRights</a> banned_rights:flags.15?<a href="/type/ChatBannedRights" >ChatBannedRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights" >ChatBannedRights</a> participants_count:flags.17?<a href="/type/int" >int</a> = <a href="/type/Chat" >Chat</a>;</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>creator</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 the current user is the creator of this channel</td> +</tr> +<tr> +<td><strong>left</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>Whether the current user has left this channel</td> +</tr> +<tr> +<td><strong>broadcast</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>Is this a channel?</td> +</tr> +<tr> +<td><strong>verified</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>Is this channel verified by telegram?</td> +</tr> +<tr> +<td><strong>megagroup</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>Is this a supergroup?</td> +</tr> +<tr> +<td><strong>restricted</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>Whether viewing/writing in this channel for a reason (see <code>restriction_reason</code></td> +</tr> +<tr> +<td><strong>signatures</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>Whether signatures are enabled (channels)</td> +</tr> +<tr> +<td><strong>min</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>See <a href="/api/min">min</a></td> +</tr> +<tr> +<td><strong>scam</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.19?<a href="/constructor/true">true</a></td> +<td>This channel/supergroup is probably a scam</td> +</tr> +<tr> +<td><strong>has_link</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.20?<a href="/constructor/true">true</a></td> +<td>Whether this channel has a private join link</td> +</tr> +<tr> +<td><strong>has_geo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.21?<a href="/constructor/true">true</a></td> +<td>Whether this chanel has a geoposition</td> +</tr> +<tr> +<td><strong>slowmode_enabled</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.22?<a href="/constructor/true">true</a></td> +<td>Whether slow mode is enabled for groups to prevent flood in chat</td> +</tr> +<tr> +<td><strong>call_active</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.23?<a href="/constructor/true">true</a></td> +<td>Whether a group call or livestream is currently active</td> +</tr> +<tr> +<td><strong>call_not_empty</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.24?<a href="/constructor/true">true</a></td> +<td>Whether there's anyone in the group call or livestream</td> +</tr> +<tr> +<td><strong>fake</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/constructor/true">true</a></td> +<td>If set, this <a href="/api/channel">supergroup/channel</a> was reported by many users as a fake or scam: be careful when interacting with it.</td> +</tr> +<tr> +<td><strong>gigagroup</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.26?<a href="/constructor/true">true</a></td> +<td>Whether this <a href="/api/channel">supergroup</a> is a gigagroup</td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>ID of the channel</td> +</tr> +<tr> +<td><strong>access_hash</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.13?<a href="/type/long">long</a></td> +<td>Access hash</td> +</tr> +<tr> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Title</td> +</tr> +<tr> +<td><strong>username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/string">string</a></td> +<td>Username</td> +</tr> +<tr> +<td><strong>photo</strong></td> +<td style="text-align: center;"><a href="/type/ChatPhoto">ChatPhoto</a></td> +<td>Profile photo</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Date when the user joined the supergroup/channel, or if the user isn't a member, its creation date</td> +</tr> +<tr> +<td><strong>restriction_reason</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.9?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>></td> +<td>Contains the reason why access to this channel must be restricted.</td> +</tr> +<tr> +<td><strong>admin_rights</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/ChatAdminRights">ChatAdminRights</a></td> +<td>Admin rights of the user in this channel (see <a href="/api/rights">rights</a>)</td> +</tr> +<tr> +<td><strong>banned_rights</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.15?<a href="/type/ChatBannedRights">ChatBannedRights</a></td> +<td>Banned rights of the user in this channel (see <a href="/api/rights">rights</a>)</td> +</tr> +<tr> +<td><strong>default_banned_rights</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.18?<a href="/type/ChatBannedRights">ChatBannedRights</a></td> +<td>Default chat rights (see <a href="/api/rights">rights</a>)</td> +</tr> +<tr> +<td><strong>participants_count</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.17?<a href="/type/int">int</a></td> +<td>Participant count</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/Chat">Chat</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="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.</p> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#admin-banned-default-rights" id="admin-banned-default-rights" name="admin-banned-default-rights"><i class="anchor-icon"></i></a><a href="/api/rights">Admin, banned, default rights</a></h4> +<p>How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputChatPhoto.html b/data/core.telegram.org/constructor/channelAdminLogEventActionDeleteMessage.html similarity index 88% rename from data/core.telegram.org/constructor/inputChatPhoto.html rename to data/core.telegram.org/constructor/channelAdminLogEventActionDeleteMessage.html index 6b4d04dc66..374aec1406 100644 --- a/data/core.telegram.org/constructor/inputChatPhoto.html +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionDeleteMessage.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputChatPhoto</title> + <title>channelAdminLogEventActionDeleteMessage</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Existing photo to be set as a chat profile photo."> - <meta property="og:title" content="inputChatPhoto"> + <meta property="description" content="A message was deleted"> + <meta property="og:title" content="channelAdminLogEventActionDeleteMessage"> <meta property="og:image" content=""> - <meta property="og:description" content="Existing photo to be set as a chat profile photo."> + <meta property="og:description" content="A message was deleted"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputChatPhoto" >inputChatPhoto</a></li></ul></div> - <h1 id="dev_page_title">inputChatPhoto</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventActionDeleteMessage" >channelAdminLogEventActionDeleteMessage</a></li></ul></div> + <h1 id="dev_page_title">channelAdminLogEventActionDeleteMessage</h1> - <div id="dev_page_content"><p>Existing photo to be set as a chat profile photo.</p> + <div id="dev_page_content"><p>A message was deleted</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputChatPhoto" class="current_page_link" >inputChatPhoto</a>#8953ad37 id:<a href="/type/InputPhoto" >InputPhoto</a> = <a href="/type/InputChatPhoto" >InputChatPhoto</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionDeleteMessage" class="current_page_link" >channelAdminLogEventActionDeleteMessage</a>#42e047bb message:<a href="/type/Message" >Message</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -64,14 +64,14 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/InputPhoto">InputPhoto</a></td> -<td>Existing photo</td> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/Message">Message</a></td> +<td>The message that was deleted</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/InputChatPhoto">InputChatPhoto</a></p></div> +<p><a href="/type/ChannelAdminLogEventAction">ChannelAdminLogEventAction</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantVolume.html b/data/core.telegram.org/constructor/channelAdminLogEventActionDiscardGroupCall.html similarity index 88% rename from data/core.telegram.org/constructor/channelAdminLogEventActionParticipantVolume.html rename to data/core.telegram.org/constructor/channelAdminLogEventActionDiscardGroupCall.html index dd5da9c53b..6eb96f8f9e 100644 --- a/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantVolume.html +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionDiscardGroupCall.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>channelAdminLogEventActionParticipantVolume</title> + <title>channelAdminLogEventActionDiscardGroupCall</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="channelAdminLogEvent.user_id has set the volume of participant.peer to participant.volume"> - <meta property="og:title" content="channelAdminLogEventActionParticipantVolume"> + <meta property="description" content="A group call was terminated"> + <meta property="og:title" content="channelAdminLogEventActionDiscardGroupCall"> <meta property="og:image" content=""> - <meta property="og:description" content="channelAdminLogEvent.user_id has set the volume of participant.peer to participant.volume"> + <meta property="og:description" content="A group call was terminated"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/channelAdminLogEventActionParticipantVolume" >channelAdminLogEventActionParticipantVolume</a></li></ul></div> - <h1 id="dev_page_title">channelAdminLogEventActionParticipantVolume</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelAdminLogEventActionDiscardGroupCall" >channelAdminLogEventActionDiscardGroupCall</a></li></ul></div> + <h1 id="dev_page_title">channelAdminLogEventActionDiscardGroupCall</h1> - <div id="dev_page_content"><p>channelAdminLogEvent.user_id has set the volume of participant.peer to participant.volume</p> + <div id="dev_page_content"><p>A group call was terminated</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionParticipantVolume" class="current_page_link" >channelAdminLogEventActionParticipantVolume</a>#3e7f6847 participant:<a href="/type/GroupCallParticipant" >GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionDiscardGroupCall" class="current_page_link" >channelAdminLogEventActionDiscardGroupCall</a>#db9f9140 call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -64,9 +64,9 @@ </thead> <tbody> <tr> -<td><strong>participant</strong></td> -<td style="text-align: center;"><a href="/type/GroupCallParticipant">GroupCallParticipant</a></td> -<td>The participant whose volume was changed</td> +<td><strong>call</strong></td> +<td style="text-align: center;"><a href="/type/InputGroupCall">InputGroupCall</a></td> +<td>The group call that was terminated</td> </tr> </tbody> </table> diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantJoinByInvite.html b/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantJoinByInvite.html new file mode 100644 index 0000000000..f37e737a11 --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantJoinByInvite.html @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>channelAdminLogEventActionParticipantJoinByInvite</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="A user joined the supergroup/channel using a specific invite link"> + <meta property="og:title" content="channelAdminLogEventActionParticipantJoinByInvite"> + <meta property="og:image" content=""> + <meta property="og:description" content="A user joined the supergroup/channel using a specific invite link"> + <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?215" 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/channelAdminLogEventActionParticipantJoinByInvite" >channelAdminLogEventActionParticipantJoinByInvite</a></li></ul></div> + <h1 id="dev_page_title">channelAdminLogEventActionParticipantJoinByInvite</h1> + + <div id="dev_page_content"><p>A user joined the <a href="/api/channel">supergroup/channel</a> using a specific invite link</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/channelAdminLogEventActionParticipantJoinByInvite" class="current_page_link" >channelAdminLogEventActionParticipantJoinByInvite</a>#5cdada77 invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>;</code></pre></p> +<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th style="text-align: center;">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>invite</strong></td> +<td style="text-align: center;"><a href="/type/ExportedChatInvite">ExportedChatInvite</a></td> +<td>The invite link used to join the <a href="/api/channel">supergroup/channel</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/ChannelAdminLogEventAction">ChannelAdminLogEventAction</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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/messageActionChannelCreate.html b/data/core.telegram.org/constructor/channelParticipantsSearch.html similarity index 90% rename from data/core.telegram.org/constructor/messageActionChannelCreate.html rename to data/core.telegram.org/constructor/channelParticipantsSearch.html index 027debd35c..543589d2d9 100644 --- a/data/core.telegram.org/constructor/messageActionChannelCreate.html +++ b/data/core.telegram.org/constructor/channelParticipantsSearch.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messageActionChannelCreate</title> + <title>channelParticipantsSearch</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="The channel was created"> - <meta property="og:title" content="messageActionChannelCreate"> + <meta property="description" content="Query participants by name"> + <meta property="og:title" content="channelParticipantsSearch"> <meta property="og:image" content=""> - <meta property="og:description" content="The channel was created"> + <meta property="og:description" content="Query participants by name"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/messageActionChannelCreate" >messageActionChannelCreate</a></li></ul></div> - <h1 id="dev_page_title">messageActionChannelCreate</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/channelParticipantsSearch" >channelParticipantsSearch</a></li></ul></div> + <h1 id="dev_page_title">channelParticipantsSearch</h1> - <div id="dev_page_content"><p>The channel was created</p> + <div id="dev_page_content"><p>Query participants by name</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messageActionChannelCreate" class="current_page_link" >messageActionChannelCreate</a>#95d2ac92 title:<a href="/type/string" >string</a> = <a href="/type/MessageAction" >MessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/channelParticipantsSearch" class="current_page_link" >channelParticipantsSearch</a>#656ac4b q:<a href="/type/string" >string</a> = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</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> @@ -64,14 +64,14 @@ </thead> <tbody> <tr> -<td><strong>title</strong></td> +<td><strong>q</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Original channel/supergroup title</td> +<td>Search query</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/MessageAction">MessageAction</a></p></div> +<p><a href="/type/ChannelParticipantsFilter">ChannelParticipantsFilter</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/chatBannedRights.html b/data/core.telegram.org/constructor/chatBannedRights.html new file mode 100644 index 0000000000..c211ebffd1 --- /dev/null +++ b/data/core.telegram.org/constructor/chatBannedRights.html @@ -0,0 +1,216 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>chatBannedRights</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Represents the rights of a normal user in a supergroup/channel/chat. In this case, the flags are inverted: if set, a flag does not allow a user to do X."> + <meta property="og:title" content="chatBannedRights"> + <meta property="og:image" content=""> + <meta property="og:description" content="Represents the rights of a normal user in a supergroup/channel/chat. In this case, the flags are inverted: if set, a flag does not allow a user to do X."> + <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?215" 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/chatBannedRights" >chatBannedRights</a></li></ul></div> + <h1 id="dev_page_title">chatBannedRights</h1> + + <div id="dev_page_content"><p>Represents the rights of a normal user in a <a href="/api/channel">supergroup/channel/chat</a>. In this case, the flags are inverted: if set, a flag <strong>does not allow</strong> a user to do X.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/chatBannedRights" class="current_page_link" >chatBannedRights</a>#9f120418 flags:<a href="/type/%23" >#</a> view_messages:flags.0?true send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true invite_users:flags.15?true pin_messages:flags.17?true until_date:<a href="/type/int" >int</a> = <a href="/type/ChatBannedRights" >ChatBannedRights</a>;</code></pre></p> +<h3><a class="anchor" name="parameters" href="#parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th align="center">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>flags</strong></td> +<td 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>view_messages</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to view messages in a <a href="/api/channel">supergroup/channel/chat</a></td> +</tr> +<tr> +<td><strong>send_messages</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send messages in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_media</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send any media in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_stickers</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send stickers in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_gifs</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send gifs in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_games</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send games in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_inline</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to use inline bots in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>embed_links</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to embed links in the messages of a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_polls</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send polls in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>change_info</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/constructor/true">true</a></td> +<td>If set, does not allow any user to change the description of a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>invite_users</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.15?<a href="/constructor/true">true</a></td> +<td>If set, does not allow any user to invite users in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>pin_messages</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.17?<a href="/constructor/true">true</a></td> +<td>If set, does not allow any user to pin messages in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>until_date</strong></td> +<td align="center"><a href="/type/int">int</a></td> +<td>Validity of said permissions (it is considered forever any value less then 30 seconds or more then 366 days).</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="type" href="#type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/ChatBannedRights">ChatBannedRights</a></p> +<h3><a class="anchor" name="related-pages" href="#related-pages"><i class="anchor-icon"></i></a>Related pages</h3> +<h4><a class="anchor" name="channels" href="#channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/messages.sentEncryptedFile b/data/core.telegram.org/constructor/chatInvitePeek.html similarity index 87% rename from data/core.telegram.org/constructor/messages.sentEncryptedFile rename to data/core.telegram.org/constructor/chatInvitePeek.html index 5cd6e151c7..bf275ef208 100644 --- a/data/core.telegram.org/constructor/messages.sentEncryptedFile +++ b/data/core.telegram.org/constructor/chatInvitePeek.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.sentEncryptedFile</title> + <title>chatInvitePeek</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Message with a file enclosure sent to a protected chat"> - <meta property="og:title" content="messages.sentEncryptedFile"> + <meta property="description" content="A chat invitation that also allows peeking into the group to read messages without joining it."> + <meta property="og:title" content="chatInvitePeek"> <meta property="og:image" content=""> - <meta property="og:description" content="Message with a file enclosure sent to a protected chat"> + <meta property="og:description" content="A chat invitation that also allows peeking into the group to read messages without joining it."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.sentEncryptedFile" >messages.sentEncryptedFile</a></li></ul></div> - <h1 id="dev_page_title">messages.sentEncryptedFile</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/chatInvitePeek" >chatInvitePeek</a></li></ul></div> + <h1 id="dev_page_title">chatInvitePeek</h1> - <div id="dev_page_content"><p>Message with a file enclosure sent to a protected chat</p> + <div id="dev_page_content"><p>A chat invitation that also allows peeking into the group to read messages without joining it.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.sentEncryptedFile" class="current_page_link" >messages.sentEncryptedFile</a>#9493ff32 date:<a href="/type/int" >int</a> file:<a href="/type/EncryptedFile" >EncryptedFile</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/chatInvitePeek" class="current_page_link" >chatInvitePeek</a>#61695cb0 chat:<a href="/type/Chat" >Chat</a> expires:<a href="/type/int" >int</a> = <a href="/type/ChatInvite" >ChatInvite</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> @@ -64,19 +64,19 @@ </thead> <tbody> <tr> -<td><strong>date</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Sending date</td> +<td><strong>chat</strong></td> +<td style="text-align: center;"><a href="/type/Chat">Chat</a></td> +<td>Chat information</td> </tr> <tr> -<td><strong>file</strong></td> -<td style="text-align: center;"><a href="/type/EncryptedFile">EncryptedFile</a></td> -<td>Attached file</td> +<td><strong>expires</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Read-only anonymous access to this group will be revoked at this date</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.SentEncryptedMessage">messages.SentEncryptedMessage</a></p></div> +<p><a href="/type/ChatInvite">ChatInvite</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/config.html b/data/core.telegram.org/constructor/config.html new file mode 100644 index 0000000000..8ff611def8 --- /dev/null +++ b/data/core.telegram.org/constructor/config.html @@ -0,0 +1,420 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>config</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Current configuration"> + <meta property="og:title" content="config"> + <meta property="og:image" content=""> + <meta property="og:description" content="Current configuration"> + <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?215" 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/config" >config</a></li></ul></div> + <h1 id="dev_page_title">config</h1> + + <div id="dev_page_content"><p>Current configuration</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/config" class="current_page_link" >config</a>#330b4067 flags:<a href="/type/%23" >#</a> phonecalls_enabled:flags.1?true default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true ignore_phone_entities:flags.5?true revoke_pm_inbox:flags.6?true blocked_mode:flags.8?true pfs_enabled:flags.13?true date:<a href="/type/int" >int</a> expires:<a href="/type/int" >int</a> test_mode:<a href="/type/Bool" >Bool</a> this_dc:<a href="/type/int" >int</a> dc_options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DcOption" >DcOption</a>> dc_txt_domain_name:<a href="/type/string" >string</a> chat_size_max:<a href="/type/int" >int</a> megagroup_size_max:<a href="/type/int" >int</a> forwarded_count_max:<a href="/type/int" >int</a> online_update_period_ms:<a href="/type/int" >int</a> offline_blur_timeout_ms:<a href="/type/int" >int</a> offline_idle_timeout_ms:<a href="/type/int" >int</a> online_cloud_timeout_ms:<a href="/type/int" >int</a> notify_cloud_delay_ms:<a href="/type/int" >int</a> notify_default_delay_ms:<a href="/type/int" >int</a> push_chat_period_ms:<a href="/type/int" >int</a> push_chat_limit:<a href="/type/int" >int</a> saved_gifs_limit:<a href="/type/int" >int</a> edit_time_limit:<a href="/type/int" >int</a> revoke_time_limit:<a href="/type/int" >int</a> revoke_pm_time_limit:<a href="/type/int" >int</a> rating_e_decay:<a href="/type/int" >int</a> stickers_recent_limit:<a href="/type/int" >int</a> stickers_faved_limit:<a href="/type/int" >int</a> channels_read_media_period:<a href="/type/int" >int</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> pinned_dialogs_count_max:<a href="/type/int" >int</a> pinned_infolder_count_max:<a href="/type/int" >int</a> call_receive_timeout_ms:<a href="/type/int" >int</a> call_ring_timeout_ms:<a href="/type/int" >int</a> call_connect_timeout_ms:<a href="/type/int" >int</a> call_packet_timeout_ms:<a href="/type/int" >int</a> me_url_prefix:<a href="/type/string" >string</a> autoupdate_url_prefix:flags.7?<a href="/type/string" >string</a> gif_search_username:flags.9?<a href="/type/string" >string</a> venue_search_username:flags.10?<a href="/type/string" >string</a> img_search_username:flags.11?<a href="/type/string" >string</a> static_maps_provider:flags.12?<a href="/type/string" >string</a> caption_length_max:<a href="/type/int" >int</a> message_length_max:<a href="/type/int" >int</a> webfile_dc_id:<a href="/type/int" >int</a> suggested_lang_code:flags.2?<a href="/type/string" >string</a> lang_pack_version:flags.2?<a href="/type/int" >int</a> base_lang_pack_version:flags.2?<a href="/type/int" >int</a> = <a href="/type/Config" >Config</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>phonecalls_enabled</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>Whether phone calls can be used</td> +</tr> +<tr> +<td><strong>default_p2p_contacts</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>Whether the client should use P2P by default for phone calls with contacts</td> +</tr> +<tr> +<td><strong>preload_featured_stickers</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>Whether the client should preload featured stickers</td> +</tr> +<tr> +<td><strong>ignore_phone_entities</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>Whether the client should ignore phone <a href="/api/entities">entities</a></td> +</tr> +<tr> +<td><strong>revoke_pm_inbox</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>Whether incoming private messages can be deleted for both participants</td> +</tr> +<tr> +<td><strong>blocked_mode</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>Indicates that telegram is <em>probably</em> censored by governments/ISPs in the current region</td> +</tr> +<tr> +<td><strong>pfs_enabled</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>Whether <a href="/api/pfs">pfs</a> was used</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Current date at the server</td> +</tr> +<tr> +<td><strong>expires</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Expiration date of this config: when it expires it'll have to be refetched using <a href="/method/help.getConfig">help.getConfig</a></td> +</tr> +<tr> +<td><strong>test_mode</strong></td> +<td style="text-align: center;"><a href="/type/Bool">Bool</a></td> +<td>Whether we're connected to the test DCs</td> +</tr> +<tr> +<td><strong>this_dc</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>ID of the DC that returned the reply</td> +</tr> +<tr> +<td><strong>dc_options</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/DcOption">DcOption</a>></td> +<td>DC IP list</td> +</tr> +<tr> +<td><strong>dc_txt_domain_name</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Domain name for fetching encrypted DC list from DNS TXT record</td> +</tr> +<tr> +<td><strong>chat_size_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum member count for normal <a href="/api/channel">groups</a></td> +</tr> +<tr> +<td><strong>megagroup_size_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum member count for <a href="/api/channel">supergroups</a></td> +</tr> +<tr> +<td><strong>forwarded_count_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum number of messages that can be forwarded at once using <a href="/method/messages.forwardMessages">messages.forwardMessages</a>.</td> +</tr> +<tr> +<td><strong>online_update_period_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The client should <a href="/method/account.updateStatus">update its online status</a> every N milliseconds</td> +</tr> +<tr> +<td><strong>offline_blur_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Delay before offline status needs to be sent to the server</td> +</tr> +<tr> +<td><strong>offline_idle_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Time without any user activity after which it should be treated offline</td> +</tr> +<tr> +<td><strong>online_cloud_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If we are offline, but were online from some other client in last <code>online_cloud_timeout_ms</code> milliseconds after we had gone offline, then delay offline notification for <code>notify_cloud_delay_ms</code> milliseconds.</td> +</tr> +<tr> +<td><strong>notify_cloud_delay_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If we are offline, but online from some other client then delay sending the offline notification for <code>notify_cloud_delay_ms</code> milliseconds.</td> +</tr> +<tr> +<td><strong>notify_default_delay_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If some other client is online, then delay notification for <code>notification_default_delay_ms</code> milliseconds</td> +</tr> +<tr> +<td><strong>push_chat_period_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Not for client use</td> +</tr> +<tr> +<td><strong>push_chat_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Not for client use</td> +</tr> +<tr> +<td><strong>saved_gifs_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum count of saved gifs</td> +</tr> +<tr> +<td><strong>edit_time_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Only messages with age smaller than the one specified can be edited</td> +</tr> +<tr> +<td><strong>revoke_time_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Only channel/supergroup messages with age smaller than the specified can be deleted</td> +</tr> +<tr> +<td><strong>revoke_pm_time_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Only private messages with age smaller than the specified can be deleted</td> +</tr> +<tr> +<td><strong>rating_e_decay</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Exponential decay rate for computing <a href="/api/top-rating">top peer rating</a></td> +</tr> +<tr> +<td><strong>stickers_recent_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum number of recent stickers</td> +</tr> +<tr> +<td><strong>stickers_faved_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum number of faved stickers</td> +</tr> +<tr> +<td><strong>channels_read_media_period</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Indicates that round videos (video notes) and voice messages sent in channels and older than the specified period must be marked as read</td> +</tr> +<tr> +<td><strong>tmp_sessions</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>Temporary <a href="/passport">passport</a> sessions</td> +</tr> +<tr> +<td><strong>pinned_dialogs_count_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum count of pinned dialogs</td> +</tr> +<tr> +<td><strong>pinned_infolder_count_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum count of dialogs per folder</td> +</tr> +<tr> +<td><strong>call_receive_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum allowed outgoing ring time in VoIP calls: if the user we're calling doesn't reply within the specified time (in milliseconds), we should hang up the call</td> +</tr> +<tr> +<td><strong>call_ring_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum allowed incoming ring time in VoIP calls: if the current user doesn't reply within the specified time (in milliseconds), the call will be automatically refused</td> +</tr> +<tr> +<td><strong>call_connect_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>VoIP connection timeout: if the instance of libtgvoip on the other side of the call doesn't connect to our instance of libtgvoip within the specified time (in milliseconds), the call must be aborted</td> +</tr> +<tr> +<td><strong>call_packet_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If during a VoIP call a packet isn't received for the specified period of time, the call must be aborted</td> +</tr> +<tr> +<td><strong>me_url_prefix</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The domain to use to parse in-app links.<br>For example t.me indicates that t.me/username links should parsed to @username, t.me/addsticker/name should be parsed to the appropriate stickerset and so on...</td> +</tr> +<tr> +<td><strong>autoupdate_url_prefix</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/type/string">string</a></td> +<td>URL to use to auto-update the current app</td> +</tr> +<tr> +<td><strong>gif_search_username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.9?<a href="/type/string">string</a></td> +<td>Username of the bot to use to search for GIFs</td> +</tr> +<tr> +<td><strong>venue_search_username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/string">string</a></td> +<td>Username of the bot to use to search for venues</td> +</tr> +<tr> +<td><strong>img_search_username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/type/string">string</a></td> +<td>Username of the bot to use for image search</td> +</tr> +<tr> +<td><strong>static_maps_provider</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.12?<a href="/type/string">string</a></td> +<td>ID of the map provider to use for venues</td> +</tr> +<tr> +<td><strong>caption_length_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum length of caption (length in utf8 codepoints)</td> +</tr> +<tr> +<td><strong>message_length_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum length of messages (length in utf8 codepoints)</td> +</tr> +<tr> +<td><strong>webfile_dc_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>DC ID to use to download <a href="/api/files">webfiles</a></td> +</tr> +<tr> +<td><strong>suggested_lang_code</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td> +<td>Suggested language code</td> +</tr> +<tr> +<td><strong>lang_pack_version</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> +<td>Language pack version</td> +</tr> +<tr> +<td><strong>base_lang_pack_version</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> +<td>Basic language pack version</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/Config">Config</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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a><a href="/api/pfs">Perfect Forward Secrecy</a></h4> +<p>Binding temporary authorization key to permanent ones.</p> +<h4><a class="anchor" href="#helpgetconfig" id="helpgetconfig" name="helpgetconfig"><i class="anchor-icon"></i></a><a href="/method/help.getConfig">help.getConfig</a></h4> +<p>Returns current configuration, including data center configuration.</p> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#messagesforwardmessages" id="messagesforwardmessages" name="messagesforwardmessages"><i class="anchor-icon"></i></a><a href="/method/messages.forwardMessages">messages.forwardMessages</a></h4> +<p>Forwards messages by their IDs.</p> +<h4><a class="anchor" href="#accountupdatestatus" id="accountupdatestatus" name="accountupdatestatus"><i class="anchor-icon"></i></a><a href="/method/account.updateStatus">account.updateStatus</a></h4> +<p>Updates online user status.</p> +<h4><a class="anchor" href="#top-peer-rating" id="top-peer-rating" name="top-peer-rating"><i class="anchor-icon"></i></a><a href="/api/top-rating">Top peer rating</a></h4> +<p>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).</p> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4> +<h4><a class="anchor" href="#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></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/contacts.topPeersNotModified b/data/core.telegram.org/constructor/contacts.topPeersNotModified new file mode 100644 index 0000000000..1e6a36f955 --- /dev/null +++ b/data/core.telegram.org/constructor/contacts.topPeersNotModified @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>contacts.topPeersNotModified</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Top peer info hasn't changed"> + <meta property="og:title" content="contacts.topPeersNotModified"> + <meta property="og:image" content=""> + <meta property="og:description" content="Top peer info hasn't changed"> + <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?215" 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/contacts.topPeersNotModified" >contacts.topPeersNotModified</a></li></ul></div> + <h1 id="dev_page_title">contacts.topPeersNotModified</h1> + + <div id="dev_page_content"><p>Top peer info hasn't changed</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/contacts.topPeersNotModified" class="current_page_link" >contacts.topPeersNotModified</a>#de266ef5 = <a href="/type/contacts.TopPeers" >contacts.TopPeers</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/contacts.TopPeers">contacts.TopPeers</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/dialog.html b/data/core.telegram.org/constructor/dialog.html new file mode 100644 index 0000000000..5b957328f0 --- /dev/null +++ b/data/core.telegram.org/constructor/dialog.html @@ -0,0 +1,214 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>dialog</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Chat"> + <meta property="og:title" content="dialog"> + <meta property="og:image" content=""> + <meta property="og:description" content="Chat"> + <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?215" 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/dialog" >dialog</a></li></ul></div> + <h1 id="dev_page_title">dialog</h1> + + <div id="dev_page_content"><p>Chat</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/dialog" class="current_page_link" >dialog</a>#2c171f72 flags:<a href="/type/%23" >#</a> pinned:flags.2?true unread_mark:flags.3?true peer:<a href="/type/Peer" >Peer</a> top_message:<a href="/type/int" >int</a> read_inbox_max_id:<a href="/type/int" >int</a> read_outbox_max_id:<a href="/type/int" >int</a> unread_count:<a href="/type/int" >int</a> unread_mentions_count:<a href="/type/int" >int</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> pts:flags.0?<a href="/type/int" >int</a> draft:flags.1?<a href="/type/DraftMessage" >DraftMessage</a> folder_id:flags.4?<a href="/type/int" >int</a> = <a href="/type/Dialog" >Dialog</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>pinned</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>Is the dialog pinned</td> +</tr> +<tr> +<td><strong>unread_mark</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>Whether the chat was manually marked as unread</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> +<td>The chat</td> +</tr> +<tr> +<td><strong>top_message</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The latest message ID</td> +</tr> +<tr> +<td><strong>read_inbox_max_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Position up to which all incoming messages are read.</td> +</tr> +<tr> +<td><strong>read_outbox_max_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Position up to which all outgoing messages are read.</td> +</tr> +<tr> +<td><strong>unread_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of unread messages</td> +</tr> +<tr> +<td><strong>unread_mentions_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of <a href="/api/mentions">unread mentions</a></td> +</tr> +<tr> +<td><strong>notify_settings</strong></td> +<td style="text-align: center;"><a href="/type/PeerNotifySettings">PeerNotifySettings</a></td> +<td>Notification settings</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><a href="/api/updates">PTS</a></td> +</tr> +<tr> +<td><strong>draft</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/DraftMessage">DraftMessage</a></td> +<td>Message draft</td> +</tr> +<tr> +<td><strong>folder_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/int">int</a></td> +<td><a href="/api/folders#peer-folders">Peer folder ID, for more info click here</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/Dialog">Dialog</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="#mentions" id="mentions" name="mentions"><i class="anchor-icon"></i></a><a href="/api/mentions">Mentions</a></h4> +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p> +<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> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/dialogFolder.html b/data/core.telegram.org/constructor/dialogFolder.html new file mode 100644 index 0000000000..772045e45a --- /dev/null +++ b/data/core.telegram.org/constructor/dialogFolder.html @@ -0,0 +1,187 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>dialogFolder</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Dialog in folder"> + <meta property="og:title" content="dialogFolder"> + <meta property="og:image" content=""> + <meta property="og:description" content="Dialog in folder"> + <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?215" 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/dialogFolder" >dialogFolder</a></li></ul></div> + <h1 id="dev_page_title">dialogFolder</h1> + + <div id="dev_page_content"><p>Dialog in folder</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/dialogFolder" class="current_page_link" >dialogFolder</a>#71bd134c flags:<a href="/type/%23" >#</a> pinned:flags.2?true folder:<a href="/type/Folder" >Folder</a> peer:<a href="/type/Peer" >Peer</a> top_message:<a href="/type/int" >int</a> unread_muted_peers_count:<a href="/type/int" >int</a> unread_unmuted_peers_count:<a href="/type/int" >int</a> unread_muted_messages_count:<a href="/type/int" >int</a> unread_unmuted_messages_count:<a href="/type/int" >int</a> = <a href="/type/Dialog" >Dialog</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>pinned</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>Is this folder pinned</td> +</tr> +<tr> +<td><strong>folder</strong></td> +<td style="text-align: center;"><a href="/type/Folder">Folder</a></td> +<td>The folder</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> +<td>Peer in folder</td> +</tr> +<tr> +<td><strong>top_message</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Latest message ID of dialog</td> +</tr> +<tr> +<td><strong>unread_muted_peers_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of unread muted peers in folder</td> +</tr> +<tr> +<td><strong>unread_unmuted_peers_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of unread unmuted peers in folder</td> +</tr> +<tr> +<td><strong>unread_muted_messages_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of unread messages from muted peers in folder</td> +</tr> +<tr> +<td><strong>unread_unmuted_messages_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of unread messages from unmuted peers in folder</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/Dialog">Dialog</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/documentAttributeSticker.html b/data/core.telegram.org/constructor/documentAttributeSticker.html new file mode 100644 index 0000000000..681385d0c7 --- /dev/null +++ b/data/core.telegram.org/constructor/documentAttributeSticker.html @@ -0,0 +1,167 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>documentAttributeSticker</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Defines a sticker"> + <meta property="og:title" content="documentAttributeSticker"> + <meta property="og:image" content=""> + <meta property="og:description" content="Defines a sticker"> + <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?215" 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/documentAttributeSticker" >documentAttributeSticker</a></li></ul></div> + <h1 id="dev_page_title">documentAttributeSticker</h1> + + <div id="dev_page_content"><p>Defines a sticker</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/documentAttributeSticker" class="current_page_link" >documentAttributeSticker</a>#6319d612 flags:<a href="/type/%23" >#</a> mask:flags.1?true alt:<a href="/type/string" >string</a> stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> mask_coords:flags.0?<a href="/type/MaskCoords" >MaskCoords</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</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>mask</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>Whether this is a mask sticker</td> +</tr> +<tr> +<td><strong>alt</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Alternative emoji representation of sticker</td> +</tr> +<tr> +<td><strong>stickerset</strong></td> +<td style="text-align: center;"><a href="/type/InputStickerSet">InputStickerSet</a></td> +<td>Associated stickerset</td> +</tr> +<tr> +<td><strong>mask_coords</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/MaskCoords">MaskCoords</a></td> +<td>Mask coordinates (if this is a mask sticker, attached to a photo)</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/DocumentAttribute">DocumentAttribute</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/documentAttributeVideo.html b/data/core.telegram.org/constructor/documentAttributeVideo.html new file mode 100644 index 0000000000..63a0e30596 --- /dev/null +++ b/data/core.telegram.org/constructor/documentAttributeVideo.html @@ -0,0 +1,172 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>documentAttributeVideo</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Defines a video"> + <meta property="og:title" content="documentAttributeVideo"> + <meta property="og:image" content=""> + <meta property="og:description" content="Defines a video"> + <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?215" 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/documentAttributeVideo" >documentAttributeVideo</a></li></ul></div> + <h1 id="dev_page_title">documentAttributeVideo</h1> + + <div id="dev_page_content"><p>Defines a video</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/documentAttributeVideo" class="current_page_link" >documentAttributeVideo</a>#ef02ce6 flags:<a href="/type/%23" >#</a> round_message:flags.0?true supports_streaming:flags.1?true duration:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</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>round_message</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 this is a round video</td> +</tr> +<tr> +<td><strong>supports_streaming</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>Whether the video supports streaming</td> +</tr> +<tr> +<td><strong>duration</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Duration in seconds</td> +</tr> +<tr> +<td><strong>w</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Video width</td> +</tr> +<tr> +<td><strong>h</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Video height</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/DocumentAttribute">DocumentAttribute</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/encryptedFileEmpty.html b/data/core.telegram.org/constructor/geoPointEmpty.html similarity index 92% rename from data/core.telegram.org/constructor/encryptedFileEmpty.html rename to data/core.telegram.org/constructor/geoPointEmpty.html index 2ac4199e2a..281c782f30 100644 --- a/data/core.telegram.org/constructor/encryptedFileEmpty.html +++ b/data/core.telegram.org/constructor/geoPointEmpty.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>encryptedFileEmpty</title> + <title>geoPointEmpty</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Empty constructor, unexisitng file."> - <meta property="og:title" content="encryptedFileEmpty"> + <meta property="description" content="Empty constructor."> + <meta property="og:title" content="geoPointEmpty"> <meta property="og:image" content=""> - <meta property="og:description" content="Empty constructor, unexisitng file."> + <meta property="og:description" content="Empty constructor."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/encryptedFileEmpty" >encryptedFileEmpty</a></li></ul></div> - <h1 id="dev_page_title">encryptedFileEmpty</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/geoPointEmpty" >geoPointEmpty</a></li></ul></div> + <h1 id="dev_page_title">geoPointEmpty</h1> - <div id="dev_page_content"><p>Empty constructor, unexisitng file.</p> + <div id="dev_page_content"><p>Empty constructor.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/encryptedFileEmpty" class="current_page_link" >encryptedFileEmpty</a>#c21f497e = <a href="/type/EncryptedFile" >EncryptedFile</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/geoPointEmpty" class="current_page_link" >geoPointEmpty</a>#1117dd5f = <a href="/type/GeoPoint" >GeoPoint</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/EncryptedFile">EncryptedFile</a></p></div> +<p><a href="/type/GeoPoint">GeoPoint</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/chatParticipant.html b/data/core.telegram.org/constructor/groupCallDiscarded.html similarity index 89% rename from data/core.telegram.org/constructor/chatParticipant.html rename to data/core.telegram.org/constructor/groupCallDiscarded.html index 10418304e6..757f4b716e 100644 --- a/data/core.telegram.org/constructor/chatParticipant.html +++ b/data/core.telegram.org/constructor/groupCallDiscarded.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>chatParticipant</title> + <title>groupCallDiscarded</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Group member."> - <meta property="og:title" content="chatParticipant"> + <meta property="description" content="An ended group call"> + <meta property="og:title" content="groupCallDiscarded"> <meta property="og:image" content=""> - <meta property="og:description" content="Group member."> + <meta property="og:description" content="An ended group call"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/chatParticipant" >chatParticipant</a></li></ul></div> - <h1 id="dev_page_title">chatParticipant</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/groupCallDiscarded" >groupCallDiscarded</a></li></ul></div> + <h1 id="dev_page_title">groupCallDiscarded</h1> - <div id="dev_page_content"><p>Group member.</p> + <div id="dev_page_content"><p>An ended group call</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/chatParticipant" class="current_page_link" >chatParticipant</a>#c02d4007 user_id:<a href="/type/long" >long</a> inviter_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/ChatParticipant" >ChatParticipant</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/groupCallDiscarded" class="current_page_link" >groupCallDiscarded</a>#7780bcb4 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> duration:<a href="/type/int" >int</a> = <a href="/type/GroupCall" >GroupCall</a>;</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> @@ -64,24 +64,24 @@ </thead> <tbody> <tr> -<td><strong>user_id</strong></td> +<td><strong>id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Member user ID</td> +<td>Group call ID</td> </tr> <tr> -<td><strong>inviter_id</strong></td> +<td><strong>access_hash</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>ID of the user that added the member to the group</td> +<td>Group call access hash</td> </tr> <tr> -<td><strong>date</strong></td> +<td><strong>duration</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Date added to the group</td> +<td>Group call duration</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/ChatParticipant">ChatParticipant</a></p></div> +<p><a href="/type/GroupCall">GroupCall</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/help.countryCode b/data/core.telegram.org/constructor/help.countryCode new file mode 100644 index 0000000000..2626e3dcf4 --- /dev/null +++ b/data/core.telegram.org/constructor/help.countryCode @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.countryCode</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Country code and phone number pattern of a specific country"> + <meta property="og:title" content="help.countryCode"> + <meta property="og:image" content=""> + <meta property="og:description" content="Country code and phone number pattern of a specific country"> + <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?215" 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/help.countryCode" >help.countryCode</a></li></ul></div> + <h1 id="dev_page_title">help.countryCode</h1> + + <div id="dev_page_content"><p>Country code and phone number pattern of a specific country</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.countryCode" class="current_page_link" >help.countryCode</a>#4203c5ef flags:<a href="/type/%23" >#</a> country_code:<a href="/type/string" >string</a> prefixes:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> patterns:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> = <a href="/type/help.CountryCode" >help.CountryCode</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>country_code</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>ISO country code</td> +</tr> +<tr> +<td><strong>prefixes</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/string">string</a>></td> +<td>Possible phone prefixes</td> +</tr> +<tr> +<td><strong>patterns</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/Vector%20t">Vector</a><<a href="/type/string">string</a>></td> +<td>Phone patterns: for example, <code>XXX XXX XXX</code></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/help.CountryCode">help.CountryCode</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/help.inviteText b/data/core.telegram.org/constructor/help.inviteText new file mode 100644 index 0000000000..fa8c38459a --- /dev/null +++ b/data/core.telegram.org/constructor/help.inviteText @@ -0,0 +1,147 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.inviteText</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Text of a text message with an invitation to install Telegram."> + <meta property="og:title" content="help.inviteText"> + <meta property="og:image" content=""> + <meta property="og:description" content="Text of a text message with an invitation to install Telegram."> + <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?215" 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/help.inviteText" >help.inviteText</a></li></ul></div> + <h1 id="dev_page_title">help.inviteText</h1> + + <div id="dev_page_content"><p>Text of a text message with an invitation to install Telegram.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.inviteText" class="current_page_link" >help.inviteText</a>#18cb9f78 message:<a href="/type/string" >string</a> = <a href="/type/help.InviteText" >help.InviteText</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>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Text of the message</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/help.InviteText">help.InviteText</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/help.termsOfServiceUpdateEmpty b/data/core.telegram.org/constructor/help.termsOfServiceUpdateEmpty new file mode 100644 index 0000000000..9e7c7a5816 --- /dev/null +++ b/data/core.telegram.org/constructor/help.termsOfServiceUpdateEmpty @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.termsOfServiceUpdateEmpty</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="No changes were made to telegram's terms of service"> + <meta property="og:title" content="help.termsOfServiceUpdateEmpty"> + <meta property="og:image" content=""> + <meta property="og:description" content="No changes were made to telegram's terms of service"> + <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?215" 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/help.termsOfServiceUpdateEmpty" >help.termsOfServiceUpdateEmpty</a></li></ul></div> + <h1 id="dev_page_title">help.termsOfServiceUpdateEmpty</h1> + + <div id="dev_page_content"><p>No changes were made to telegram's terms of service</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.termsOfServiceUpdateEmpty" class="current_page_link" >help.termsOfServiceUpdateEmpty</a>#e3309f7f expires:<a href="/type/int" >int</a> = <a href="/type/help.TermsOfServiceUpdate" >help.TermsOfServiceUpdate</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>expires</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>New TOS updates will have to be queried using <a href="/method/help.getTermsOfServiceUpdate">help.getTermsOfServiceUpdate</a> in <code>expires</code> seconds</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/help.TermsOfServiceUpdate">help.TermsOfServiceUpdate</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="#helpgettermsofserviceupdate" id="helpgettermsofserviceupdate" name="helpgettermsofserviceupdate"><i class="anchor-icon"></i></a><a href="/method/help.getTermsOfServiceUpdate">help.getTermsOfServiceUpdate</a></h4> +<p>Look for updates of telegram's terms of service</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/updateBotInlineSend.html b/data/core.telegram.org/constructor/inputBotInlineMessageMediaInvoice.html similarity index 77% rename from data/core.telegram.org/constructor/updateBotInlineSend.html rename to data/core.telegram.org/constructor/inputBotInlineMessageMediaInvoice.html index ec465d9961..da702cb351 100644 --- a/data/core.telegram.org/constructor/updateBotInlineSend.html +++ b/data/core.telegram.org/constructor/inputBotInlineMessageMediaInvoice.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updateBotInlineSend</title> + <title>inputBotInlineMessageMediaInvoice</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="The result of an inline query that was chosen by a user and sent to their chat partner. Please see our documentation on the feedback collecting for details on how to enable these updates for your bot."> - <meta property="og:title" content="updateBotInlineSend"> + <meta property="description" content="An invoice"> + <meta property="og:title" content="inputBotInlineMessageMediaInvoice"> <meta property="og:image" content=""> - <meta property="og:description" content="The result of an inline query that was chosen by a user and sent to their chat partner. Please see our documentation on the feedback collecting for details on how to enable these updates for your bot."> + <meta property="og:description" content="An invoice"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/updateBotInlineSend" >updateBotInlineSend</a></li></ul></div> - <h1 id="dev_page_title">updateBotInlineSend</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputBotInlineMessageMediaInvoice" >inputBotInlineMessageMediaInvoice</a></li></ul></div> + <h1 id="dev_page_title">inputBotInlineMessageMediaInvoice</h1> - <div id="dev_page_content"><p>The result of an inline query that was chosen by a user and sent to their chat partner. Please see our documentation on the <a href="https://core.telegram.org/bots/inline#collecting-feedback">feedback collecting</a> for details on how to enable these updates for your bot.</p> + <div id="dev_page_content"><p>An invoice</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updateBotInlineSend" class="current_page_link" >updateBotInlineSend</a>#12f12a07 flags:<a href="/type/%23" >#</a> user_id:<a href="/type/long" >long</a> query:<a href="/type/string" >string</a> geo:flags.0?<a href="/type/GeoPoint" >GeoPoint</a> id:<a href="/type/string" >string</a> msg_id:flags.1?<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> = <a href="/type/Update" >Update</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputBotInlineMessageMediaInvoice" class="current_page_link" >inputBotInlineMessageMediaInvoice</a>#d7e78225 flags:<a href="/type/%23" >#</a> title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.0?<a href="/type/InputWebDocument" >InputWebDocument</a> invoice:<a href="/type/Invoice" >Invoice</a> payload:<a href="/type/bytes" >bytes</a> provider:<a href="/type/string" >string</a> provider_data:<a href="/type/DataJSON" >DataJSON</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a>;</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> @@ -69,34 +69,49 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>user_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>The user that chose the result</td> -</tr> -<tr> -<td><strong>query</strong></td> +<td><strong>title</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>The query that was used to obtain the result</td> +<td>Product name, 1-32 characters</td> </tr> <tr> -<td><strong>geo</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/GeoPoint">GeoPoint</a></td> -<td>Optional. Sender location, only for bots that require user location</td> -</tr> -<tr> -<td><strong>id</strong></td> +<td><strong>description</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>The unique identifier for the result that was chosen</td> +<td>Product description, 1-255 characters</td> </tr> <tr> -<td><strong>msg_id</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/InputBotInlineMessageID">InputBotInlineMessageID</a></td> -<td>Identifier of the sent inline message. Available only if there is an inline keyboard attached to the message. Will be also received in callback queries and can be used to edit the message.</td> +<td><strong>photo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/InputWebDocument">InputWebDocument</a></td> +<td>Invoice photo</td> +</tr> +<tr> +<td><strong>invoice</strong></td> +<td style="text-align: center;"><a href="/type/Invoice">Invoice</a></td> +<td>The invoice</td> +</tr> +<tr> +<td><strong>payload</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.</td> +</tr> +<tr> +<td><strong>provider</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Payments provider token, obtained via <a href="https://t.me/botfather">Botfather</a></td> +</tr> +<tr> +<td><strong>provider_data</strong></td> +<td style="text-align: center;"><a href="/type/DataJSON">DataJSON</a></td> +<td>A JSON-serialized object for data about the invoice, which will be shared with the payment provider. A detailed description of the required fields should be provided by the payment provider.</td> +</tr> +<tr> +<td><strong>reply_markup</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/ReplyMarkup">ReplyMarkup</a></td> +<td>Inline keyboard</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></div> +<p><a href="/type/InputBotInlineMessage">InputBotInlineMessage</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/inputBotInlineMessageText.html b/data/core.telegram.org/constructor/inputBotInlineMessageText.html new file mode 100644 index 0000000000..7519809734 --- /dev/null +++ b/data/core.telegram.org/constructor/inputBotInlineMessageText.html @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputBotInlineMessageText</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Simple text message"> + <meta property="og:title" content="inputBotInlineMessageText"> + <meta property="og:image" content=""> + <meta property="og:description" content="Simple text message"> + <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?215" 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/inputBotInlineMessageText" >inputBotInlineMessageText</a></li></ul></div> + <h1 id="dev_page_title">inputBotInlineMessageText</h1> + + <div id="dev_page_content"><p>Simple text message</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputBotInlineMessageText" class="current_page_link" >inputBotInlineMessageText</a>#3dcd7a87 flags:<a href="/type/%23" >#</a> no_webpage:flags.0?true message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/InputBotInlineMessage" >InputBotInlineMessage</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>no_webpage</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>Disable webpage preview</td> +</tr> +<tr> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Message</td> +</tr> +<tr> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td><a href="/api/entities">Message entities for styled text</a></td> +</tr> +<tr> +<td><strong>reply_markup</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/ReplyMarkup">ReplyMarkup</a></td> +<td>Inline keyboard</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/InputBotInlineMessage">InputBotInlineMessage</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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputBotInlineResultPhoto.html b/data/core.telegram.org/constructor/inputBotInlineResultPhoto.html new file mode 100644 index 0000000000..cb0d8308c0 --- /dev/null +++ b/data/core.telegram.org/constructor/inputBotInlineResultPhoto.html @@ -0,0 +1,164 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputBotInlineResultPhoto</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Photo"> + <meta property="og:title" content="inputBotInlineResultPhoto"> + <meta property="og:image" content=""> + <meta property="og:description" content="Photo"> + <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?215" 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/inputBotInlineResultPhoto" >inputBotInlineResultPhoto</a></li></ul></div> + <h1 id="dev_page_title">inputBotInlineResultPhoto</h1> + + <div id="dev_page_content"><p>Photo</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputBotInlineResultPhoto" class="current_page_link" >inputBotInlineResultPhoto</a>#a8d864a7 id:<a href="/type/string" >string</a> type:<a href="/type/string" >string</a> photo:<a href="/type/InputPhoto" >InputPhoto</a> send_message:<a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a> = <a href="/type/InputBotInlineResult" >InputBotInlineResult</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/string">string</a></td> +<td>Result ID</td> +</tr> +<tr> +<td><strong>type</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Result type (see <a href="/bots/api#inlinequeryresult">bot API docs</a>)</td> +</tr> +<tr> +<td><strong>photo</strong></td> +<td style="text-align: center;"><a href="/type/InputPhoto">InputPhoto</a></td> +<td>Photo to send</td> +</tr> +<tr> +<td><strong>send_message</strong></td> +<td style="text-align: center;"><a href="/type/InputBotInlineMessage">InputBotInlineMessage</a></td> +<td>Message to send when the result is selected</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/InputBotInlineResult">InputBotInlineResult</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="#telegram-bot-api" id="telegram-bot-api" name="telegram-bot-api"><i class="anchor-icon"></i></a><a href="/bots/api">Telegram Bot API</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputCheckPasswordSRP.html b/data/core.telegram.org/constructor/inputCheckPasswordSRP.html new file mode 100644 index 0000000000..c10f94221e --- /dev/null +++ b/data/core.telegram.org/constructor/inputCheckPasswordSRP.html @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputCheckPasswordSRP</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Constructor for checking the validity of a 2FA SRP password (see SRP)"> + <meta property="og:title" content="inputCheckPasswordSRP"> + <meta property="og:image" content=""> + <meta property="og:description" content="Constructor for checking the validity of a 2FA SRP password (see SRP)"> + <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?215" 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/inputCheckPasswordSRP" >inputCheckPasswordSRP</a></li></ul></div> + <h1 id="dev_page_title">inputCheckPasswordSRP</h1> + + <div id="dev_page_content"><p>Constructor for checking the validity of a 2FA SRP password (see <a href="/api/srp">SRP</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputCheckPasswordSRP" class="current_page_link" >inputCheckPasswordSRP</a>#d27ff082 srp_id:<a href="/type/long" >long</a> A:<a href="/type/bytes" >bytes</a> M1:<a href="/type/bytes" >bytes</a> = <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> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th style="text-align: center;">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>srp_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td><a href="/api/srp">SRP ID</a></td> +</tr> +<tr> +<td><strong>A</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td><code>A</code> parameter (see <a href="/api/srp">SRP</a>)</td> +</tr> +<tr> +<td><strong>M1</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td><code>M1</code> parameter (see <a href="/api/srp">SRP</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/InputCheckPasswordSRP">InputCheckPasswordSRP</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputStickerSetDice.html b/data/core.telegram.org/constructor/inputMediaDice.html similarity index 91% rename from data/core.telegram.org/constructor/inputStickerSetDice.html rename to data/core.telegram.org/constructor/inputMediaDice.html index 6f0b7b58ed..d4970073bd 100644 --- a/data/core.telegram.org/constructor/inputStickerSetDice.html +++ b/data/core.telegram.org/constructor/inputMediaDice.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputStickerSetDice</title> + <title>inputMediaDice</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Used for fetching animated dice stickers"> - <meta property="og:title" content="inputStickerSetDice"> + <meta property="description" content="Send a dice-based animated sticker"> + <meta property="og:title" content="inputMediaDice"> <meta property="og:image" content=""> - <meta property="og:description" content="Used for fetching animated dice stickers"> + <meta property="og:description" content="Send a dice-based animated sticker"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputStickerSetDice" >inputStickerSetDice</a></li></ul></div> - <h1 id="dev_page_title">inputStickerSetDice</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputMediaDice" >inputMediaDice</a></li></ul></div> + <h1 id="dev_page_title">inputMediaDice</h1> - <div id="dev_page_content"><p>Used for fetching <a href="/api/dice">animated dice stickers</a></p> + <div id="dev_page_content"><p>Send a <a href="/api/dice">dice-based animated sticker</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputStickerSetDice" class="current_page_link" >inputStickerSetDice</a>#e67f520e emoticon:<a href="/type/string" >string</a> = <a href="/type/InputStickerSet" >InputStickerSet</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputMediaDice" class="current_page_link" >inputMediaDice</a>#e66fbf7b emoticon:<a href="/type/string" >string</a> = <a href="/type/InputMedia" >InputMedia</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> @@ -71,7 +71,7 @@ </tbody> </table> <h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> -<p><a href="/type/InputStickerSet">InputStickerSet</a></p> +<p><a href="/type/InputMedia">InputMedia</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="#dice" id="dice" name="dice"><i class="anchor-icon"></i></a><a href="/api/dice">Dice</a></h4> <p>Telegram supports sending <a href="https://telegram.org/blog/folders#and-one-more-thing">animated dice</a> emojis.</p></div> diff --git a/data/core.telegram.org/constructor/inputMediaEmpty.html b/data/core.telegram.org/constructor/inputMediaEmpty.html new file mode 100644 index 0000000000..9134ab2239 --- /dev/null +++ b/data/core.telegram.org/constructor/inputMediaEmpty.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputMediaEmpty</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Empty media content of a message."> + <meta property="og:title" content="inputMediaEmpty"> + <meta property="og:image" content=""> + <meta property="og:description" content="Empty media content of a message."> + <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?215" 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/inputMediaEmpty" >inputMediaEmpty</a></li></ul></div> + <h1 id="dev_page_title">inputMediaEmpty</h1> + + <div id="dev_page_content"><p>Empty media content of a message.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputMediaEmpty" class="current_page_link" >inputMediaEmpty</a>#9664f57f = <a href="/type/InputMedia" >InputMedia</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/InputMedia">InputMedia</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputMessagesFilterVoice.html b/data/core.telegram.org/constructor/inputMessagesFilterContacts.html similarity index 94% rename from data/core.telegram.org/constructor/inputMessagesFilterVoice.html rename to data/core.telegram.org/constructor/inputMessagesFilterContacts.html index 1416315e4d..7ad7f7e001 100644 --- a/data/core.telegram.org/constructor/inputMessagesFilterVoice.html +++ b/data/core.telegram.org/constructor/inputMessagesFilterContacts.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputMessagesFilterVoice</title> + <title>inputMessagesFilterContacts</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Return only messages containing voice notes"> - <meta property="og:title" content="inputMessagesFilterVoice"> + <meta property="description" content="Return only messages containing contacts"> + <meta property="og:title" content="inputMessagesFilterContacts"> <meta property="og:image" content=""> - <meta property="og:description" content="Return only messages containing voice notes"> + <meta property="og:description" content="Return only messages containing contacts"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputMessagesFilterVoice" >inputMessagesFilterVoice</a></li></ul></div> - <h1 id="dev_page_title">inputMessagesFilterVoice</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputMessagesFilterContacts" >inputMessagesFilterContacts</a></li></ul></div> + <h1 id="dev_page_title">inputMessagesFilterContacts</h1> - <div id="dev_page_content"><p>Return only messages containing voice notes</p> + <div id="dev_page_content"><p>Return only messages containing contacts</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputMessagesFilterVoice" class="current_page_link" >inputMessagesFilterVoice</a>#50f5c392 = <a href="/type/MessagesFilter" >MessagesFilter</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputMessagesFilterContacts" class="current_page_link" >inputMessagesFilterContacts</a>#e062db83 = <a href="/type/MessagesFilter" >MessagesFilter</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> diff --git a/data/core.telegram.org/constructor/inputMessagesFilterPhotos.html b/data/core.telegram.org/constructor/inputMessagesFilterPhotos.html new file mode 100644 index 0000000000..2ee576bd78 --- /dev/null +++ b/data/core.telegram.org/constructor/inputMessagesFilterPhotos.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputMessagesFilterPhotos</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Filter for messages containing photos."> + <meta property="og:title" content="inputMessagesFilterPhotos"> + <meta property="og:image" content=""> + <meta property="og:description" content="Filter for messages containing photos."> + <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?215" 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/inputMessagesFilterPhotos" >inputMessagesFilterPhotos</a></li></ul></div> + <h1 id="dev_page_title">inputMessagesFilterPhotos</h1> + + <div id="dev_page_content"><p>Filter for messages containing photos.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputMessagesFilterPhotos" class="current_page_link" >inputMessagesFilterPhotos</a>#9609a51c = <a href="/type/MessagesFilter" >MessagesFilter</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/MessagesFilter">MessagesFilter</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputMessagesFilterRoundVideo.html b/data/core.telegram.org/constructor/inputMessagesFilterRoundVideo.html new file mode 100644 index 0000000000..1f2ea2876a --- /dev/null +++ b/data/core.telegram.org/constructor/inputMessagesFilterRoundVideo.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputMessagesFilterRoundVideo</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Return only round videos"> + <meta property="og:title" content="inputMessagesFilterRoundVideo"> + <meta property="og:image" content=""> + <meta property="og:description" content="Return only round videos"> + <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?215" 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/inputMessagesFilterRoundVideo" >inputMessagesFilterRoundVideo</a></li></ul></div> + <h1 id="dev_page_title">inputMessagesFilterRoundVideo</h1> + + <div id="dev_page_content"><p>Return only round videos</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputMessagesFilterRoundVideo" class="current_page_link" >inputMessagesFilterRoundVideo</a>#b549da53 = <a href="/type/MessagesFilter" >MessagesFilter</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/MessagesFilter">MessagesFilter</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputMessagesFilterVideo.html b/data/core.telegram.org/constructor/inputMessagesFilterVideo.html new file mode 100644 index 0000000000..2507e24c6d --- /dev/null +++ b/data/core.telegram.org/constructor/inputMessagesFilterVideo.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputMessagesFilterVideo</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Filter for messages containing videos."> + <meta property="og:title" content="inputMessagesFilterVideo"> + <meta property="og:image" content=""> + <meta property="og:description" content="Filter for messages containing videos."> + <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?215" 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/inputMessagesFilterVideo" >inputMessagesFilterVideo</a></li></ul></div> + <h1 id="dev_page_title">inputMessagesFilterVideo</h1> + + <div id="dev_page_content"><p>Filter for messages containing videos.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputMessagesFilterVideo" class="current_page_link" >inputMessagesFilterVideo</a>#9fc00e65 = <a href="/type/MessagesFilter" >MessagesFilter</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/MessagesFilter">MessagesFilter</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputPrivacyValueDisallowContacts.html b/data/core.telegram.org/constructor/inputPrivacyKeyChatInvite.html similarity index 91% rename from data/core.telegram.org/constructor/inputPrivacyValueDisallowContacts.html rename to data/core.telegram.org/constructor/inputPrivacyKeyChatInvite.html index 5028061cb6..bf8280fd43 100644 --- a/data/core.telegram.org/constructor/inputPrivacyValueDisallowContacts.html +++ b/data/core.telegram.org/constructor/inputPrivacyKeyChatInvite.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputPrivacyValueDisallowContacts</title> + <title>inputPrivacyKeyChatInvite</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Disallow only contacts"> - <meta property="og:title" content="inputPrivacyValueDisallowContacts"> + <meta property="description" content="Whether the user can be invited to chats"> + <meta property="og:title" content="inputPrivacyKeyChatInvite"> <meta property="og:image" content=""> - <meta property="og:description" content="Disallow only contacts"> + <meta property="og:description" content="Whether the user can be invited to chats"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputPrivacyValueDisallowContacts" >inputPrivacyValueDisallowContacts</a></li></ul></div> - <h1 id="dev_page_title">inputPrivacyValueDisallowContacts</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputPrivacyKeyChatInvite" >inputPrivacyKeyChatInvite</a></li></ul></div> + <h1 id="dev_page_title">inputPrivacyKeyChatInvite</h1> - <div id="dev_page_content"><p>Disallow only contacts</p> + <div id="dev_page_content"><p>Whether the user can be invited to chats</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputPrivacyValueDisallowContacts" class="current_page_link" >inputPrivacyValueDisallowContacts</a>#ba52007 = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputPrivacyKeyChatInvite" class="current_page_link" >inputPrivacyKeyChatInvite</a>#bdfb0426 = <a href="/type/InputPrivacyKey" >InputPrivacyKey</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/InputPrivacyRule">InputPrivacyRule</a></p></div> +<p><a href="/type/InputPrivacyKey">InputPrivacyKey</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/inputPrivacyKeyForwards.html b/data/core.telegram.org/constructor/inputPrivacyKeyForwards.html new file mode 100644 index 0000000000..26ee4c83a1 --- /dev/null +++ b/data/core.telegram.org/constructor/inputPrivacyKeyForwards.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputPrivacyKeyForwards</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Whether messages forwarded from this user will be anonymous"> + <meta property="og:title" content="inputPrivacyKeyForwards"> + <meta property="og:image" content=""> + <meta property="og:description" content="Whether messages forwarded from this user will be anonymous"> + <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?215" 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/inputPrivacyKeyForwards" >inputPrivacyKeyForwards</a></li></ul></div> + <h1 id="dev_page_title">inputPrivacyKeyForwards</h1> + + <div id="dev_page_content"><p>Whether messages forwarded from this user will be <a href="https://telegram.org/blog/unsend-privacy-emoji#anonymous-forwarding">anonymous</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputPrivacyKeyForwards" class="current_page_link" >inputPrivacyKeyForwards</a>#a4dd4c08 = <a href="/type/InputPrivacyKey" >InputPrivacyKey</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/InputPrivacyKey">InputPrivacyKey</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputStickerSetAnimatedEmoji.html b/data/core.telegram.org/constructor/inputStickerSetEmpty.html similarity index 92% rename from data/core.telegram.org/constructor/inputStickerSetAnimatedEmoji.html rename to data/core.telegram.org/constructor/inputStickerSetEmpty.html index ee67a51064..dcadb50f38 100644 --- a/data/core.telegram.org/constructor/inputStickerSetAnimatedEmoji.html +++ b/data/core.telegram.org/constructor/inputStickerSetEmpty.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputStickerSetAnimatedEmoji</title> + <title>inputStickerSetEmpty</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Animated emojis stickerset"> - <meta property="og:title" content="inputStickerSetAnimatedEmoji"> + <meta property="description" content="Empty constructor"> + <meta property="og:title" content="inputStickerSetEmpty"> <meta property="og:image" content=""> - <meta property="og:description" content="Animated emojis stickerset"> + <meta property="og:description" content="Empty constructor"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputStickerSetAnimatedEmoji" >inputStickerSetAnimatedEmoji</a></li></ul></div> - <h1 id="dev_page_title">inputStickerSetAnimatedEmoji</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputStickerSetEmpty" >inputStickerSetEmpty</a></li></ul></div> + <h1 id="dev_page_title">inputStickerSetEmpty</h1> - <div id="dev_page_content"><p>Animated emojis stickerset</p> + <div id="dev_page_content"><p>Empty constructor</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputStickerSetAnimatedEmoji" class="current_page_link" >inputStickerSetAnimatedEmoji</a>#28703c8 = <a href="/type/InputStickerSet" >InputStickerSet</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputStickerSetEmpty" class="current_page_link" >inputStickerSetEmpty</a>#ffb62b95 = <a href="/type/InputStickerSet" >InputStickerSet</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> diff --git a/data/core.telegram.org/constructor/peerChannel.html b/data/core.telegram.org/constructor/jsonBool.html similarity index 91% rename from data/core.telegram.org/constructor/peerChannel.html rename to data/core.telegram.org/constructor/jsonBool.html index 514c9c0dec..7d834c2670 100644 --- a/data/core.telegram.org/constructor/peerChannel.html +++ b/data/core.telegram.org/constructor/jsonBool.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>peerChannel</title> + <title>jsonBool</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Channel/supergroup"> - <meta property="og:title" content="peerChannel"> + <meta property="description" content="JSON boolean value"> + <meta property="og:title" content="jsonBool"> <meta property="og:image" content=""> - <meta property="og:description" content="Channel/supergroup"> + <meta property="og:description" content="JSON boolean value"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/peerChannel" >peerChannel</a></li></ul></div> - <h1 id="dev_page_title">peerChannel</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/jsonBool" >jsonBool</a></li></ul></div> + <h1 id="dev_page_title">jsonBool</h1> - <div id="dev_page_content"><p>Channel/supergroup</p> + <div id="dev_page_content"><p>JSON boolean value</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/peerChannel" class="current_page_link" >peerChannel</a>#a2a5371e channel_id:<a href="/type/long" >long</a> = <a href="/type/Peer" >Peer</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/jsonBool" class="current_page_link" >jsonBool</a>#c7345e6a value:<a href="/type/Bool" >Bool</a> = <a href="/type/JSONValue" >JSONValue</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> @@ -64,14 +64,14 @@ </thead> <tbody> <tr> -<td><strong>channel_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Channel ID</td> +<td><strong>value</strong></td> +<td style="text-align: center;"><a href="/type/Bool">Bool</a></td> +<td>Value</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/Peer">Peer</a></p></div> +<p><a href="/type/JSONValue">JSONValue</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/textPhone.html b/data/core.telegram.org/constructor/keyboardButtonUrl.html similarity index 90% rename from data/core.telegram.org/constructor/textPhone.html rename to data/core.telegram.org/constructor/keyboardButtonUrl.html index 05127fbc64..9defc29723 100644 --- a/data/core.telegram.org/constructor/textPhone.html +++ b/data/core.telegram.org/constructor/keyboardButtonUrl.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>textPhone</title> + <title>keyboardButtonUrl</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Rich text linked to a phone number"> - <meta property="og:title" content="textPhone"> + <meta property="description" content="URL button"> + <meta property="og:title" content="keyboardButtonUrl"> <meta property="og:image" content=""> - <meta property="og:description" content="Rich text linked to a phone number"> + <meta property="og:description" content="URL button"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/textPhone" >textPhone</a></li></ul></div> - <h1 id="dev_page_title">textPhone</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/keyboardButtonUrl" >keyboardButtonUrl</a></li></ul></div> + <h1 id="dev_page_title">keyboardButtonUrl</h1> - <div id="dev_page_content"><p>Rich text linked to a phone number</p> + <div id="dev_page_content"><p>URL button</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/textPhone" class="current_page_link" >textPhone</a>#1ccb966a text:<a href="/type/RichText" >RichText</a> phone:<a href="/type/string" >string</a> = <a href="/type/RichText" >RichText</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/keyboardButtonUrl" class="current_page_link" >keyboardButtonUrl</a>#258aff05 text:<a href="/type/string" >string</a> url:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</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> @@ -65,18 +65,18 @@ <tbody> <tr> <td><strong>text</strong></td> -<td style="text-align: center;"><a href="/type/RichText">RichText</a></td> -<td>Text</td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Button label</td> </tr> <tr> -<td><strong>phone</strong></td> +<td><strong>url</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Phone number</td> +<td>URL</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/RichText">RichText</a></p></div> +<p><a href="/type/KeyboardButton">KeyboardButton</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/langPackString.html b/data/core.telegram.org/constructor/langPackString.html new file mode 100644 index 0000000000..9093daddde --- /dev/null +++ b/data/core.telegram.org/constructor/langPackString.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>langPackString</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Translated localization string"> + <meta property="og:title" content="langPackString"> + <meta property="og:image" content=""> + <meta property="og:description" content="Translated localization string"> + <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?215" 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/langPackString" >langPackString</a></li></ul></div> + <h1 id="dev_page_title">langPackString</h1> + + <div id="dev_page_content"><p>Translated localization string</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/langPackString" class="current_page_link" >langPackString</a>#cad181f6 key:<a href="/type/string" >string</a> value:<a href="/type/string" >string</a> = <a href="/type/LangPackString" >LangPackString</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>key</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Language key</td> +</tr> +<tr> +<td><strong>value</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Value</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/LangPackString">LangPackString</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputStickerSetID.html b/data/core.telegram.org/constructor/messageActionChatJoinedByLink.html similarity index 89% rename from data/core.telegram.org/constructor/inputStickerSetID.html rename to data/core.telegram.org/constructor/messageActionChatJoinedByLink.html index 021e80cfb8..a5365fcde3 100644 --- a/data/core.telegram.org/constructor/inputStickerSetID.html +++ b/data/core.telegram.org/constructor/messageActionChatJoinedByLink.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputStickerSetID</title> + <title>messageActionChatJoinedByLink</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Stickerset by ID"> - <meta property="og:title" content="inputStickerSetID"> + <meta property="description" content="A user joined the chat via an invite link"> + <meta property="og:title" content="messageActionChatJoinedByLink"> <meta property="og:image" content=""> - <meta property="og:description" content="Stickerset by ID"> + <meta property="og:description" content="A user joined the chat via an invite link"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputStickerSetID" >inputStickerSetID</a></li></ul></div> - <h1 id="dev_page_title">inputStickerSetID</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageActionChatJoinedByLink" >messageActionChatJoinedByLink</a></li></ul></div> + <h1 id="dev_page_title">messageActionChatJoinedByLink</h1> - <div id="dev_page_content"><p>Stickerset by ID</p> + <div id="dev_page_content"><p>A user joined the chat via an invite link</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputStickerSetID" class="current_page_link" >inputStickerSetID</a>#9de7a269 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputStickerSet" >InputStickerSet</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageActionChatJoinedByLink" class="current_page_link" >messageActionChatJoinedByLink</a>#31224c3 inviter_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" >MessageAction</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> @@ -64,19 +64,14 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> +<td><strong>inviter_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>ID</td> -</tr> -<tr> -<td><strong>access_hash</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Access hash</td> +<td>ID of the user that created the invite link</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/InputStickerSet">InputStickerSet</a></p></div> +<p><a href="/type/MessageAction">MessageAction</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/popularContact.html b/data/core.telegram.org/constructor/messageActionGameScore.html similarity index 90% rename from data/core.telegram.org/constructor/popularContact.html rename to data/core.telegram.org/constructor/messageActionGameScore.html index f3cb71e9a6..1a4ae26249 100644 --- a/data/core.telegram.org/constructor/popularContact.html +++ b/data/core.telegram.org/constructor/messageActionGameScore.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>popularContact</title> + <title>messageActionGameScore</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Popular contact"> - <meta property="og:title" content="popularContact"> + <meta property="description" content="Someone scored in a game"> + <meta property="og:title" content="messageActionGameScore"> <meta property="og:image" content=""> - <meta property="og:description" content="Popular contact"> + <meta property="og:description" content="Someone scored in a game"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/popularContact" >popularContact</a></li></ul></div> - <h1 id="dev_page_title">popularContact</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageActionGameScore" >messageActionGameScore</a></li></ul></div> + <h1 id="dev_page_title">messageActionGameScore</h1> - <div id="dev_page_content"><p>Popular contact</p> + <div id="dev_page_content"><p>Someone scored in a game</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/popularContact" class="current_page_link" >popularContact</a>#5ce14175 client_id:<a href="/type/long" >long</a> importers:<a href="/type/int" >int</a> = <a href="/type/PopularContact" >PopularContact</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageActionGameScore" class="current_page_link" >messageActionGameScore</a>#92a72876 game_id:<a href="/type/long" >long</a> score:<a href="/type/int" >int</a> = <a href="/type/MessageAction" >MessageAction</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> @@ -64,19 +64,19 @@ </thead> <tbody> <tr> -<td><strong>client_id</strong></td> +<td><strong>game_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Contact identifier</td> +<td>Game ID</td> </tr> <tr> -<td><strong>importers</strong></td> +<td><strong>score</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>How many people imported this contact</td> +<td>Score</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/PopularContact">PopularContact</a></p></div> +<p><a href="/type/MessageAction">MessageAction</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/messageActionChatDeletePhoto.html b/data/core.telegram.org/constructor/messageActionHistoryClear.html similarity index 92% rename from data/core.telegram.org/constructor/messageActionChatDeletePhoto.html rename to data/core.telegram.org/constructor/messageActionHistoryClear.html index 847af5b07c..5244cb2c65 100644 --- a/data/core.telegram.org/constructor/messageActionChatDeletePhoto.html +++ b/data/core.telegram.org/constructor/messageActionHistoryClear.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messageActionChatDeletePhoto</title> + <title>messageActionHistoryClear</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Group profile photo removed."> - <meta property="og:title" content="messageActionChatDeletePhoto"> + <meta property="description" content="Chat history was cleared"> + <meta property="og:title" content="messageActionHistoryClear"> <meta property="og:image" content=""> - <meta property="og:description" content="Group profile photo removed."> + <meta property="og:description" content="Chat history was cleared"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/messageActionChatDeletePhoto" >messageActionChatDeletePhoto</a></li></ul></div> - <h1 id="dev_page_title">messageActionChatDeletePhoto</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageActionHistoryClear" >messageActionHistoryClear</a></li></ul></div> + <h1 id="dev_page_title">messageActionHistoryClear</h1> - <div id="dev_page_content"><p>Group profile photo removed.</p> + <div id="dev_page_content"><p>Chat history was cleared</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messageActionChatDeletePhoto" class="current_page_link" >messageActionChatDeletePhoto</a>#95e3fbef = <a href="/type/MessageAction" >MessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageActionHistoryClear" class="current_page_link" >messageActionHistoryClear</a>#9fbab604 = <a href="/type/MessageAction" >MessageAction</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> diff --git a/data/core.telegram.org/constructor/auth.authorization b/data/core.telegram.org/constructor/messageActionPhoneCall.html similarity index 84% rename from data/core.telegram.org/constructor/auth.authorization rename to data/core.telegram.org/constructor/messageActionPhoneCall.html index 6c17405da0..a810e4e061 100644 --- a/data/core.telegram.org/constructor/auth.authorization +++ b/data/core.telegram.org/constructor/messageActionPhoneCall.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>auth.authorization</title> + <title>messageActionPhoneCall</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Contains user authorization info."> - <meta property="og:title" content="auth.authorization"> + <meta property="description" content="A phone call"> + <meta property="og:title" content="messageActionPhoneCall"> <meta property="og:image" content=""> - <meta property="og:description" content="Contains user authorization info."> + <meta property="og:description" content="A phone call"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/auth.authorization" >auth.authorization</a></li></ul></div> - <h1 id="dev_page_title">auth.authorization</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageActionPhoneCall" >messageActionPhoneCall</a></li></ul></div> + <h1 id="dev_page_title">messageActionPhoneCall</h1> - <div id="dev_page_content"><p>Contains user authorization info.</p> + <div id="dev_page_content"><p>A phone call</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/auth.authorization" class="current_page_link" >auth.authorization</a>#cd050916 flags:<a href="/type/%23" >#</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> user:<a href="/type/User" >User</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageActionPhoneCall" class="current_page_link" >messageActionPhoneCall</a>#80e11a7f flags:<a href="/type/%23" >#</a> video:flags.2?true call_id:<a href="/type/long" >long</a> reason:flags.0?<a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a> duration:flags.1?<a href="/type/int" >int</a> = <a href="/type/MessageAction" >MessageAction</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> @@ -69,21 +69,29 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>tmp_sessions</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>Temporary <a href="/passport">passport</a> sessions</td> +<td><strong>video</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>Is this a video call?</td> </tr> <tr> -<td><strong>user</strong></td> -<td style="text-align: center;"><a href="/type/User">User</a></td> -<td>Info on authorized user</td> +<td><strong>call_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Call ID</td> +</tr> +<tr> +<td><strong>reason</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/PhoneCallDiscardReason">PhoneCallDiscardReason</a></td> +<td>If the call has ended, the reason why it ended</td> +</tr> +<tr> +<td><strong>duration</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>Duration of the call in seconds</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/auth.Authorization">auth.Authorization</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></div> +<p><a href="/type/MessageAction">MessageAction</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/messageActionInviteToGroupCall.html b/data/core.telegram.org/constructor/messageActionSecureValuesSent.html similarity index 85% rename from data/core.telegram.org/constructor/messageActionInviteToGroupCall.html rename to data/core.telegram.org/constructor/messageActionSecureValuesSent.html index 84c058c54f..8720707f39 100644 --- a/data/core.telegram.org/constructor/messageActionInviteToGroupCall.html +++ b/data/core.telegram.org/constructor/messageActionSecureValuesSent.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messageActionInviteToGroupCall</title> + <title>messageActionSecureValuesSent</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="A set of users was invited to the group call"> - <meta property="og:title" content="messageActionInviteToGroupCall"> + <meta property="description" content="Request for secure telegram passport values was sent"> + <meta property="og:title" content="messageActionSecureValuesSent"> <meta property="og:image" content=""> - <meta property="og:description" content="A set of users was invited to the group call"> + <meta property="og:description" content="Request for secure telegram passport values was sent"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/messageActionInviteToGroupCall" >messageActionInviteToGroupCall</a></li></ul></div> - <h1 id="dev_page_title">messageActionInviteToGroupCall</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageActionSecureValuesSent" >messageActionSecureValuesSent</a></li></ul></div> + <h1 id="dev_page_title">messageActionSecureValuesSent</h1> - <div id="dev_page_content"><p>A set of users was invited to the group call</p> + <div id="dev_page_content"><p>Request for secure <a href="/passport">telegram passport</a> values was sent</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messageActionInviteToGroupCall" class="current_page_link" >messageActionInviteToGroupCall</a>#502f92f7 call:<a href="/type/InputGroupCall" >InputGroupCall</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/MessageAction" >MessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageActionSecureValuesSent" class="current_page_link" >messageActionSecureValuesSent</a>#d95c6154 types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueType" >SecureValueType</a>> = <a href="/type/MessageAction" >MessageAction</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> @@ -64,19 +64,16 @@ </thead> <tbody> <tr> -<td><strong>call</strong></td> -<td style="text-align: center;"><a href="/type/InputGroupCall">InputGroupCall</a></td> -<td>The group call</td> -</tr> -<tr> -<td><strong>users</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>></td> -<td>The invited users</td> +<td><strong>types</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/SecureValueType">SecureValueType</a>></td> +<td>Secure value types</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/MessageAction">MessageAction</a></p></div> +<p><a href="/type/MessageAction">MessageAction</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></div> </div> diff --git a/data/core.telegram.org/constructor/auth.sentCodeTypeCall b/data/core.telegram.org/constructor/messageEntityBotCommand.html similarity index 88% rename from data/core.telegram.org/constructor/auth.sentCodeTypeCall rename to data/core.telegram.org/constructor/messageEntityBotCommand.html index cd48946fb9..594b2c97b6 100644 --- a/data/core.telegram.org/constructor/auth.sentCodeTypeCall +++ b/data/core.telegram.org/constructor/messageEntityBotCommand.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>auth.sentCodeTypeCall</title> + <title>messageEntityBotCommand</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="The code will be sent via a phone call: a synthesized voice will tell the user which verification code to input."> - <meta property="og:title" content="auth.sentCodeTypeCall"> + <meta property="description" content="Message entity representing a bot /command"> + <meta property="og:title" content="messageEntityBotCommand"> <meta property="og:image" content=""> - <meta property="og:description" content="The code will be sent via a phone call: a synthesized voice will tell the user which verification code to input."> + <meta property="og:description" content="Message entity representing a bot /command"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/auth.sentCodeTypeCall" >auth.sentCodeTypeCall</a></li></ul></div> - <h1 id="dev_page_title">auth.sentCodeTypeCall</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageEntityBotCommand" >messageEntityBotCommand</a></li></ul></div> + <h1 id="dev_page_title">messageEntityBotCommand</h1> - <div id="dev_page_content"><p>The code will be sent via a phone call: a synthesized voice will tell the user which verification code to input.</p> + <div id="dev_page_content"><p>Message entity representing a bot /command</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/auth.sentCodeTypeCall" class="current_page_link" >auth.sentCodeTypeCall</a>#5353e5a7 length:<a href="/type/int" >int</a> = <a href="/type/auth.SentCodeType" >auth.SentCodeType</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageEntityBotCommand" class="current_page_link" >messageEntityBotCommand</a>#6cef8ac7 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</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> @@ -64,14 +64,19 @@ </thead> <tbody> <tr> +<td><strong>offset</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Offset of message entity within message (in UTF-8 codepoints)</td> +</tr> +<tr> <td><strong>length</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Length of the verification code</td> +<td>Length of message entity within message (in UTF-8 codepoints)</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/auth.SentCodeType">auth.SentCodeType</a></p></div> +<p><a href="/type/MessageEntity">MessageEntity</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/messageMediaDice.html b/data/core.telegram.org/constructor/messageMediaDice.html new file mode 100644 index 0000000000..5a50eab126 --- /dev/null +++ b/data/core.telegram.org/constructor/messageMediaDice.html @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messageMediaDice</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Dice-based animated sticker"> + <meta property="og:title" content="messageMediaDice"> + <meta property="og:image" content=""> + <meta property="og:description" content="Dice-based animated sticker"> + <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?215" 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/messageMediaDice" >messageMediaDice</a></li></ul></div> + <h1 id="dev_page_title">messageMediaDice</h1> + + <div id="dev_page_content"><p><a href="/api/dice">Dice-based animated sticker</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messageMediaDice" class="current_page_link" >messageMediaDice</a>#3f7ee58b value:<a href="/type/int" >int</a> emoticon:<a href="/type/string" >string</a> = <a href="/type/MessageMedia" >MessageMedia</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>value</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/dice">Dice value</a></td> +</tr> +<tr> +<td><strong>emoticon</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The emoji, for now <img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" /> and <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" /> are supported</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/MessageMedia">MessageMedia</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="#dice" id="dice" name="dice"><i class="anchor-icon"></i></a><a href="/api/dice">Dice</a></h4> +<p>Telegram supports sending <a href="https://telegram.org/blog/folders#and-one-more-thing">animated dice</a> emojis.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/userEmpty.html b/data/core.telegram.org/constructor/messageMediaGeo.html similarity index 91% rename from data/core.telegram.org/constructor/userEmpty.html rename to data/core.telegram.org/constructor/messageMediaGeo.html index 191eeda7c8..3bcf17c634 100644 --- a/data/core.telegram.org/constructor/userEmpty.html +++ b/data/core.telegram.org/constructor/messageMediaGeo.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>userEmpty</title> + <title>messageMediaGeo</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Empty constructor, non-existent user."> - <meta property="og:title" content="userEmpty"> + <meta property="description" content="Attached map."> + <meta property="og:title" content="messageMediaGeo"> <meta property="og:image" content=""> - <meta property="og:description" content="Empty constructor, non-existent user."> + <meta property="og:description" content="Attached map."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/userEmpty" >userEmpty</a></li></ul></div> - <h1 id="dev_page_title">userEmpty</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageMediaGeo" >messageMediaGeo</a></li></ul></div> + <h1 id="dev_page_title">messageMediaGeo</h1> - <div id="dev_page_content"><p>Empty constructor, non-existent user.</p> + <div id="dev_page_content"><p>Attached map.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/userEmpty" class="current_page_link" >userEmpty</a>#d3bc4b7a id:<a href="/type/long" >long</a> = <a href="/type/User" >User</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageMediaGeo" class="current_page_link" >messageMediaGeo</a>#56e0d474 geo:<a href="/type/GeoPoint" >GeoPoint</a> = <a href="/type/MessageMedia" >MessageMedia</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> @@ -64,14 +64,14 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>User identifier or <code>0</code></td> +<td><strong>geo</strong></td> +<td style="text-align: center;"><a href="/type/GeoPoint">GeoPoint</a></td> +<td>GeoPoint</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/User">User</a></p></div> +<p><a href="/type/MessageMedia">MessageMedia</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/encryptedFile.html b/data/core.telegram.org/constructor/messages.affectedHistory similarity index 86% rename from data/core.telegram.org/constructor/encryptedFile.html rename to data/core.telegram.org/constructor/messages.affectedHistory index 3a306337a9..d8b960021b 100644 --- a/data/core.telegram.org/constructor/encryptedFile.html +++ b/data/core.telegram.org/constructor/messages.affectedHistory @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>encryptedFile</title> + <title>messages.affectedHistory</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Encrypted file."> - <meta property="og:title" content="encryptedFile"> + <meta property="description" content="Affected part of communication history with the user or in a chat."> + <meta property="og:title" content="messages.affectedHistory"> <meta property="og:image" content=""> - <meta property="og:description" content="Encrypted file."> + <meta property="og:description" content="Affected part of communication history with the user or in a chat."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/encryptedFile" >encryptedFile</a></li></ul></div> - <h1 id="dev_page_title">encryptedFile</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messages.affectedHistory" >messages.affectedHistory</a></li></ul></div> + <h1 id="dev_page_title">messages.affectedHistory</h1> - <div id="dev_page_content"><p>Encrypted file.</p> + <div id="dev_page_content"><p>Affected part of communication history with the user or in a chat.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/encryptedFile" class="current_page_link" >encryptedFile</a>#4a70994c id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> size:<a href="/type/int" >int</a> dc_id:<a href="/type/int" >int</a> key_fingerprint:<a href="/type/int" >int</a> = <a href="/type/EncryptedFile" >EncryptedFile</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messages.affectedHistory" class="current_page_link" >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>;</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> @@ -64,34 +64,24 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>File ID</td> -</tr> -<tr> -<td><strong>access_hash</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Checking sum depending on user ID</td> -</tr> -<tr> -<td><strong>size</strong></td> +<td><strong>pts</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>File size in bytes</td> +<td>Number of events occured in a text box</td> </tr> <tr> -<td><strong>dc_id</strong></td> +<td><strong>pts_count</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of data centre</td> +<td>Number of affected events</td> </tr> <tr> -<td><strong>key_fingerprint</strong></td> +<td><strong>offset</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>32-bit fingerprint of key used for file encryption</td> +<td>If a parameter contains positive value, it is necessary to repeat the method call using the given value; during the proceeding of all the history the value itself shall gradually decrease</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/EncryptedFile">EncryptedFile</a></p></div> +<p><a href="/type/messages.AffectedHistory">messages.AffectedHistory</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/channels.channelParticipant b/data/core.telegram.org/constructor/messages.chatAdminsWithInvites similarity index 86% rename from data/core.telegram.org/constructor/channels.channelParticipant rename to data/core.telegram.org/constructor/messages.chatAdminsWithInvites index 44fb5b5322..eb2e6e7853 100644 --- a/data/core.telegram.org/constructor/channels.channelParticipant +++ b/data/core.telegram.org/constructor/messages.chatAdminsWithInvites @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>channels.channelParticipant</title> + <title>messages.chatAdminsWithInvites</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Represents a channel participant"> - <meta property="og:title" content="channels.channelParticipant"> + <meta property="description" content="Info about chat invites generated by admins."> + <meta property="og:title" content="messages.chatAdminsWithInvites"> <meta property="og:image" content=""> - <meta property="og:description" content="Represents a channel participant"> + <meta property="og:description" content="Info about chat invites generated by admins."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/channels.channelParticipant" >channels.channelParticipant</a></li></ul></div> - <h1 id="dev_page_title">channels.channelParticipant</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messages.chatAdminsWithInvites" >messages.chatAdminsWithInvites</a></li></ul></div> + <h1 id="dev_page_title">messages.chatAdminsWithInvites</h1> - <div id="dev_page_content"><p>Represents a channel participant</p> + <div id="dev_page_content"><p>Info about chat invites generated by admins.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/channels.channelParticipant" class="current_page_link" >channels.channelParticipant</a>#dfb80317 participant:<a href="/type/ChannelParticipant" >ChannelParticipant</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/channels.ChannelParticipant" >channels.ChannelParticipant</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messages.chatAdminsWithInvites" class="current_page_link" >messages.chatAdminsWithInvites</a>#b69b72d7 admins:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChatAdminWithInvites" >ChatAdminWithInvites</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ChatAdminsWithInvites" >messages.ChatAdminsWithInvites</a>;</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> @@ -64,24 +64,19 @@ </thead> <tbody> <tr> -<td><strong>participant</strong></td> -<td style="text-align: center;"><a href="/type/ChannelParticipant">ChannelParticipant</a></td> -<td>The channel participant</td> -</tr> -<tr> -<td><strong>chats</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> -<td>Mentioned chats</td> +<td><strong>admins</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/ChatAdminWithInvites">ChatAdminWithInvites</a>></td> +<td>Info about chat invites generated by admins.</td> </tr> <tr> <td><strong>users</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>Users</td> +<td>Mentioned users</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/channels.ChannelParticipant">channels.ChannelParticipant</a></p></div> +<p><a href="/type/messages.ChatAdminsWithInvites">messages.ChatAdminsWithInvites</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/secureValueHash.html b/data/core.telegram.org/constructor/messages.dhConfigNotModified similarity index 89% rename from data/core.telegram.org/constructor/secureValueHash.html rename to data/core.telegram.org/constructor/messages.dhConfigNotModified index 287f52e1ec..b364445f51 100644 --- a/data/core.telegram.org/constructor/secureValueHash.html +++ b/data/core.telegram.org/constructor/messages.dhConfigNotModified @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>secureValueHash</title> + <title>messages.dhConfigNotModified</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Secure value hash"> - <meta property="og:title" content="secureValueHash"> + <meta property="description" content="Configuring parameters did not change."> + <meta property="og:title" content="messages.dhConfigNotModified"> <meta property="og:image" content=""> - <meta property="og:description" content="Secure value hash"> + <meta property="og:description" content="Configuring parameters did not change."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/secureValueHash" >secureValueHash</a></li></ul></div> - <h1 id="dev_page_title">secureValueHash</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messages.dhConfigNotModified" >messages.dhConfigNotModified</a></li></ul></div> + <h1 id="dev_page_title">messages.dhConfigNotModified</h1> - <div id="dev_page_content"><p>Secure value hash</p> + <div id="dev_page_content"><p>Configuring parameters did not change.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/secureValueHash" class="current_page_link" >secureValueHash</a>#ed1ecdb0 type:<a href="/type/SecureValueType" >SecureValueType</a> hash:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureValueHash" >SecureValueHash</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messages.dhConfigNotModified" class="current_page_link" >messages.dhConfigNotModified</a>#c0e24635 random:<a href="/type/bytes" >bytes</a> = <a href="/type/messages.DhConfig" >messages.DhConfig</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> @@ -64,19 +64,14 @@ </thead> <tbody> <tr> -<td><strong>type</strong></td> -<td style="text-align: center;"><a href="/type/SecureValueType">SecureValueType</a></td> -<td>Secure value type</td> -</tr> -<tr> -<td><strong>hash</strong></td> +<td><strong>random</strong></td> <td style="text-align: center;"><a href="/type/bytes">bytes</a></td> -<td>Hash</td> +<td>Random sequence of bytes of assigned length</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/SecureValueHash">SecureValueHash</a></p></div> +<p><a href="/type/messages.DhConfig">messages.DhConfig</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/messages.dialogs b/data/core.telegram.org/constructor/messages.dialogsSlice similarity index 86% rename from data/core.telegram.org/constructor/messages.dialogs rename to data/core.telegram.org/constructor/messages.dialogsSlice index 467e147cc1..d1fd165555 100644 --- a/data/core.telegram.org/constructor/messages.dialogs +++ b/data/core.telegram.org/constructor/messages.dialogsSlice @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.dialogs</title> + <title>messages.dialogsSlice</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Full list of chats with messages and auxiliary data."> - <meta property="og:title" content="messages.dialogs"> + <meta property="description" content="Incomplete list of dialogs with messages and auxiliary data."> + <meta property="og:title" content="messages.dialogsSlice"> <meta property="og:image" content=""> - <meta property="og:description" content="Full list of chats with messages and auxiliary data."> + <meta property="og:description" content="Incomplete list of dialogs with messages and auxiliary data."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.dialogs" >messages.dialogs</a></li></ul></div> - <h1 id="dev_page_title">messages.dialogs</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messages.dialogsSlice" >messages.dialogsSlice</a></li></ul></div> + <h1 id="dev_page_title">messages.dialogsSlice</h1> - <div id="dev_page_content"><p>Full list of chats with messages and auxiliary data.</p> + <div id="dev_page_content"><p>Incomplete list of dialogs with messages and auxiliary data.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.dialogs" class="current_page_link" >messages.dialogs</a>#15ba6c40 dialogs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Dialog" >Dialog</a>> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.Dialogs" >messages.Dialogs</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messages.dialogsSlice" class="current_page_link" >messages.dialogsSlice</a>#71e094f3 count:<a href="/type/int" >int</a> dialogs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Dialog" >Dialog</a>> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.Dialogs" >messages.Dialogs</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> @@ -64,24 +64,29 @@ </thead> <tbody> <tr> +<td><strong>count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Total number of dialogs</td> +</tr> +<tr> <td><strong>dialogs</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Dialog">Dialog</a>></td> -<td>List of chats</td> +<td>List of dialogs</td> </tr> <tr> <td><strong>messages</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Message">Message</a>></td> -<td>List of last messages from each chat</td> +<td>List of last messages from dialogs</td> </tr> <tr> <td><strong>chats</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> -<td>List of groups mentioned in the chats</td> +<td>List of chats mentioned in dialogs</td> </tr> <tr> <td><strong>users</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>List of users mentioned in messages and groups</td> +<td>List of users mentioned in messages and chats</td> </tr> </tbody> </table> diff --git a/data/core.telegram.org/constructor/messages.exportedChatInviteReplaced b/data/core.telegram.org/constructor/messages.exportedChatInviteReplaced deleted file mode 100644 index a6af29aa86..0000000000 --- a/data/core.telegram.org/constructor/messages.exportedChatInviteReplaced +++ /dev/null @@ -1,157 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>messages.exportedChatInviteReplaced</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="The specified chat invite was replaced with another one"> - <meta property="og:title" content="messages.exportedChatInviteReplaced"> - <meta property="og:image" content=""> - <meta property="og:description" content="The specified chat invite was replaced with another one"> - <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?215" 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.exportedChatInviteReplaced" >messages.exportedChatInviteReplaced</a></li></ul></div> - <h1 id="dev_page_title">messages.exportedChatInviteReplaced</h1> - - <div id="dev_page_content"><p>The specified chat invite was replaced with another one</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/messages.exportedChatInviteReplaced" class="current_page_link" >messages.exportedChatInviteReplaced</a>#222600ef invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> new_invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ExportedChatInvite" >messages.ExportedChatInvite</a>;</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>invite</strong></td> -<td style="text-align: center;"><a href="/type/ExportedChatInvite">ExportedChatInvite</a></td> -<td>The replaced chat invite</td> -</tr> -<tr> -<td><strong>new_invite</strong></td> -<td style="text-align: center;"><a href="/type/ExportedChatInvite">ExportedChatInvite</a></td> -<td>The invite that replaces the previous invite</td> -</tr> -<tr> -<td><strong>users</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>Mentioned users</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.ExportedChatInvite">messages.ExportedChatInvite</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/constructor/messages.exportedChatInvites b/data/core.telegram.org/constructor/messages.exportedChatInvites similarity index 98% rename from data/corefork.telegram.org/constructor/messages.exportedChatInvites rename to data/core.telegram.org/constructor/messages.exportedChatInvites index 738d7ae53e..5fbcb7dc5e 100644 --- a/data/corefork.telegram.org/constructor/messages.exportedChatInvites +++ b/data/core.telegram.org/constructor/messages.exportedChatInvites @@ -120,9 +120,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -139,7 +139,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/constructor/messages.favedStickers b/data/core.telegram.org/constructor/messages.favedStickers new file mode 100644 index 0000000000..ec70df2b2f --- /dev/null +++ b/data/core.telegram.org/constructor/messages.favedStickers @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.favedStickers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Favorited stickers"> + <meta property="og:title" content="messages.favedStickers"> + <meta property="og:image" content=""> + <meta property="og:description" content="Favorited stickers"> + <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?215" 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.favedStickers" >messages.favedStickers</a></li></ul></div> + <h1 id="dev_page_title">messages.favedStickers</h1> + + <div id="dev_page_content"><p>Favorited stickers</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.favedStickers" class="current_page_link" >messages.favedStickers</a>#2cb51097 hash:<a href="/type/long" >long</a> packs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerPack" >StickerPack</a>> stickers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/messages.FavedStickers" >messages.FavedStickers</a>;</code></pre></p> +<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th style="text-align: center;">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>hash</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td><a href="/api/offsets#hash-generation">Hash for pagination, for more info click here</a></td> +</tr> +<tr> +<td><strong>packs</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/StickerPack">StickerPack</a>></td> +<td>Emojis associated to stickers</td> +</tr> +<tr> +<td><strong>stickers</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Document">Document</a>></td> +<td>Favorited stickers</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.FavedStickers">messages.FavedStickers</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="#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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/messages.historyImportParsed b/data/core.telegram.org/constructor/messages.historyImportParsed new file mode 100644 index 0000000000..2c49dcc24e --- /dev/null +++ b/data/core.telegram.org/constructor/messages.historyImportParsed @@ -0,0 +1,166 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.historyImportParsed</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Contains information about a chat export file generated by a foreign chat app, click here for more info. If neither the pm or group flags are set, the specified chat export was generated from a chat of unknown type."> + <meta property="og:title" content="messages.historyImportParsed"> + <meta property="og:image" content=""> + <meta property="og:description" content="Contains information about a chat export file generated by a foreign chat app, click here for more info. If neither the pm or group flags are set, the specified chat export was generated from a chat of unknown type."> + <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?215" 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.historyImportParsed" >messages.historyImportParsed</a></li></ul></div> + <h1 id="dev_page_title">messages.historyImportParsed</h1> + + <div id="dev_page_content"><p>Contains information about a chat export file <a href="/api/import">generated by a foreign chat app, click here for more info</a>.<br> +If neither the <code>pm</code> or <code>group</code> flags are set, the specified chat export was generated from a chat of unknown type.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.historyImportParsed" class="current_page_link" >messages.historyImportParsed</a>#5e0fb7b9 flags:<a href="/type/%23" >#</a> pm:flags.0?true group:flags.1?true title:flags.2?<a href="/type/string" >string</a> = <a href="/type/messages.HistoryImportParsed" >messages.HistoryImportParsed</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>pm</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>The chat export file was generated from a private chat.</td> +</tr> +<tr> +<td><strong>group</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>The chat export file was generated from a group chat.</td> +</tr> +<tr> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td> +<td>Title of the chat.</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.HistoryImportParsed">messages.HistoryImportParsed</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/messages.recentStickersNotModified b/data/core.telegram.org/constructor/messages.recentStickersNotModified new file mode 100644 index 0000000000..9b6c0caf08 --- /dev/null +++ b/data/core.telegram.org/constructor/messages.recentStickersNotModified @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.recentStickersNotModified</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="No new recent sticker was found"> + <meta property="og:title" content="messages.recentStickersNotModified"> + <meta property="og:image" content=""> + <meta property="og:description" content="No new recent sticker was found"> + <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?215" 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.recentStickersNotModified" >messages.recentStickersNotModified</a></li></ul></div> + <h1 id="dev_page_title">messages.recentStickersNotModified</h1> + + <div id="dev_page_content"><p>No new recent sticker was found</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.recentStickersNotModified" class="current_page_link" >messages.recentStickersNotModified</a>#b17f890 = <a href="/type/messages.RecentStickers" >messages.RecentStickers</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/messages.RecentStickers">messages.RecentStickers</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/messages.savedGifsNotModified b/data/core.telegram.org/constructor/messages.savedGifsNotModified new file mode 100644 index 0000000000..24e390a658 --- /dev/null +++ b/data/core.telegram.org/constructor/messages.savedGifsNotModified @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.savedGifsNotModified</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="No new saved gifs were found"> + <meta property="og:title" content="messages.savedGifsNotModified"> + <meta property="og:image" content=""> + <meta property="og:description" content="No new saved gifs were found"> + <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?215" 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.savedGifsNotModified" >messages.savedGifsNotModified</a></li></ul></div> + <h1 id="dev_page_title">messages.savedGifsNotModified</h1> + + <div id="dev_page_content"><p>No new saved gifs were found</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.savedGifsNotModified" class="current_page_link" >messages.savedGifsNotModified</a>#e8025ca2 = <a href="/type/messages.SavedGifs" >messages.SavedGifs</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/messages.SavedGifs">messages.SavedGifs</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/messages.sponsoredMessages b/data/core.telegram.org/constructor/messages.sponsoredMessages new file mode 100644 index 0000000000..16b95514f2 --- /dev/null +++ b/data/core.telegram.org/constructor/messages.sponsoredMessages @@ -0,0 +1,157 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.sponsoredMessages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="A set of sponsored messages associated to a channel"> + <meta property="og:title" content="messages.sponsoredMessages"> + <meta property="og:image" content=""> + <meta property="og:description" content="A set of sponsored messages associated to a channel"> + <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?215" 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.sponsoredMessages" >messages.sponsoredMessages</a></li></ul></div> + <h1 id="dev_page_title">messages.sponsoredMessages</h1> + + <div id="dev_page_content"><p>A set of sponsored messages associated to a channel</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.sponsoredMessages" class="current_page_link" >messages.sponsoredMessages</a>#65a4c7d5 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SponsoredMessage" >SponsoredMessage</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.SponsoredMessages" >messages.SponsoredMessages</a>;</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>messages</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/SponsoredMessage">SponsoredMessage</a>></td> +<td>Sponsored messages</td> +</tr> +<tr> +<td><strong>chats</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> +<td>Chats mentioned in the sponsored messages</td> +</tr> +<tr> +<td><strong>users</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> +<td>Users mentioned in the sponsored messages</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.SponsoredMessages">messages.SponsoredMessages</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/messages.stickerSetInstallResultSuccess b/data/core.telegram.org/constructor/messages.stickerSetInstallResultSuccess new file mode 100644 index 0000000000..3e5fb096b1 --- /dev/null +++ b/data/core.telegram.org/constructor/messages.stickerSetInstallResultSuccess @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.stickerSetInstallResultSuccess</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="The stickerset was installed successfully"> + <meta property="og:title" content="messages.stickerSetInstallResultSuccess"> + <meta property="og:image" content=""> + <meta property="og:description" content="The stickerset was installed successfully"> + <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?215" 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.stickerSetInstallResultSuccess" >messages.stickerSetInstallResultSuccess</a></li></ul></div> + <h1 id="dev_page_title">messages.stickerSetInstallResultSuccess</h1> + + <div id="dev_page_content"><p>The stickerset was installed successfully</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.stickerSetInstallResultSuccess" class="current_page_link" >messages.stickerSetInstallResultSuccess</a>#38641628 = <a href="/type/messages.StickerSetInstallResult" >messages.StickerSetInstallResult</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/messages.StickerSetInstallResult">messages.StickerSetInstallResult</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/nearestDc.html b/data/core.telegram.org/constructor/nearestDc.html new file mode 100644 index 0000000000..c1dd455bc7 --- /dev/null +++ b/data/core.telegram.org/constructor/nearestDc.html @@ -0,0 +1,157 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>nearestDc</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Nearest data centre, according to geo-ip."> + <meta property="og:title" content="nearestDc"> + <meta property="og:image" content=""> + <meta property="og:description" content="Nearest data centre, according to geo-ip."> + <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?215" 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/nearestDc" >nearestDc</a></li></ul></div> + <h1 id="dev_page_title">nearestDc</h1> + + <div id="dev_page_content"><p>Nearest data centre, according to geo-ip.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/nearestDc" class="current_page_link" >nearestDc</a>#8e1a1775 country:<a href="/type/string" >string</a> this_dc:<a href="/type/int" >int</a> nearest_dc:<a href="/type/int" >int</a> = <a href="/type/NearestDc" >NearestDc</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>country</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Country code determined by geo-ip</td> +</tr> +<tr> +<td><strong>this_dc</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of current data centre</td> +</tr> +<tr> +<td><strong>nearest_dc</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of nearest data centre</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/NearestDc">NearestDc</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/notifyChats.html b/data/core.telegram.org/constructor/notifyChats.html new file mode 100644 index 0000000000..c2edc13500 --- /dev/null +++ b/data/core.telegram.org/constructor/notifyChats.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>notifyChats</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Notifications generated by all groups."> + <meta property="og:title" content="notifyChats"> + <meta property="og:image" content=""> + <meta property="og:description" content="Notifications generated by all groups."> + <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?215" 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/notifyChats" >notifyChats</a></li></ul></div> + <h1 id="dev_page_title">notifyChats</h1> + + <div id="dev_page_content"><p>Notifications generated by all groups.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/notifyChats" class="current_page_link" >notifyChats</a>#c007cec3 = <a href="/type/NotifyPeer" >NotifyPeer</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/NotifyPeer">NotifyPeer</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/pageBlockAuthorDate.html b/data/core.telegram.org/constructor/pageBlockAuthorDate.html new file mode 100644 index 0000000000..0f24d2fbda --- /dev/null +++ b/data/core.telegram.org/constructor/pageBlockAuthorDate.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>pageBlockAuthorDate</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Author and date of creation of article"> + <meta property="og:title" content="pageBlockAuthorDate"> + <meta property="og:image" content=""> + <meta property="og:description" content="Author and date of creation of article"> + <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?215" 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/pageBlockAuthorDate" >pageBlockAuthorDate</a></li></ul></div> + <h1 id="dev_page_title">pageBlockAuthorDate</h1> + + <div id="dev_page_content"><p>Author and date of creation of article</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/pageBlockAuthorDate" class="current_page_link" >pageBlockAuthorDate</a>#baafe5e0 author:<a href="/type/RichText" >RichText</a> published_date:<a href="/type/int" >int</a> = <a href="/type/PageBlock" >PageBlock</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>author</strong></td> +<td style="text-align: center;"><a href="/type/RichText">RichText</a></td> +<td>Author name</td> +</tr> +<tr> +<td><strong>published_date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Date of pubblication</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/PageBlock">PageBlock</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/pageBlockFooter.html b/data/core.telegram.org/constructor/pageBlockFooter.html new file mode 100644 index 0000000000..b168e0bb1f --- /dev/null +++ b/data/core.telegram.org/constructor/pageBlockFooter.html @@ -0,0 +1,147 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>pageBlockFooter</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Page footer"> + <meta property="og:title" content="pageBlockFooter"> + <meta property="og:image" content=""> + <meta property="og:description" content="Page footer"> + <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?215" 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/pageBlockFooter" >pageBlockFooter</a></li></ul></div> + <h1 id="dev_page_title">pageBlockFooter</h1> + + <div id="dev_page_content"><p>Page footer</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/pageBlockFooter" class="current_page_link" >pageBlockFooter</a>#48870999 text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</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>text</strong></td> +<td style="text-align: center;"><a href="/type/RichText">RichText</a></td> +<td>Contents</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/PageBlock">PageBlock</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/pageBlockPreformatted.html b/data/core.telegram.org/constructor/pageBlockPreformatted.html new file mode 100644 index 0000000000..6efc006058 --- /dev/null +++ b/data/core.telegram.org/constructor/pageBlockPreformatted.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>pageBlockPreformatted</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Preformatted (<pre> text)"> + <meta property="og:title" content="pageBlockPreformatted"> + <meta property="og:image" content=""> + <meta property="og:description" content="Preformatted (<pre> text)"> + <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?215" 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/pageBlockPreformatted" >pageBlockPreformatted</a></li></ul></div> + <h1 id="dev_page_title">pageBlockPreformatted</h1> + + <div id="dev_page_content"><p>Preformatted (<code><pre></code> text)</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/pageBlockPreformatted" class="current_page_link" >pageBlockPreformatted</a>#c070d93e text:<a href="/type/RichText" >RichText</a> language:<a href="/type/string" >string</a> = <a href="/type/PageBlock" >PageBlock</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>text</strong></td> +<td style="text-align: center;"><a href="/type/RichText">RichText</a></td> +<td>Text</td> +</tr> +<tr> +<td><strong>language</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Programming language of preformatted text</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/PageBlock">PageBlock</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/pageBlockSlideshow.html b/data/core.telegram.org/constructor/pageBlockSlideshow.html new file mode 100644 index 0000000000..dbf984b58b --- /dev/null +++ b/data/core.telegram.org/constructor/pageBlockSlideshow.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>pageBlockSlideshow</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Slideshow"> + <meta property="og:title" content="pageBlockSlideshow"> + <meta property="og:image" content=""> + <meta property="og:description" content="Slideshow"> + <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?215" 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/pageBlockSlideshow" >pageBlockSlideshow</a></li></ul></div> + <h1 id="dev_page_title">pageBlockSlideshow</h1> + + <div id="dev_page_content"><p>Slideshow</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/pageBlockSlideshow" class="current_page_link" >pageBlockSlideshow</a>#31f9590 items:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> caption:<a href="/type/PageCaption" >PageCaption</a> = <a href="/type/PageBlock" >PageBlock</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>items</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/PageBlock">PageBlock</a>></td> +<td>Slideshow items</td> +</tr> +<tr> +<td><strong>caption</strong></td> +<td style="text-align: center;"><a href="/type/PageCaption">PageCaption</a></td> +<td>Caption</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/PageBlock">PageBlock</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/textPlain.html b/data/core.telegram.org/constructor/pageBlockSubtitle.html similarity index 91% rename from data/core.telegram.org/constructor/textPlain.html rename to data/core.telegram.org/constructor/pageBlockSubtitle.html index de391188b4..56ecef710c 100644 --- a/data/core.telegram.org/constructor/textPlain.html +++ b/data/core.telegram.org/constructor/pageBlockSubtitle.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>textPlain</title> + <title>pageBlockSubtitle</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Plain text"> - <meta property="og:title" content="textPlain"> + <meta property="description" content="Subtitle"> + <meta property="og:title" content="pageBlockSubtitle"> <meta property="og:image" content=""> - <meta property="og:description" content="Plain text"> + <meta property="og:description" content="Subtitle"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/textPlain" >textPlain</a></li></ul></div> - <h1 id="dev_page_title">textPlain</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/pageBlockSubtitle" >pageBlockSubtitle</a></li></ul></div> + <h1 id="dev_page_title">pageBlockSubtitle</h1> - <div id="dev_page_content"><p>Plain text</p> + <div id="dev_page_content"><p>Subtitle</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/textPlain" class="current_page_link" >textPlain</a>#744694e0 text:<a href="/type/string" >string</a> = <a href="/type/RichText" >RichText</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/pageBlockSubtitle" class="current_page_link" >pageBlockSubtitle</a>#8ffa9a1f text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</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> @@ -65,13 +65,13 @@ <tbody> <tr> <td><strong>text</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> +<td style="text-align: center;"><a href="/type/RichText">RichText</a></td> <td>Text</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/RichText">RichText</a></p></div> +<p><a href="/type/PageBlock">PageBlock</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/pageBlockTable.html b/data/core.telegram.org/constructor/pageBlockVideo.html similarity index 88% rename from data/core.telegram.org/constructor/pageBlockTable.html rename to data/core.telegram.org/constructor/pageBlockVideo.html index 7b1acbc3b0..662ddf3ab6 100644 --- a/data/core.telegram.org/constructor/pageBlockTable.html +++ b/data/core.telegram.org/constructor/pageBlockVideo.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>pageBlockTable</title> + <title>pageBlockVideo</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Table"> - <meta property="og:title" content="pageBlockTable"> + <meta property="description" content="Video"> + <meta property="og:title" content="pageBlockVideo"> <meta property="og:image" content=""> - <meta property="og:description" content="Table"> + <meta property="og:description" content="Video"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/pageBlockTable" >pageBlockTable</a></li></ul></div> - <h1 id="dev_page_title">pageBlockTable</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/pageBlockVideo" >pageBlockVideo</a></li></ul></div> + <h1 id="dev_page_title">pageBlockVideo</h1> - <div id="dev_page_content"><p>Table</p> + <div id="dev_page_content"><p>Video</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/pageBlockTable" class="current_page_link" >pageBlockTable</a>#bf4dea82 flags:<a href="/type/%23" >#</a> bordered:flags.0?true striped:flags.1?true title:<a href="/type/RichText" >RichText</a> rows:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageTableRow" >PageTableRow</a>> = <a href="/type/PageBlock" >PageBlock</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/pageBlockVideo" class="current_page_link" >pageBlockVideo</a>#7c8fe7b6 flags:<a href="/type/%23" >#</a> autoplay:flags.0?true loop:flags.1?true video_id:<a href="/type/long" >long</a> caption:<a href="/type/PageCaption" >PageCaption</a> = <a href="/type/PageBlock" >PageBlock</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> @@ -69,24 +69,24 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>bordered</strong></td> +<td><strong>autoplay</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>Does the table have a visible border?</td> +<td>Whether the video is set to autoplay</td> </tr> <tr> -<td><strong>striped</strong></td> +<td><strong>loop</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>Is the table striped?</td> +<td>Whether the video is set to loop</td> </tr> <tr> -<td><strong>title</strong></td> -<td style="text-align: center;"><a href="/type/RichText">RichText</a></td> -<td>Title</td> +<td><strong>video_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Video ID</td> </tr> <tr> -<td><strong>rows</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/PageTableRow">PageTableRow</a>></td> -<td>Table rows</td> +<td><strong>caption</strong></td> +<td style="text-align: center;"><a href="/type/PageCaption">PageCaption</a></td> +<td>Caption</td> </tr> </tbody> </table> diff --git a/data/core.telegram.org/constructor/pageListOrderedItemBlocks.html b/data/core.telegram.org/constructor/pageListOrderedItemBlocks.html deleted file mode 100644 index f4ffdb10f5..0000000000 --- a/data/core.telegram.org/constructor/pageListOrderedItemBlocks.html +++ /dev/null @@ -1,152 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>pageListOrderedItemBlocks</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Ordered list of IV blocks"> - <meta property="og:title" content="pageListOrderedItemBlocks"> - <meta property="og:image" content=""> - <meta property="og:description" content="Ordered list of IV blocks"> - <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?215" 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/pageListOrderedItemBlocks" >pageListOrderedItemBlocks</a></li></ul></div> - <h1 id="dev_page_title">pageListOrderedItemBlocks</h1> - - <div id="dev_page_content"><p>Ordered list of <a href="https://instantview.telegram.org">IV</a> blocks</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/pageListOrderedItemBlocks" class="current_page_link" >pageListOrderedItemBlocks</a>#98dd8936 num:<a href="/type/string" >string</a> blocks:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> = <a href="/type/PageListOrderedItem" >PageListOrderedItem</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>num</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Number of element within ordered list</td> -</tr> -<tr> -<td><strong>blocks</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/PageBlock">PageBlock</a>></td> -<td>Item contents</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/PageListOrderedItem">PageListOrderedItem</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/core.telegram.org/constructor/messages.botCallbackAnswer b/data/core.telegram.org/constructor/pageRelatedArticle.html similarity index 82% rename from data/core.telegram.org/constructor/messages.botCallbackAnswer rename to data/core.telegram.org/constructor/pageRelatedArticle.html index d89ee5a8a4..2a0691b04c 100644 --- a/data/core.telegram.org/constructor/messages.botCallbackAnswer +++ b/data/core.telegram.org/constructor/pageRelatedArticle.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.botCallbackAnswer</title> + <title>pageRelatedArticle</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Callback answer sent by the bot in response to a button press"> - <meta property="og:title" content="messages.botCallbackAnswer"> + <meta property="description" content="Related article"> + <meta property="og:title" content="pageRelatedArticle"> <meta property="og:image" content=""> - <meta property="og:description" content="Callback answer sent by the bot in response to a button press"> + <meta property="og:description" content="Related article"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.botCallbackAnswer" >messages.botCallbackAnswer</a></li></ul></div> - <h1 id="dev_page_title">messages.botCallbackAnswer</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/pageRelatedArticle" >pageRelatedArticle</a></li></ul></div> + <h1 id="dev_page_title">pageRelatedArticle</h1> - <div id="dev_page_content"><p>Callback answer sent by the bot in response to a button press</p> + <div id="dev_page_content"><p>Related article</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.botCallbackAnswer" class="current_page_link" >messages.botCallbackAnswer</a>#36585ea4 flags:<a href="/type/%23" >#</a> alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?<a href="/type/string" >string</a> url:flags.2?<a href="/type/string" >string</a> cache_time:<a href="/type/int" >int</a> = <a href="/type/messages.BotCallbackAnswer" >messages.BotCallbackAnswer</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/pageRelatedArticle" class="current_page_link" >pageRelatedArticle</a>#b390dc08 flags:<a href="/type/%23" >#</a> url:<a href="/type/string" >string</a> webpage_id:<a href="/type/long" >long</a> title:flags.0?<a href="/type/string" >string</a> description:flags.1?<a href="/type/string" >string</a> photo_id:flags.2?<a href="/type/long" >long</a> author:flags.3?<a href="/type/string" >string</a> published_date:flags.4?<a href="/type/int" >int</a> = <a href="/type/PageRelatedArticle" >PageRelatedArticle</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> @@ -69,39 +69,44 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>alert</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>Whether an alert should be shown to the user instead of a toast notification</td> -</tr> -<tr> -<td><strong>has_url</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>Whether an URL is present</td> -</tr> -<tr> -<td><strong>native_ui</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>Whether to show games in WebView or in native UI.</td> -</tr> -<tr> -<td><strong>message</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/string">string</a></td> -<td>Alert to show</td> -</tr> -<tr> <td><strong>url</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td> -<td>URL to open</td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>URL of article</td> </tr> <tr> -<td><strong>cache_time</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>For how long should this answer be cached</td> +<td><strong>webpage_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Webpage ID of generated IV preview</td> +</tr> +<tr> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/string">string</a></td> +<td>Title</td> +</tr> +<tr> +<td><strong>description</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/string">string</a></td> +<td>Description</td> +</tr> +<tr> +<td><strong>photo_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/long">long</a></td> +<td>ID of preview photo</td> +</tr> +<tr> +<td><strong>author</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td> +<td>Author name</td> +</tr> +<tr> +<td><strong>published_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/int">int</a></td> +<td>Date of pubblication</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.BotCallbackAnswer">messages.BotCallbackAnswer</a></p></div> +<p><a href="/type/PageRelatedArticle">PageRelatedArticle</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/autoDownloadSettings.html b/data/core.telegram.org/constructor/pageTableCell.html similarity index 78% rename from data/corefork.telegram.org/constructor/autoDownloadSettings.html rename to data/core.telegram.org/constructor/pageTableCell.html index 14bd5f47ee..dd1952dc1e 100644 --- a/data/corefork.telegram.org/constructor/autoDownloadSettings.html +++ b/data/core.telegram.org/constructor/pageTableCell.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>autoDownloadSettings</title> + <title>pageTableCell</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Autodownload settings"> - <meta property="og:title" content="autoDownloadSettings"> + <meta property="description" content="Table cell"> + <meta property="og:title" content="pageTableCell"> <meta property="og:image" content=""> - <meta property="og:description" content="Autodownload settings"> + <meta property="og:description" content="Table cell"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/autoDownloadSettings" >autoDownloadSettings</a></li></ul></div> - <h1 id="dev_page_title">autoDownloadSettings</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/pageTableCell" >pageTableCell</a></li></ul></div> + <h1 id="dev_page_title">pageTableCell</h1> - <div id="dev_page_content"><p>Autodownload settings</p> + <div id="dev_page_content"><p>Table cell</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/autoDownloadSettings" class="current_page_link" >autoDownloadSettings</a>#e04232f3 flags:<a href="/type/%23" >#</a> disabled:flags.0?true video_preload_large:flags.1?true audio_preload_next:flags.2?true phonecalls_less_data:flags.3?true photo_size_max:<a href="/type/int" >int</a> video_size_max:<a href="/type/int" >int</a> file_size_max:<a href="/type/int" >int</a> video_upload_maxbitrate:<a href="/type/int" >int</a> = <a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/pageTableCell" class="current_page_link" >pageTableCell</a>#34566b6a flags:<a href="/type/%23" >#</a> header:flags.0?true align_center:flags.3?true align_right:flags.4?true valign_middle:flags.5?true valign_bottom:flags.6?true text:flags.7?<a href="/type/RichText" >RichText</a> colspan:flags.1?<a href="/type/int" >int</a> rowspan:flags.2?<a href="/type/int" >int</a> = <a href="/type/PageTableCell" >PageTableCell</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> @@ -69,49 +69,49 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>disabled</strong></td> +<td><strong>header</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>Disable automatic media downloads?</td> +<td>Is this element part of the column header</td> </tr> <tr> -<td><strong>video_preload_large</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>Whether to preload the first seconds of videos larger than the specified limit</td> -</tr> -<tr> -<td><strong>audio_preload_next</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>Whether to preload the next audio track when you're listening to music</td> -</tr> -<tr> -<td><strong>phonecalls_less_data</strong></td> +<td><strong>align_center</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>Whether to enable data saving mode in phone calls</td> +<td>Horizontally centered block</td> </tr> <tr> -<td><strong>photo_size_max</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Maximum size of photos to preload</td> +<td><strong>align_right</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>Right-aligned block</td> </tr> <tr> -<td><strong>video_size_max</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Maximum size of videos to preload</td> +<td><strong>valign_middle</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>Vertically centered block</td> </tr> <tr> -<td><strong>file_size_max</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Maximum size of other files to preload</td> +<td><strong>valign_bottom</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>Block vertically-alligned to the bottom</td> </tr> <tr> -<td><strong>video_upload_maxbitrate</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Maximum suggested bitrate for <strong>uploading</strong> videos</td> +<td><strong>text</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/type/RichText">RichText</a></td> +<td>Content</td> +</tr> +<tr> +<td><strong>colspan</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>For how many columns should this cell extend</td> +</tr> +<tr> +<td><strong>rowspan</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> +<td>For how many rows should this cell extend</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/AutoDownloadSettings">AutoDownloadSettings</a></p></div> +<p><a href="/type/PageTableCell">PageTableCell</a></p></div> </div> @@ -150,9 +150,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -169,7 +169,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/constructor/messages.inactiveChats b/data/core.telegram.org/constructor/phone.joinAsPeers similarity index 85% rename from data/corefork.telegram.org/constructor/messages.inactiveChats rename to data/core.telegram.org/constructor/phone.joinAsPeers index 308ac64502..9da076f9c0 100644 --- a/data/corefork.telegram.org/constructor/messages.inactiveChats +++ b/data/core.telegram.org/constructor/phone.joinAsPeers @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.inactiveChats</title> + <title>phone.joinAsPeers</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Inactive chat list"> - <meta property="og:title" content="messages.inactiveChats"> + <meta property="description" content="A list of peers that can be used to join a group call, presenting yourself as a specific user/channel."> + <meta property="og:title" content="phone.joinAsPeers"> <meta property="og:image" content=""> - <meta property="og:description" content="Inactive chat list"> + <meta property="og:description" content="A list of peers that can be used to join a group call, presenting yourself as a specific user/channel."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.inactiveChats" >messages.inactiveChats</a></li></ul></div> - <h1 id="dev_page_title">messages.inactiveChats</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/phone.joinAsPeers" >phone.joinAsPeers</a></li></ul></div> + <h1 id="dev_page_title">phone.joinAsPeers</h1> - <div id="dev_page_content"><p>Inactive chat list</p> + <div id="dev_page_content"><p>A list of peers that can be used to join a group call, presenting yourself as a specific user/channel.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.inactiveChats" class="current_page_link" >messages.inactiveChats</a>#a927fec5 dates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.InactiveChats" >messages.InactiveChats</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/phone.joinAsPeers" class="current_page_link" >phone.joinAsPeers</a>#afe5623f peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Peer" >Peer</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/phone.JoinAsPeers" >phone.JoinAsPeers</a>;</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> @@ -64,24 +64,24 @@ </thead> <tbody> <tr> -<td><strong>dates</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> -<td>When was the chat last active</td> +<td><strong>peers</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Peer">Peer</a>></td> +<td>Peers</td> </tr> <tr> <td><strong>chats</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> -<td>Chat list</td> +<td>Chats mentioned in the peers vector</td> </tr> <tr> <td><strong>users</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>Users mentioned in the chat list</td> +<td>Users mentioned in the peers vector</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.InactiveChats">messages.InactiveChats</a></p></div> +<p><a href="/type/phone.JoinAsPeers">phone.JoinAsPeers</a></p></div> </div> @@ -120,9 +120,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -139,7 +139,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/constructor/phoneCallDiscarded.html b/data/core.telegram.org/constructor/phoneCallDiscarded.html new file mode 100644 index 0000000000..b3a32314fc --- /dev/null +++ b/data/core.telegram.org/constructor/phoneCallDiscarded.html @@ -0,0 +1,182 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>phoneCallDiscarded</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Indicates a discarded phone call"> + <meta property="og:title" content="phoneCallDiscarded"> + <meta property="og:image" content=""> + <meta property="og:description" content="Indicates a discarded phone 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?215" 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/phoneCallDiscarded" >phoneCallDiscarded</a></li></ul></div> + <h1 id="dev_page_title">phoneCallDiscarded</h1> + + <div id="dev_page_content"><p>Indicates a discarded phone 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/phoneCallDiscarded" class="current_page_link" >phoneCallDiscarded</a>#50ca4de1 flags:<a href="/type/%23" >#</a> need_rating:flags.2?true need_debug:flags.3?true video:flags.6?true id:<a href="/type/long" >long</a> reason:flags.0?<a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a> duration:flags.1?<a href="/type/int" >int</a> = <a href="/type/PhoneCall" >PhoneCall</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>need_rating</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>Whether the server required the user to <a href="/method/phone.setCallRating">rate</a> the call</td> +</tr> +<tr> +<td><strong>need_debug</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>Whether the server required the client to <a href="/method/phone.saveCallDebug">send</a> the libtgvoip call debug data</td> +</tr> +<tr> +<td><strong>video</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/constructor/true">true</a></td> +<td>Whether the call was a video call</td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Call ID</td> +</tr> +<tr> +<td><strong>reason</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/PhoneCallDiscardReason">PhoneCallDiscardReason</a></td> +<td>Why was the phone call discarded</td> +</tr> +<tr> +<td><strong>duration</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>Duration of the phone call in seconds</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/PhoneCall">PhoneCall</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="#phonesetcallrating" id="phonesetcallrating" name="phonesetcallrating"><i class="anchor-icon"></i></a><a href="/method/phone.setCallRating">phone.setCallRating</a></h4> +<p>Rate a call</p> +<h4><a class="anchor" href="#phonesavecalldebug" id="phonesavecalldebug" name="phonesavecalldebug"><i class="anchor-icon"></i></a><a href="/method/phone.saveCallDebug">phone.saveCallDebug</a></h4> +<p>Send phone call debug data to server</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/messageMediaContact.html b/data/core.telegram.org/constructor/phoneConnection.html similarity index 85% rename from data/core.telegram.org/constructor/messageMediaContact.html rename to data/core.telegram.org/constructor/phoneConnection.html index 4fd06b089e..3d716a6502 100644 --- a/data/core.telegram.org/constructor/messageMediaContact.html +++ b/data/core.telegram.org/constructor/phoneConnection.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messageMediaContact</title> + <title>phoneConnection</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Attached contact."> - <meta property="og:title" content="messageMediaContact"> + <meta property="description" content="Identifies an endpoint that can be used to connect to the other user in a phone call"> + <meta property="og:title" content="phoneConnection"> <meta property="og:image" content=""> - <meta property="og:description" content="Attached contact."> + <meta property="og:description" content="Identifies an endpoint that can be used to connect to the other user in a phone call"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/messageMediaContact" >messageMediaContact</a></li></ul></div> - <h1 id="dev_page_title">messageMediaContact</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/phoneConnection" >phoneConnection</a></li></ul></div> + <h1 id="dev_page_title">phoneConnection</h1> - <div id="dev_page_content"><p>Attached contact.</p> + <div id="dev_page_content"><p>Identifies an endpoint that can be used to connect to the other user in a phone call</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messageMediaContact" class="current_page_link" >messageMediaContact</a>#70322949 phone_number:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> vcard:<a href="/type/string" >string</a> user_id:<a href="/type/long" >long</a> = <a href="/type/MessageMedia" >MessageMedia</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/phoneConnection" class="current_page_link" >phoneConnection</a>#9d4c17c0 id:<a href="/type/long" >long</a> ip:<a href="/type/string" >string</a> ipv6:<a href="/type/string" >string</a> port:<a href="/type/int" >int</a> peer_tag:<a href="/type/bytes" >bytes</a> = <a href="/type/PhoneConnection" >PhoneConnection</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> @@ -64,34 +64,34 @@ </thead> <tbody> <tr> -<td><strong>phone_number</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Phone number</td> -</tr> -<tr> -<td><strong>first_name</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Contact's first name</td> -</tr> -<tr> -<td><strong>last_name</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Contact's last name</td> -</tr> -<tr> -<td><strong>vcard</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>VCARD of contact</td> -</tr> -<tr> -<td><strong>user_id</strong></td> +<td><strong>id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>User identifier or <code>0</code>, if the user with the given phone number is not registered</td> +<td>Endpoint ID</td> +</tr> +<tr> +<td><strong>ip</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>IP address of endpoint</td> +</tr> +<tr> +<td><strong>ipv6</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>IPv6 address of endpoint</td> +</tr> +<tr> +<td><strong>port</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Port ID</td> +</tr> +<tr> +<td><strong>peer_tag</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Our peer tag</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/MessageMedia">MessageMedia</a></p></div> +<p><a href="/type/PhoneConnection">PhoneConnection</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/photoSizeProgressive.html b/data/core.telegram.org/constructor/photoStrippedSize.html similarity index 84% rename from data/corefork.telegram.org/constructor/photoSizeProgressive.html rename to data/core.telegram.org/constructor/photoStrippedSize.html index 9f50cf22c4..6fb252ccfb 100644 --- a/data/corefork.telegram.org/constructor/photoSizeProgressive.html +++ b/data/core.telegram.org/constructor/photoStrippedSize.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>photoSizeProgressive</title> + <title>photoStrippedSize</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Progressively encoded photosize"> - <meta property="og:title" content="photoSizeProgressive"> + <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="Progressively encoded photosize"> + <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"> @@ -36,10 +36,10 @@ <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/photoSizeProgressive" >photoSizeProgressive</a></li></ul></div> - <h1 id="dev_page_title">photoSizeProgressive</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/photoStrippedSize" >photoStrippedSize</a></li></ul></div> + <h1 id="dev_page_title">photoStrippedSize</h1> - <div id="dev_page_content"><p>Progressively encoded photosize</p> + <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"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/photoSizeProgressive" class="current_page_link" >photoSizeProgressive</a>#fa3efb95 type:<a href="/type/string" >string</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> sizes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/PhotoSize" >PhotoSize</a>;</code></pre></p> +<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> @@ -66,32 +66,24 @@ <tr> <td><strong>type</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Photosize type</td> +<td>Thumbnail type</td> </tr> <tr> -<td><strong>w</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Photo width</td> -</tr> -<tr> -<td><strong>h</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Photo height</td> -</tr> -<tr> -<td><strong>sizes</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> -<td>Sizes of progressive JPEG file prefixes, which can be used to preliminarily show the image.</td> +<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 <a href="/api/files#image-thumbnail-types">here</a>.</p> +<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></div> +<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> @@ -130,9 +122,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -149,7 +141,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/constructor/poll.html b/data/core.telegram.org/constructor/poll.html new file mode 100644 index 0000000000..55d47dbc5d --- /dev/null +++ b/data/core.telegram.org/constructor/poll.html @@ -0,0 +1,195 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>poll</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Poll"> + <meta property="og:title" content="poll"> + <meta property="og:image" content=""> + <meta property="og:description" content="Poll"> + <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?215" 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/poll" >poll</a></li></ul></div> + <h1 id="dev_page_title">poll</h1> + + <div id="dev_page_content"><p>Poll</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/poll" class="current_page_link" >poll</a>#86e18161 id:<a href="/type/long" >long</a> flags:<a href="/type/%23" >#</a> closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:<a href="/type/string" >string</a> answers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PollAnswer" >PollAnswer</a>> close_period:flags.4?<a href="/type/int" >int</a> close_date:flags.5?<a href="/type/int" >int</a> = <a href="/type/Poll" >Poll</a>;</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>ID of the poll</td> +</tr> +<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>closed</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 the poll is closed and doesn't accept any more answers</td> +</tr> +<tr> +<td><strong>public_voters</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>Whether cast votes are publicly visible to all users (non-anonymous poll)</td> +</tr> +<tr> +<td><strong>multiple_choice</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>Whether multiple options can be chosen as answer</td> +</tr> +<tr> +<td><strong>quiz</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>Whether this is a quiz (with wrong and correct answers, results shown in the return type)</td> +</tr> +<tr> +<td><strong>question</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The question of the poll</td> +</tr> +<tr> +<td><strong>answers</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/PollAnswer">PollAnswer</a>></td> +<td>The possible answers, vote using <a href="/method/messages.sendVote">messages.sendVote</a>.</td> +</tr> +<tr> +<td><strong>close_period</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/int">int</a></td> +<td>Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with close_date.</td> +</tr> +<tr> +<td><strong>close_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/int">int</a></td> +<td>Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future; can't be used together with close_period.</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/Poll">Poll</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="#messagessendvote" id="messagessendvote" name="messagessendvote"><i class="anchor-icon"></i></a><a href="/method/messages.sendVote">messages.sendVote</a></h4> +<p>Vote in a <a href="/constructor/poll">poll</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/privacyValueDisallowChatParticipants.html b/data/core.telegram.org/constructor/privacyValueAllowUsers.html similarity index 90% rename from data/core.telegram.org/constructor/privacyValueDisallowChatParticipants.html rename to data/core.telegram.org/constructor/privacyValueAllowUsers.html index 6edaebacd4..74c2d8375e 100644 --- a/data/core.telegram.org/constructor/privacyValueDisallowChatParticipants.html +++ b/data/core.telegram.org/constructor/privacyValueAllowUsers.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>privacyValueDisallowChatParticipants</title> + <title>privacyValueAllowUsers</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Disallow only participants of certain chats"> - <meta property="og:title" content="privacyValueDisallowChatParticipants"> + <meta property="description" content="Allow only certain users"> + <meta property="og:title" content="privacyValueAllowUsers"> <meta property="og:image" content=""> - <meta property="og:description" content="Disallow only participants of certain chats"> + <meta property="og:description" content="Allow only certain users"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/privacyValueDisallowChatParticipants" >privacyValueDisallowChatParticipants</a></li></ul></div> - <h1 id="dev_page_title">privacyValueDisallowChatParticipants</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/privacyValueAllowUsers" >privacyValueAllowUsers</a></li></ul></div> + <h1 id="dev_page_title">privacyValueAllowUsers</h1> - <div id="dev_page_content"><p>Disallow only participants of certain chats</p> + <div id="dev_page_content"><p>Allow only certain users</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/privacyValueDisallowChatParticipants" class="current_page_link" >privacyValueDisallowChatParticipants</a>#41c87565 chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/PrivacyRule" >PrivacyRule</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/privacyValueAllowUsers" class="current_page_link" >privacyValueAllowUsers</a>#b8905fb2 users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/PrivacyRule" >PrivacyRule</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> @@ -64,9 +64,9 @@ </thead> <tbody> <tr> -<td><strong>chats</strong></td> +<td><strong>users</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>></td> -<td>Disallowed chats</td> +<td>Allowed users</td> </tr> </tbody> </table> diff --git a/data/core.telegram.org/constructor/receivedNotifyMessage.html b/data/core.telegram.org/constructor/receivedNotifyMessage.html new file mode 100644 index 0000000000..369fba0239 --- /dev/null +++ b/data/core.telegram.org/constructor/receivedNotifyMessage.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>receivedNotifyMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Message ID, for which PUSH-notifications were cancelled."> + <meta property="og:title" content="receivedNotifyMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Message ID, for which PUSH-notifications were cancelled."> + <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?215" 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/receivedNotifyMessage" >receivedNotifyMessage</a></li></ul></div> + <h1 id="dev_page_title">receivedNotifyMessage</h1> + + <div id="dev_page_content"><p>Message ID, for which PUSH-notifications were cancelled.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/receivedNotifyMessage" class="current_page_link" >receivedNotifyMessage</a>#a384b779 id:<a href="/type/int" >int</a> flags:<a href="/type/int" >int</a> = <a href="/type/ReceivedNotifyMessage" >ReceivedNotifyMessage</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/int">int</a></td> +<td>Message ID, for which PUSH-notifications were canceled</td> +</tr> +<tr> +<td><strong>flags</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Reserved for future use</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/ReceivedNotifyMessage">ReceivedNotifyMessage</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/secureRequiredTypeOneOf.html b/data/core.telegram.org/constructor/replyInlineMarkup.html similarity index 89% rename from data/core.telegram.org/constructor/secureRequiredTypeOneOf.html rename to data/core.telegram.org/constructor/replyInlineMarkup.html index 964273ab07..358df9d4e8 100644 --- a/data/core.telegram.org/constructor/secureRequiredTypeOneOf.html +++ b/data/core.telegram.org/constructor/replyInlineMarkup.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>secureRequiredTypeOneOf</title> + <title>replyInlineMarkup</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="One of"> - <meta property="og:title" content="secureRequiredTypeOneOf"> + <meta property="description" content="Bot or inline keyboard"> + <meta property="og:title" content="replyInlineMarkup"> <meta property="og:image" content=""> - <meta property="og:description" content="One of"> + <meta property="og:description" content="Bot or inline keyboard"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/secureRequiredTypeOneOf" >secureRequiredTypeOneOf</a></li></ul></div> - <h1 id="dev_page_title">secureRequiredTypeOneOf</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/replyInlineMarkup" >replyInlineMarkup</a></li></ul></div> + <h1 id="dev_page_title">replyInlineMarkup</h1> - <div id="dev_page_content"><p>One of</p> + <div id="dev_page_content"><p>Bot or inline keyboard</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/secureRequiredTypeOneOf" class="current_page_link" >secureRequiredTypeOneOf</a>#27477b4 types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureRequiredType" >SecureRequiredType</a>> = <a href="/type/SecureRequiredType" >SecureRequiredType</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/replyInlineMarkup" class="current_page_link" >replyInlineMarkup</a>#48a30254 rows:<a href="/type/Vector%20t" >Vector</a><<a href="/type/KeyboardButtonRow" >KeyboardButtonRow</a>> = <a href="/type/ReplyMarkup" >ReplyMarkup</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> @@ -64,14 +64,14 @@ </thead> <tbody> <tr> -<td><strong>types</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/SecureRequiredType">SecureRequiredType</a>></td> -<td>Secure required value types</td> +<td><strong>rows</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/KeyboardButtonRow">KeyboardButtonRow</a>></td> +<td>Bot or inline keyboard rows</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/SecureRequiredType">SecureRequiredType</a></p></div> +<p><a href="/type/ReplyMarkup">ReplyMarkup</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/inputMediaPhotoExternal.html b/data/core.telegram.org/constructor/replyKeyboardHide.html similarity index 86% rename from data/core.telegram.org/constructor/inputMediaPhotoExternal.html rename to data/core.telegram.org/constructor/replyKeyboardHide.html index 1371cdf4df..1e81784d4a 100644 --- a/data/core.telegram.org/constructor/inputMediaPhotoExternal.html +++ b/data/core.telegram.org/constructor/replyKeyboardHide.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputMediaPhotoExternal</title> + <title>replyKeyboardHide</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="New photo that will be uploaded by the server using the specified URL"> - <meta property="og:title" content="inputMediaPhotoExternal"> + <meta property="description" content="Hide sent bot keyboard"> + <meta property="og:title" content="replyKeyboardHide"> <meta property="og:image" content=""> - <meta property="og:description" content="New photo that will be uploaded by the server using the specified URL"> + <meta property="og:description" content="Hide sent bot keyboard"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputMediaPhotoExternal" >inputMediaPhotoExternal</a></li></ul></div> - <h1 id="dev_page_title">inputMediaPhotoExternal</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/replyKeyboardHide" >replyKeyboardHide</a></li></ul></div> + <h1 id="dev_page_title">replyKeyboardHide</h1> - <div id="dev_page_content"><p>New photo that will be uploaded by the server using the specified URL</p> + <div id="dev_page_content"><p>Hide sent bot keyboard</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputMediaPhotoExternal" class="current_page_link" >inputMediaPhotoExternal</a>#e5bbfe1a flags:<a href="/type/%23" >#</a> url:<a href="/type/string" >string</a> ttl_seconds:flags.0?<a href="/type/int" >int</a> = <a href="/type/InputMedia" >InputMedia</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/replyKeyboardHide" class="current_page_link" >replyKeyboardHide</a>#a03e5b85 flags:<a href="/type/%23" >#</a> selective:flags.2?true = <a href="/type/ReplyMarkup" >ReplyMarkup</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> @@ -69,19 +69,14 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>url</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>URL of the photo</td> -</tr> -<tr> -<td><strong>ttl_seconds</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>Self-destruct time to live of photo</td> +<td><strong>selective</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>Use this flag if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.<br><br>Example: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet</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/InputMedia">InputMedia</a></p></div> +<p><a href="/type/ReplyMarkup">ReplyMarkup</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/replyKeyboardMarkup.html b/data/core.telegram.org/constructor/replyKeyboardMarkup.html similarity index 98% rename from data/corefork.telegram.org/constructor/replyKeyboardMarkup.html rename to data/core.telegram.org/constructor/replyKeyboardMarkup.html index 3527ef98f8..7f2009e348 100644 --- a/data/corefork.telegram.org/constructor/replyKeyboardMarkup.html +++ b/data/core.telegram.org/constructor/replyKeyboardMarkup.html @@ -135,9 +135,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -154,7 +154,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/constructor/secureValueErrorSelfie.html b/data/core.telegram.org/constructor/secureValueErrorSelfie.html new file mode 100644 index 0000000000..0a05a21b7f --- /dev/null +++ b/data/core.telegram.org/constructor/secureValueErrorSelfie.html @@ -0,0 +1,166 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueErrorSelfie</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes."> + <meta property="og:title" content="secureValueErrorSelfie"> + <meta property="og:image" content=""> + <meta property="og:description" content="Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes."> + <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?215" 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/secureValueErrorSelfie" >secureValueErrorSelfie</a></li></ul></div> + <h1 id="dev_page_title">secureValueErrorSelfie</h1> + + <div id="dev_page_content"><p>Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueErrorSelfie" class="current_page_link" >secureValueErrorSelfie</a>#e537ced6 type:<a href="/type/SecureValueType" >SecureValueType</a> file_hash:<a href="/type/bytes" >bytes</a> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>;</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/SecureValueType">SecureValueType</a></td> +<td>One of <a href="/constructor/secureValueTypePassport">secureValueTypePassport</a>, <a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a>, <a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a>, <a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></td> +</tr> +<tr> +<td><strong>file_hash</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>File hash</td> +</tr> +<tr> +<td><strong>text</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Error message</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/SecureValueError">SecureValueError</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="#securevaluetypepassport" id="securevaluetypepassport" name="securevaluetypepassport"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypePassport">secureValueTypePassport</a></h4> +<p>Passport</p> +<h4><a class="anchor" href="#securevaluetypedriverlicense" id="securevaluetypedriverlicense" name="securevaluetypedriverlicense"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a></h4> +<p>Driver's license</p> +<h4><a class="anchor" href="#securevaluetypeidentitycard" id="securevaluetypeidentitycard" name="securevaluetypeidentitycard"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a></h4> +<p>Identity card</p> +<h4><a class="anchor" href="#securevaluetypeinternalpassport" id="securevaluetypeinternalpassport" name="securevaluetypeinternalpassport"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></h4> +<p>Internal <a href="/passport">passport</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/secureValueErrorTranslationFile.html b/data/core.telegram.org/constructor/secureValueErrorTranslationFile.html new file mode 100644 index 0000000000..19f9424f76 --- /dev/null +++ b/data/core.telegram.org/constructor/secureValueErrorTranslationFile.html @@ -0,0 +1,178 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueErrorTranslationFile</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes."> + <meta property="og:title" content="secureValueErrorTranslationFile"> + <meta property="og:image" content=""> + <meta property="og:description" content="Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes."> + <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?215" 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/secureValueErrorTranslationFile" >secureValueErrorTranslationFile</a></li></ul></div> + <h1 id="dev_page_title">secureValueErrorTranslationFile</h1> + + <div id="dev_page_content"><p>Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueErrorTranslationFile" class="current_page_link" >secureValueErrorTranslationFile</a>#a1144770 type:<a href="/type/SecureValueType" >SecureValueType</a> file_hash:<a href="/type/bytes" >bytes</a> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>;</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/SecureValueType">SecureValueType</a></td> +<td>One of <a href="/constructor/secureValueTypePersonalDetails">secureValueTypePersonalDetails</a>, <a href="/constructor/secureValueTypePassport">secureValueTypePassport</a>, <a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a>, <a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a>, <a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a>, <a href="/constructor/secureValueTypeUtilityBill">secureValueTypeUtilityBill</a>, <a href="/constructor/secureValueTypeBankStatement">secureValueTypeBankStatement</a>, <a href="/constructor/secureValueTypeRentalAgreement">secureValueTypeRentalAgreement</a>, <a href="/constructor/secureValueTypePassportRegistration">secureValueTypePassportRegistration</a>, <a href="/constructor/secureValueTypeTemporaryRegistration">secureValueTypeTemporaryRegistration</a></td> +</tr> +<tr> +<td><strong>file_hash</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>File hash</td> +</tr> +<tr> +<td><strong>text</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Error message</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/SecureValueError">SecureValueError</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="#securevaluetypepersonaldetails" id="securevaluetypepersonaldetails" name="securevaluetypepersonaldetails"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypePersonalDetails">secureValueTypePersonalDetails</a></h4> +<p>Personal details</p> +<h4><a class="anchor" href="#securevaluetypepassport" id="securevaluetypepassport" name="securevaluetypepassport"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypePassport">secureValueTypePassport</a></h4> +<p>Passport</p> +<h4><a class="anchor" href="#securevaluetypedriverlicense" id="securevaluetypedriverlicense" name="securevaluetypedriverlicense"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a></h4> +<p>Driver's license</p> +<h4><a class="anchor" href="#securevaluetypeidentitycard" id="securevaluetypeidentitycard" name="securevaluetypeidentitycard"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a></h4> +<p>Identity card</p> +<h4><a class="anchor" href="#securevaluetypeinternalpassport" id="securevaluetypeinternalpassport" name="securevaluetypeinternalpassport"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></h4> +<p>Internal <a href="/passport">passport</a></p> +<h4><a class="anchor" href="#securevaluetypeutilitybill" id="securevaluetypeutilitybill" name="securevaluetypeutilitybill"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeUtilityBill">secureValueTypeUtilityBill</a></h4> +<p>Utility bill</p> +<h4><a class="anchor" href="#securevaluetypebankstatement" id="securevaluetypebankstatement" name="securevaluetypebankstatement"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeBankStatement">secureValueTypeBankStatement</a></h4> +<p>Bank statement</p> +<h4><a class="anchor" href="#securevaluetyperentalagreement" id="securevaluetyperentalagreement" name="securevaluetyperentalagreement"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeRentalAgreement">secureValueTypeRentalAgreement</a></h4> +<p>Rental agreement</p> +<h4><a class="anchor" href="#securevaluetypepassportregistration" id="securevaluetypepassportregistration" name="securevaluetypepassportregistration"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypePassportRegistration">secureValueTypePassportRegistration</a></h4> +<p>Internal registration <a href="/passport">passport</a></p> +<h4><a class="anchor" href="#securevaluetypetemporaryregistration" id="securevaluetypetemporaryregistration" name="securevaluetypetemporaryregistration"><i class="anchor-icon"></i></a><a href="/constructor/secureValueTypeTemporaryRegistration">secureValueTypeTemporaryRegistration</a></h4> +<p>Temporary registration</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/secureValueTypeEmail.html b/data/core.telegram.org/constructor/secureValueTypeEmail.html new file mode 100644 index 0000000000..fa245300e0 --- /dev/null +++ b/data/core.telegram.org/constructor/secureValueTypeEmail.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypeEmail</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Email"> + <meta property="og:title" content="secureValueTypeEmail"> + <meta property="og:image" content=""> + <meta property="og:description" content="Email"> + <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?215" 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/secureValueTypeEmail" >secureValueTypeEmail</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeEmail</h1> + + <div id="dev_page_content"><p>Email</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeEmail" class="current_page_link" >secureValueTypeEmail</a>#8e3ca7ee = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/secureValueTypeRentalAgreement.html b/data/core.telegram.org/constructor/secureValueTypeRentalAgreement.html new file mode 100644 index 0000000000..2e375b1061 --- /dev/null +++ b/data/core.telegram.org/constructor/secureValueTypeRentalAgreement.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypeRentalAgreement</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Rental agreement"> + <meta property="og:title" content="secureValueTypeRentalAgreement"> + <meta property="og:image" content=""> + <meta property="og:description" content="Rental agreement"> + <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?215" 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/secureValueTypeRentalAgreement" >secureValueTypeRentalAgreement</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeRentalAgreement</h1> + + <div id="dev_page_content"><p>Rental agreement</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeRentalAgreement" class="current_page_link" >secureValueTypeRentalAgreement</a>#8b883488 = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/sendMessageUploadPhotoAction.html b/data/core.telegram.org/constructor/sendMessageHistoryImportAction.html similarity index 92% rename from data/core.telegram.org/constructor/sendMessageUploadPhotoAction.html rename to data/core.telegram.org/constructor/sendMessageHistoryImportAction.html index 715bc6acb5..8dbec2bee6 100644 --- a/data/core.telegram.org/constructor/sendMessageUploadPhotoAction.html +++ b/data/core.telegram.org/constructor/sendMessageHistoryImportAction.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>sendMessageUploadPhotoAction</title> + <title>sendMessageHistoryImportAction</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="User is uploading a photo."> - <meta property="og:title" content="sendMessageUploadPhotoAction"> + <meta property="description" content="Chat history is being imported"> + <meta property="og:title" content="sendMessageHistoryImportAction"> <meta property="og:image" content=""> - <meta property="og:description" content="User is uploading a photo."> + <meta property="og:description" content="Chat history is being imported"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/sendMessageUploadPhotoAction" >sendMessageUploadPhotoAction</a></li></ul></div> - <h1 id="dev_page_title">sendMessageUploadPhotoAction</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/sendMessageHistoryImportAction" >sendMessageHistoryImportAction</a></li></ul></div> + <h1 id="dev_page_title">sendMessageHistoryImportAction</h1> - <div id="dev_page_content"><p>User is uploading a photo.</p> + <div id="dev_page_content"><p>Chat history is being imported</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/sendMessageUploadPhotoAction" class="current_page_link" >sendMessageUploadPhotoAction</a>#d1d34a26 progress:<a href="/type/int" >int</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/sendMessageHistoryImportAction" class="current_page_link" >sendMessageHistoryImportAction</a>#dbda9246 progress:<a href="/type/int" >int</a> = <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> <table class="table"> <thead> diff --git a/data/core.telegram.org/constructor/messageActionScreenshotTaken.html b/data/core.telegram.org/constructor/sendMessageRecordVideoAction.html similarity index 91% rename from data/core.telegram.org/constructor/messageActionScreenshotTaken.html rename to data/core.telegram.org/constructor/sendMessageRecordVideoAction.html index 39b5d092e0..8b3dcd0cdc 100644 --- a/data/core.telegram.org/constructor/messageActionScreenshotTaken.html +++ b/data/core.telegram.org/constructor/sendMessageRecordVideoAction.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messageActionScreenshotTaken</title> + <title>sendMessageRecordVideoAction</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="A screenshot of the chat was taken"> - <meta property="og:title" content="messageActionScreenshotTaken"> + <meta property="description" content="User is recording a video."> + <meta property="og:title" content="sendMessageRecordVideoAction"> <meta property="og:image" content=""> - <meta property="og:description" content="A screenshot of the chat was taken"> + <meta property="og:description" content="User is recording a video."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/messageActionScreenshotTaken" >messageActionScreenshotTaken</a></li></ul></div> - <h1 id="dev_page_title">messageActionScreenshotTaken</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/sendMessageRecordVideoAction" >sendMessageRecordVideoAction</a></li></ul></div> + <h1 id="dev_page_title">sendMessageRecordVideoAction</h1> - <div id="dev_page_content"><p>A screenshot of the chat was taken</p> + <div id="dev_page_content"><p>User is recording a video.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messageActionScreenshotTaken" class="current_page_link" >messageActionScreenshotTaken</a>#4792929b = <a href="/type/MessageAction" >MessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/sendMessageRecordVideoAction" class="current_page_link" >sendMessageRecordVideoAction</a>#a187d66f = <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/MessageAction">MessageAction</a></p></div> +<p><a href="/type/SendMessageAction">SendMessageAction</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/contacts.importedContacts b/data/core.telegram.org/constructor/stats.megagroupStats similarity index 62% rename from data/core.telegram.org/constructor/contacts.importedContacts rename to data/core.telegram.org/constructor/stats.megagroupStats index ecd6004dd5..dcc826e2cc 100644 --- a/data/core.telegram.org/constructor/contacts.importedContacts +++ b/data/core.telegram.org/constructor/stats.megagroupStats @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>contacts.importedContacts</title> + <title>stats.megagroupStats</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Info on succesfully imported contacts."> - <meta property="og:title" content="contacts.importedContacts"> + <meta property="description" content="Supergroup statistics"> + <meta property="og:title" content="stats.megagroupStats"> <meta property="og:image" content=""> - <meta property="og:description" content="Info on succesfully imported contacts."> + <meta property="og:description" content="Supergroup statistics"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/contacts.importedContacts" >contacts.importedContacts</a></li></ul></div> - <h1 id="dev_page_title">contacts.importedContacts</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/stats.megagroupStats" >stats.megagroupStats</a></li></ul></div> + <h1 id="dev_page_title">stats.megagroupStats</h1> - <div id="dev_page_content"><p>Info on succesfully imported contacts.</p> + <div id="dev_page_content"><p>Supergroup <a href="/api/stats">statistics</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/contacts.importedContacts" class="current_page_link" >contacts.importedContacts</a>#77d01c3b imported:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ImportedContact" >ImportedContact</a>> popular_invites:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PopularContact" >PopularContact</a>> retry_contacts:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.ImportedContacts" >contacts.ImportedContacts</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/stats.megagroupStats" class="current_page_link" >stats.megagroupStats</a>#ef7ff916 period:<a href="/type/StatsDateRangeDays" >StatsDateRangeDays</a> members:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> messages:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> viewers:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> posters:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> growth_graph:<a href="/type/StatsGraph" >StatsGraph</a> members_graph:<a href="/type/StatsGraph" >StatsGraph</a> new_members_by_source_graph:<a href="/type/StatsGraph" >StatsGraph</a> languages_graph:<a href="/type/StatsGraph" >StatsGraph</a> messages_graph:<a href="/type/StatsGraph" >StatsGraph</a> actions_graph:<a href="/type/StatsGraph" >StatsGraph</a> top_hours_graph:<a href="/type/StatsGraph" >StatsGraph</a> weekdays_graph:<a href="/type/StatsGraph" >StatsGraph</a> top_posters:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StatsGroupTopPoster" >StatsGroupTopPoster</a>> top_admins:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StatsGroupTopAdmin" >StatsGroupTopAdmin</a>> top_inviters:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StatsGroupTopInviter" >StatsGroupTopInviter</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/stats.MegagroupStats" >stats.MegagroupStats</a>;</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> @@ -64,32 +64,97 @@ </thead> <tbody> <tr> -<td><strong>imported</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/ImportedContact">ImportedContact</a>></td> -<td>List of succesfully imported contacts</td> +<td><strong>period</strong></td> +<td style="text-align: center;"><a href="/type/StatsDateRangeDays">StatsDateRangeDays</a></td> +<td>Period in consideration</td> </tr> <tr> -<td><strong>popular_invites</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/PopularContact">PopularContact</a>></td> -<td>Popular contacts</td> +<td><strong>members</strong></td> +<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td> +<td>Member count change for period in consideration</td> </tr> <tr> -<td><strong>retry_contacts</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>></td> -<td>List of contact ids that could not be imported due to system limitation and will need to be imported at a later date.<br>Parameter added in <a href="/api/layers#layer-13">Layer 13</a></td> +<td><strong>messages</strong></td> +<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td> +<td>Message number change for period in consideration</td> +</tr> +<tr> +<td><strong>viewers</strong></td> +<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td> +<td>Number of users that viewed messages, for range in consideration</td> +</tr> +<tr> +<td><strong>posters</strong></td> +<td style="text-align: center;"><a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a></td> +<td>Number of users that posted messages, for range in consideration</td> +</tr> +<tr> +<td><strong>growth_graph</strong></td> +<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td> +<td>Supergroup growth graph (absolute subscriber count)</td> +</tr> +<tr> +<td><strong>members_graph</strong></td> +<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td> +<td>Members growth (relative subscriber count)</td> +</tr> +<tr> +<td><strong>new_members_by_source_graph</strong></td> +<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td> +<td>New members by source graph</td> +</tr> +<tr> +<td><strong>languages_graph</strong></td> +<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td> +<td>Subscriber language graph (piechart)</td> +</tr> +<tr> +<td><strong>messages_graph</strong></td> +<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td> +<td>Message activity graph (stacked bar graph, message type)</td> +</tr> +<tr> +<td><strong>actions_graph</strong></td> +<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td> +<td>Group activity graph (deleted, modified messages, blocked users)</td> +</tr> +<tr> +<td><strong>top_hours_graph</strong></td> +<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td> +<td>Activity per hour graph (absolute)</td> +</tr> +<tr> +<td><strong>weekdays_graph</strong></td> +<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td> +<td>Activity per day of week graph (absolute)</td> +</tr> +<tr> +<td><strong>top_posters</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/StatsGroupTopPoster">StatsGroupTopPoster</a>></td> +<td>Info about most active group members</td> +</tr> +<tr> +<td><strong>top_admins</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/StatsGroupTopAdmin">StatsGroupTopAdmin</a>></td> +<td>Info about most active group admins</td> +</tr> +<tr> +<td><strong>top_inviters</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/StatsGroupTopInviter">StatsGroupTopInviter</a>></td> +<td>Info about most active group inviters</td> </tr> <tr> <td><strong>users</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>List of users</td> +<td>Info about users mentioned in statistics</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/contacts.ImportedContacts">contacts.ImportedContacts</a></p> +<p><a href="/type/stats.MegagroupStats">stats.MegagroupStats</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="#layers" id="layers" name="layers"><i class="anchor-icon"></i></a><a href="/api/layers">Layers</a></h4> -<p>Below you will find information on schema changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</a>.</p></div> +<h4><a class="anchor" href="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> +<p>Telegram offers detailed channel statistics for channels and supergroups.</p></div> </div> diff --git a/data/core.telegram.org/constructor/statsGraphAsync.html b/data/core.telegram.org/constructor/statsGraphAsync.html new file mode 100644 index 0000000000..af13962104 --- /dev/null +++ b/data/core.telegram.org/constructor/statsGraphAsync.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>statsGraphAsync</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="This channel statistics graph must be generated asynchronously using stats.loadAsyncGraph to reduce server load"> + <meta property="og:title" content="statsGraphAsync"> + <meta property="og:image" content=""> + <meta property="og:description" content="This channel statistics graph must be generated asynchronously using stats.loadAsyncGraph to reduce server load"> + <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?215" 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/statsGraphAsync" >statsGraphAsync</a></li></ul></div> + <h1 id="dev_page_title">statsGraphAsync</h1> + + <div id="dev_page_content"><p>This <a href="/api/stats">channel statistics graph</a> must be generated asynchronously using <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a> to reduce server load</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/statsGraphAsync" class="current_page_link" >statsGraphAsync</a>#4a27eb2d token:<a href="/type/string" >string</a> = <a href="/type/StatsGraph" >StatsGraph</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>token</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Token to use for fetching the async graph</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/StatsGraph">StatsGraph</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="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> +<p>Telegram offers detailed channel statistics for channels and supergroups.</p> +<h4><a class="anchor" href="#statsloadasyncgraph" id="statsloadasyncgraph" name="statsloadasyncgraph"><i class="anchor-icon"></i></a><a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a></h4> +<p>Load <a href="/api/stats">channel statistics graph</a> asynchronously</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/statsGroupTopPoster.html b/data/core.telegram.org/constructor/statsGroupTopAdmin.html similarity index 88% rename from data/core.telegram.org/constructor/statsGroupTopPoster.html rename to data/core.telegram.org/constructor/statsGroupTopAdmin.html index 6af90fbd92..479ff8cd4c 100644 --- a/data/core.telegram.org/constructor/statsGroupTopPoster.html +++ b/data/core.telegram.org/constructor/statsGroupTopAdmin.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>statsGroupTopPoster</title> + <title>statsGroupTopAdmin</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Information about an active user in a supergroup"> - <meta property="og:title" content="statsGroupTopPoster"> + <meta property="description" content="Information about an active admin in a supergroup"> + <meta property="og:title" content="statsGroupTopAdmin"> <meta property="og:image" content=""> - <meta property="og:description" content="Information about an active user in a supergroup"> + <meta property="og:description" content="Information about an active admin in a supergroup"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/statsGroupTopPoster" >statsGroupTopPoster</a></li></ul></div> - <h1 id="dev_page_title">statsGroupTopPoster</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/statsGroupTopAdmin" >statsGroupTopAdmin</a></li></ul></div> + <h1 id="dev_page_title">statsGroupTopAdmin</h1> - <div id="dev_page_content"><p>Information about an active user in a supergroup</p> + <div id="dev_page_content"><p>Information about an active admin in a supergroup</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/statsGroupTopPoster" class="current_page_link" >statsGroupTopPoster</a>#9d04af9b user_id:<a href="/type/long" >long</a> messages:<a href="/type/int" >int</a> avg_chars:<a href="/type/int" >int</a> = <a href="/type/StatsGroupTopPoster" >StatsGroupTopPoster</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/statsGroupTopAdmin" class="current_page_link" >statsGroupTopAdmin</a>#d7584c87 user_id:<a href="/type/long" >long</a> deleted:<a href="/type/int" >int</a> kicked:<a href="/type/int" >int</a> banned:<a href="/type/int" >int</a> = <a href="/type/StatsGroupTopAdmin" >StatsGroupTopAdmin</a>;</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> @@ -69,19 +69,24 @@ <td>User ID</td> </tr> <tr> -<td><strong>messages</strong></td> +<td><strong>deleted</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of messages for <a href="/api/stats">statistics</a> period in consideration</td> +<td>Number of deleted messages for <a href="/api/stats">statistics</a> period in consideration</td> </tr> <tr> -<td><strong>avg_chars</strong></td> +<td><strong>kicked</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Average number of characters per message</td> +<td>Number of kicked users for <a href="/api/stats">statistics</a> period in consideration</td> +</tr> +<tr> +<td><strong>banned</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of banned users for <a href="/api/stats">statistics</a> period in consideration</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/StatsGroupTopPoster">StatsGroupTopPoster</a></p> +<p><a href="/type/StatsGroupTopAdmin">StatsGroupTopAdmin</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="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> <p>Telegram offers detailed channel statistics for channels and supergroups.</p></div> diff --git a/data/core.telegram.org/constructor/storage.fileUnknown b/data/core.telegram.org/constructor/storage.fileUnknown new file mode 100644 index 0000000000..64ec949ae3 --- /dev/null +++ b/data/core.telegram.org/constructor/storage.fileUnknown @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>storage.fileUnknown</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Unknown type."> + <meta property="og:title" content="storage.fileUnknown"> + <meta property="og:image" content=""> + <meta property="og:description" content="Unknown type."> + <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?215" 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.fileUnknown" >storage.fileUnknown</a></li></ul></div> + <h1 id="dev_page_title">storage.fileUnknown</h1> + + <div id="dev_page_content"><p>Unknown type.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/storage.fileUnknown" class="current_page_link" >storage.fileUnknown</a>#aa963b05 = <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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/textImage.html b/data/core.telegram.org/constructor/textImage.html new file mode 100644 index 0000000000..d9745acea3 --- /dev/null +++ b/data/core.telegram.org/constructor/textImage.html @@ -0,0 +1,157 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>textImage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Inline image"> + <meta property="og:title" content="textImage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Inline image"> + <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?215" 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/textImage" >textImage</a></li></ul></div> + <h1 id="dev_page_title">textImage</h1> + + <div id="dev_page_content"><p>Inline image</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/textImage" class="current_page_link" >textImage</a>#81ccf4f document_id:<a href="/type/long" >long</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> = <a href="/type/RichText" >RichText</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>document_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Document ID</td> +</tr> +<tr> +<td><strong>w</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Width</td> +</tr> +<tr> +<td><strong>h</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Height</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/RichText">RichText</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/topPeer.html b/data/core.telegram.org/constructor/topPeer.html new file mode 100644 index 0000000000..b43cdb82b5 --- /dev/null +++ b/data/core.telegram.org/constructor/topPeer.html @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>topPeer</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Top peer"> + <meta property="og:title" content="topPeer"> + <meta property="og:image" content=""> + <meta property="og:description" content="Top peer"> + <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?215" 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/topPeer" >topPeer</a></li></ul></div> + <h1 id="dev_page_title">topPeer</h1> + + <div id="dev_page_content"><p>Top peer</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/topPeer" class="current_page_link" >topPeer</a>#edcdc05b peer:<a href="/type/Peer" >Peer</a> rating:<a href="/type/double" >double</a> = <a href="/type/TopPeer" >TopPeer</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/Peer">Peer</a></td> +<td>Peer</td> +</tr> +<tr> +<td><strong>rating</strong></td> +<td style="text-align: center;"><a href="/type/double">double</a></td> +<td>Rating as computed in <a href="/api/top-rating">top peer rating »</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/TopPeer">TopPeer</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="#top-peer-rating" id="top-peer-rating" name="top-peer-rating"><i class="anchor-icon"></i></a><a href="/api/top-rating">Top peer rating</a></h4> +<p>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).</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/topPeerCategoryForwardUsers.html b/data/core.telegram.org/constructor/topPeerCategoryForwardUsers.html new file mode 100644 index 0000000000..fcb286ba72 --- /dev/null +++ b/data/core.telegram.org/constructor/topPeerCategoryForwardUsers.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>topPeerCategoryForwardUsers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Users to which the users often forwards messages to"> + <meta property="og:title" content="topPeerCategoryForwardUsers"> + <meta property="og:image" content=""> + <meta property="og:description" content="Users to which the users often forwards messages to"> + <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?215" 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/topPeerCategoryForwardUsers" >topPeerCategoryForwardUsers</a></li></ul></div> + <h1 id="dev_page_title">topPeerCategoryForwardUsers</h1> + + <div id="dev_page_content"><p>Users to which the users often forwards messages to</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryForwardUsers" class="current_page_link" >topPeerCategoryForwardUsers</a>#a8406ca9 = <a href="/type/TopPeerCategory" >TopPeerCategory</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/TopPeerCategory">TopPeerCategory</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/updateBotStopped.html b/data/core.telegram.org/constructor/updateBotStopped.html new file mode 100644 index 0000000000..a54e6754ec --- /dev/null +++ b/data/core.telegram.org/constructor/updateBotStopped.html @@ -0,0 +1,165 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updateBotStopped</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="A bot was stopped or re-started."> + <meta property="og:title" content="updateBotStopped"> + <meta property="og:image" content=""> + <meta property="og:description" content="A bot was stopped or re-started."> + <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?215" 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/updateBotStopped" >updateBotStopped</a></li></ul></div> + <h1 id="dev_page_title">updateBotStopped</h1> + + <div id="dev_page_content"><p>A bot was stopped or re-started.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updateBotStopped" class="current_page_link" >updateBotStopped</a>#c4870a49 user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> stopped:<a href="/type/Bool" >Bool</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</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>user_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>The bot ID</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>When did this action occur</td> +</tr> +<tr> +<td><strong>stopped</strong></td> +<td style="text-align: center;"><a href="/type/Bool">Bool</a></td> +<td>Whether the bot was stopped or started</td> +</tr> +<tr> +<td><strong>qts</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>New <strong>qts</strong> value, see <a href="/api/updates">updates »</a> for more info.</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="/">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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/updateChatParticipant.html b/data/core.telegram.org/constructor/updateChannelParticipant.html similarity index 85% rename from data/core.telegram.org/constructor/updateChatParticipant.html rename to data/core.telegram.org/constructor/updateChannelParticipant.html index b9f36be21d..7e0a5630df 100644 --- a/data/core.telegram.org/constructor/updateChatParticipant.html +++ b/data/core.telegram.org/constructor/updateChannelParticipant.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updateChatParticipant</title> + <title>updateChannelParticipant</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="A user has joined or left a specific chat"> - <meta property="og:title" content="updateChatParticipant"> + <meta property="description" content="A participant has left, joined, was banned or admined in a channel or supergroup."> + <meta property="og:title" content="updateChannelParticipant"> <meta property="og:image" content=""> - <meta property="og:description" content="A user has joined or left a specific chat"> + <meta property="og:description" content="A participant has left, joined, was banned or admined in a channel or supergroup."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/updateChatParticipant" >updateChatParticipant</a></li></ul></div> - <h1 id="dev_page_title">updateChatParticipant</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateChannelParticipant" >updateChannelParticipant</a></li></ul></div> + <h1 id="dev_page_title">updateChannelParticipant</h1> - <div id="dev_page_content"><p>A user has joined or left a specific chat</p> + <div id="dev_page_content"><p>A participant has left, joined, was banned or admined in a <a href="/api/channel">channel or supergroup</a>.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updateChatParticipant" class="current_page_link" >updateChatParticipant</a>#d087663a flags:<a href="/type/%23" >#</a> chat_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> actor_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> prev_participant:flags.0?<a href="/type/ChatParticipant" >ChatParticipant</a> new_participant:flags.1?<a href="/type/ChatParticipant" >ChatParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateChannelParticipant" class="current_page_link" >updateChannelParticipant</a>#985d3abb flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> actor_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> prev_participant:flags.0?<a href="/type/ChannelParticipant" >ChannelParticipant</a> new_participant:flags.1?<a href="/type/ChannelParticipant" >ChannelParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</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> @@ -69,14 +69,14 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>chat_id</strong></td> +<td><strong>channel_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td><a href="/api/channel">Chat</a> ID</td> +<td>Channel ID</td> </tr> <tr> <td><strong>date</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>When did this event occur</td> +<td>Date of the event</td> </tr> <tr> <td><strong>actor_id</strong></td> @@ -90,18 +90,18 @@ </tr> <tr> <td><strong>prev_participant</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/ChatParticipant">ChatParticipant</a></td> -<td>Previous participant info (empty if this participant just joined)</td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/ChannelParticipant">ChannelParticipant</a></td> +<td>Previous participant status</td> </tr> <tr> <td><strong>new_participant</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/ChatParticipant">ChatParticipant</a></td> -<td>New participant info (empty if this participant just left)</td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/ChannelParticipant">ChannelParticipant</a></td> +<td>New participant status</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="/type/ExportedChatInvite">ExportedChatInvite</a></td> -<td>The invite that was used to join the group</td> +<td>Chat invite used to join the <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> <td><strong>qts</strong></td> diff --git a/data/core.telegram.org/constructor/updateInlineBotCallbackQuery.html b/data/core.telegram.org/constructor/updateChannelUserTyping.html similarity index 78% rename from data/core.telegram.org/constructor/updateInlineBotCallbackQuery.html rename to data/core.telegram.org/constructor/updateChannelUserTyping.html index b2e486a809..822be5c625 100644 --- a/data/core.telegram.org/constructor/updateInlineBotCallbackQuery.html +++ b/data/core.telegram.org/constructor/updateChannelUserTyping.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updateInlineBotCallbackQuery</title> + <title>updateChannelUserTyping</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="This notification is received by bots when a button is pressed"> - <meta property="og:title" content="updateInlineBotCallbackQuery"> + <meta property="description" content="A user is typing in a supergroup, channel or message thread"> + <meta property="og:title" content="updateChannelUserTyping"> <meta property="og:image" content=""> - <meta property="og:description" content="This notification is received by bots when a button is pressed"> + <meta property="og:description" content="A user is typing in a supergroup, channel or message thread"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/updateInlineBotCallbackQuery" >updateInlineBotCallbackQuery</a></li></ul></div> - <h1 id="dev_page_title">updateInlineBotCallbackQuery</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateChannelUserTyping" >updateChannelUserTyping</a></li></ul></div> + <h1 id="dev_page_title">updateChannelUserTyping</h1> - <div id="dev_page_content"><p>This notification is received by bots when a button is pressed</p> + <div id="dev_page_content"><p>A user is typing in a <a href="/api/channel">supergroup, channel</a> or <a href="/api/threads">message thread</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updateInlineBotCallbackQuery" class="current_page_link" >updateInlineBotCallbackQuery</a>#691e9052 flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> msg_id:<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> chat_instance:<a href="/type/long" >long</a> data:flags.0?<a href="/type/bytes" >bytes</a> game_short_name:flags.1?<a href="/type/string" >string</a> = <a href="/type/Update" >Update</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateChannelUserTyping" class="current_page_link" >updateChannelUserTyping</a>#8c88c923 flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> top_msg_id:flags.0?<a href="/type/int" >int</a> from_id:<a href="/type/Peer" >Peer</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" >Update</a>;</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> @@ -69,39 +69,34 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>query_id</strong></td> +<td><strong>channel_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Query ID</td> +<td>Channel ID</td> </tr> <tr> -<td><strong>user_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>ID of the user that pressed the button</td> +<td><strong>top_msg_id</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><a href="/api/threads">Thread ID</a></td> </tr> <tr> -<td><strong>msg_id</strong></td> -<td style="text-align: center;"><a href="/type/InputBotInlineMessageID">InputBotInlineMessageID</a></td> -<td>ID of the inline message with the button</td> +<td><strong>from_id</strong></td> +<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> +<td>The peer that is typing</td> </tr> <tr> -<td><strong>chat_instance</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.</td> -</tr> -<tr> -<td><strong>data</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/bytes">bytes</a></td> -<td>Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field.</td> -</tr> -<tr> -<td><strong>game_short_name</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/string">string</a></td> -<td>Short name of a Game to be returned, serves as the unique identifier for the game</td> +<td><strong>action</strong></td> +<td style="text-align: center;"><a href="/type/SendMessageAction">SendMessageAction</a></td> +<td>Whether the user is typing, sending a media or doing something else</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></div> +<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="#threads" id="threads" name="threads"><i class="anchor-icon"></i></a><a href="/api/threads">Threads</a></h4> +<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> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> </div> diff --git a/data/core.telegram.org/constructor/messageActionGeoProximityReached.html b/data/core.telegram.org/constructor/updateChannelWebPage.html similarity index 81% rename from data/core.telegram.org/constructor/messageActionGeoProximityReached.html rename to data/core.telegram.org/constructor/updateChannelWebPage.html index 5452d3a384..ac21f0f9da 100644 --- a/data/core.telegram.org/constructor/messageActionGeoProximityReached.html +++ b/data/core.telegram.org/constructor/updateChannelWebPage.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messageActionGeoProximityReached</title> + <title>updateChannelWebPage</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="A user of the chat is now in proximity of another user"> - <meta property="og:title" content="messageActionGeoProximityReached"> + <meta property="description" content="A webpage preview of a link in a channel/supergroup message was generated"> + <meta property="og:title" content="updateChannelWebPage"> <meta property="og:image" content=""> - <meta property="og:description" content="A user of the chat is now in proximity of another user"> + <meta property="og:description" content="A webpage preview of a link in a channel/supergroup message was generated"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/messageActionGeoProximityReached" >messageActionGeoProximityReached</a></li></ul></div> - <h1 id="dev_page_title">messageActionGeoProximityReached</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateChannelWebPage" >updateChannelWebPage</a></li></ul></div> + <h1 id="dev_page_title">updateChannelWebPage</h1> - <div id="dev_page_content"><p>A user of the chat is now in proximity of another user</p> + <div id="dev_page_content"><p>A webpage preview of a link in a <a href="/api/channel">channel/supergroup</a> message was generated</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messageActionGeoProximityReached" class="current_page_link" >messageActionGeoProximityReached</a>#98e0d697 from_id:<a href="/type/Peer" >Peer</a> to_id:<a href="/type/Peer" >Peer</a> distance:<a href="/type/int" >int</a> = <a href="/type/MessageAction" >MessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateChannelWebPage" class="current_page_link" >updateChannelWebPage</a>#2f2ba99f channel_id:<a href="/type/long" >long</a> webpage:<a href="/type/WebPage" >WebPage</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</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> @@ -64,27 +64,34 @@ </thead> <tbody> <tr> -<td><strong>from_id</strong></td> -<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> -<td>The user or chat that is now in proximity of <code>to_id</code></td> +<td><strong>channel_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td><a href="/api/channel">Channel/supergroup</a> ID</td> </tr> <tr> -<td><strong>to_id</strong></td> -<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> -<td>The user or chat that subscribed to <a href="/api/live-location#proximity-alert">live geolocation proximity alerts</a></td> +<td><strong>webpage</strong></td> +<td style="text-align: center;"><a href="/type/WebPage">WebPage</a></td> +<td>Generated webpage preview</td> </tr> <tr> -<td><strong>distance</strong></td> +<td><strong>pts</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Distance, in meters (0-100000)</td> +<td><a href="/api/updates">Event count after generation</a></td> +</tr> +<tr> +<td><strong>pts_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/updates">Number of events that were generated</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/MessageAction">MessageAction</a></p> +<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="#live-geolocation" id="live-geolocation" name="live-geolocation"><i class="anchor-icon"></i></a><a href="/api/live-location">Live geolocation</a></h4> -<p>Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert.</p></div> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<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> diff --git a/data/corefork.telegram.org/constructor/updateChatParticipantDelete.html b/data/core.telegram.org/constructor/updateChatParticipantDelete.html similarity index 98% rename from data/corefork.telegram.org/constructor/updateChatParticipantDelete.html rename to data/core.telegram.org/constructor/updateChatParticipantDelete.html index 125326d927..0fd95c5d0c 100644 --- a/data/corefork.telegram.org/constructor/updateChatParticipantDelete.html +++ b/data/core.telegram.org/constructor/updateChatParticipantDelete.html @@ -120,9 +120,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -139,7 +139,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/constructor/updateDeleteChannelMessages.html b/data/core.telegram.org/constructor/updateDeleteChannelMessages.html new file mode 100644 index 0000000000..ba1ca84fb3 --- /dev/null +++ b/data/core.telegram.org/constructor/updateDeleteChannelMessages.html @@ -0,0 +1,167 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updateDeleteChannelMessages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Some messages in a supergroup/channel were deleted"> + <meta property="og:title" content="updateDeleteChannelMessages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Some messages in a supergroup/channel were deleted"> + <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?215" 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/updateDeleteChannelMessages" >updateDeleteChannelMessages</a></li></ul></div> + <h1 id="dev_page_title">updateDeleteChannelMessages</h1> + + <div id="dev_page_content"><p>Some messages in a <a href="/api/channel">supergroup/channel</a> were deleted</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updateDeleteChannelMessages" class="current_page_link" >updateDeleteChannelMessages</a>#c32d5b12 channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</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>channel_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Channel ID</td> +</tr> +<tr> +<td><strong>messages</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> +<td>IDs of messages that were deleted</td> +</tr> +<tr> +<td><strong>pts</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/updates">Event count after generation</a></td> +</tr> +<tr> +<td><strong>pts_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/updates">Number of events that were generated</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> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/notifyPeer.html b/data/core.telegram.org/constructor/updateDraftMessage.html similarity index 86% rename from data/core.telegram.org/constructor/notifyPeer.html rename to data/core.telegram.org/constructor/updateDraftMessage.html index 9beb73c9d5..29d14ce52b 100644 --- a/data/core.telegram.org/constructor/notifyPeer.html +++ b/data/core.telegram.org/constructor/updateDraftMessage.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>notifyPeer</title> + <title>updateDraftMessage</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Notifications generated by a certain user or group."> - <meta property="og:title" content="notifyPeer"> + <meta property="description" content="Notifies a change of a message draft."> + <meta property="og:title" content="updateDraftMessage"> <meta property="og:image" content=""> - <meta property="og:description" content="Notifications generated by a certain user or group."> + <meta property="og:description" content="Notifies a change of a message draft."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/notifyPeer" >notifyPeer</a></li></ul></div> - <h1 id="dev_page_title">notifyPeer</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateDraftMessage" >updateDraftMessage</a></li></ul></div> + <h1 id="dev_page_title">updateDraftMessage</h1> - <div id="dev_page_content"><p>Notifications generated by a certain user or group.</p> + <div id="dev_page_content"><p>Notifies a change of a message <a href="/api/drafts">draft</a>.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/notifyPeer" class="current_page_link" >notifyPeer</a>#9fd40bd8 peer:<a href="/type/Peer" >Peer</a> = <a href="/type/NotifyPeer" >NotifyPeer</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateDraftMessage" class="current_page_link" >updateDraftMessage</a>#ee2bb969 peer:<a href="/type/Peer" >Peer</a> draft:<a href="/type/DraftMessage" >DraftMessage</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> @@ -66,12 +66,20 @@ <tr> <td><strong>peer</strong></td> <td style="text-align: center;"><a href="/type/Peer">Peer</a></td> -<td>user or group</td> +<td>The peer to which the draft is associated</td> +</tr> +<tr> +<td><strong>draft</strong></td> +<td style="text-align: center;"><a href="/type/DraftMessage">DraftMessage</a></td> +<td>The draft</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/NotifyPeer">NotifyPeer</a></p></div> +<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="#message-drafts" id="message-drafts" name="message-drafts"><i class="anchor-icon"></i></a><a href="/api/drafts">Message drafts</a></h4> +<p>How to handle message drafts</p></div> </div> diff --git a/data/core.telegram.org/constructor/updateFavedStickers.html b/data/core.telegram.org/constructor/updateFavedStickers.html new file mode 100644 index 0000000000..da0a4ad57c --- /dev/null +++ b/data/core.telegram.org/constructor/updateFavedStickers.html @@ -0,0 +1,135 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updateFavedStickers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="The list of favorited stickers was changed, the client should call messages.getFavedStickers to refetch the new list"> + <meta property="og:title" content="updateFavedStickers"> + <meta property="og:image" content=""> + <meta property="og:description" content="The list of favorited stickers was changed, the client should call messages.getFavedStickers to refetch the new list"> + <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?215" 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/updateFavedStickers" >updateFavedStickers</a></li></ul></div> + <h1 id="dev_page_title">updateFavedStickers</h1> + + <div id="dev_page_content"><p>The list of favorited stickers was changed, the client should call <a href="/method/messages.getFavedStickers">messages.getFavedStickers</a> to refetch the new list</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updateFavedStickers" class="current_page_link" >updateFavedStickers</a>#e511996d = <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> +<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/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="#messagesgetfavedstickers" id="messagesgetfavedstickers" name="messagesgetfavedstickers"><i class="anchor-icon"></i></a><a href="/method/messages.getFavedStickers">messages.getFavedStickers</a></h4> +<p>Get faved stickers</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/updatePeerHistoryTTL.html b/data/core.telegram.org/constructor/updateMessagePoll.html similarity index 87% rename from data/core.telegram.org/constructor/updatePeerHistoryTTL.html rename to data/core.telegram.org/constructor/updateMessagePoll.html index 54cb12f894..3fe5ffacbd 100644 --- a/data/core.telegram.org/constructor/updatePeerHistoryTTL.html +++ b/data/core.telegram.org/constructor/updateMessagePoll.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updatePeerHistoryTTL</title> + <title>updateMessagePoll</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="The Time-To-Live for messages sent by the current user in a specific chat has changed"> - <meta property="og:title" content="updatePeerHistoryTTL"> + <meta property="description" content="The results of a poll have changed"> + <meta property="og:title" content="updateMessagePoll"> <meta property="og:image" content=""> - <meta property="og:description" content="The Time-To-Live for messages sent by the current user in a specific chat has changed"> + <meta property="og:description" content="The results of a poll have changed"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/updatePeerHistoryTTL" >updatePeerHistoryTTL</a></li></ul></div> - <h1 id="dev_page_title">updatePeerHistoryTTL</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateMessagePoll" >updateMessagePoll</a></li></ul></div> + <h1 id="dev_page_title">updateMessagePoll</h1> - <div id="dev_page_content"><p>The Time-To-Live for messages sent by the current user in a specific chat has changed</p> + <div id="dev_page_content"><p>The results of a poll have changed</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updatePeerHistoryTTL" class="current_page_link" >updatePeerHistoryTTL</a>#bb9bb9a5 flags:<a href="/type/%23" >#</a> peer:<a href="/type/Peer" >Peer</a> ttl_period:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateMessagePoll" class="current_page_link" >updateMessagePoll</a>#aca1657b flags:<a href="/type/%23" >#</a> poll_id:<a href="/type/long" >long</a> poll:flags.0?<a href="/type/Poll" >Poll</a> results:<a href="/type/PollResults" >PollResults</a> = <a href="/type/Update" >Update</a>;</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> @@ -69,14 +69,19 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>peer</strong></td> -<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> -<td>The chat</td> +<td><strong>poll_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Poll ID</td> </tr> <tr> -<td><strong>ttl_period</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 new Time-To-Live</td> +<td><strong>poll</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Poll">Poll</a></td> +<td>If the server knows the client hasn't cached this poll yet, the poll itself</td> +</tr> +<tr> +<td><strong>results</strong></td> +<td style="text-align: center;"><a href="/type/PollResults">PollResults</a></td> +<td>New poll results</td> </tr> </tbody> </table> diff --git a/data/core.telegram.org/constructor/messages.channelMessages b/data/core.telegram.org/constructor/updatePinnedChannelMessages.html similarity index 78% rename from data/core.telegram.org/constructor/messages.channelMessages rename to data/core.telegram.org/constructor/updatePinnedChannelMessages.html index 1059577aac..16773d610c 100644 --- a/data/core.telegram.org/constructor/messages.channelMessages +++ b/data/core.telegram.org/constructor/updatePinnedChannelMessages.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.channelMessages</title> + <title>updatePinnedChannelMessages</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Channel messages"> - <meta property="og:title" content="messages.channelMessages"> + <meta property="description" content="Messages were pinned/unpinned in a channel/supergroup"> + <meta property="og:title" content="updatePinnedChannelMessages"> <meta property="og:image" content=""> - <meta property="og:description" content="Channel messages"> + <meta property="og:description" content="Messages were pinned/unpinned in a channel/supergroup"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.channelMessages" >messages.channelMessages</a></li></ul></div> - <h1 id="dev_page_title">messages.channelMessages</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updatePinnedChannelMessages" >updatePinnedChannelMessages</a></li></ul></div> + <h1 id="dev_page_title">updatePinnedChannelMessages</h1> - <div id="dev_page_content"><p>Channel messages</p> + <div id="dev_page_content"><p>Messages were pinned/unpinned in a <a href="/api/channel">channel/supergroup</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.channelMessages" class="current_page_link" >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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.Messages" >messages.Messages</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updatePinnedChannelMessages" class="current_page_link" >updatePinnedChannelMessages</a>#5bb98608 flags:<a href="/type/%23" >#</a> pinned:flags.0?true channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</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> @@ -69,9 +69,19 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>inexact</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>If set, returned results may be inexact</td> +<td><strong>pinned</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 the messages were pinned or unpinned</td> +</tr> +<tr> +<td><strong>channel_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Channel ID</td> +</tr> +<tr> +<td><strong>messages</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> +<td>Messages</td> </tr> <tr> <td><strong>pts</strong></td> @@ -79,37 +89,19 @@ <td><a href="/api/updates">Event count after generation</a></td> </tr> <tr> -<td><strong>count</strong></td> +<td><strong>pts_count</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Total number of results were found server-side (may not be all included here)</td> -</tr> -<tr> -<td><strong>offset_id_offset</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> -<td>Indicates the absolute position of <code>messages[0]</code> within the total result set with count <code>count</code>. <br>This is useful, for example, if the result was fetched using <code>offset_id</code>, and we need to display a <code>progress/total</code> counter (like <code>photo 134 of 200</code>, for all media in a chat, we could simply use <code>photo ${offset_id_offset} of ${count}</code>.</td> -</tr> -<tr> -<td><strong>messages</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Message">Message</a>></td> -<td>Found messages</td> -</tr> -<tr> -<td><strong>chats</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> -<td>Chats</td> -</tr> -<tr> -<td><strong>users</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>Users</td> +<td><a href="/api/updates">Number of events that were generated</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.Messages">messages.Messages</a></p> +<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> +<p>How to subscribe to updates and handle them properly.</p> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> </div> diff --git a/data/core.telegram.org/constructor/updateBotPrecheckoutQuery.html b/data/core.telegram.org/constructor/updateReadChannelDiscussionInbox.html similarity index 76% rename from data/core.telegram.org/constructor/updateBotPrecheckoutQuery.html rename to data/core.telegram.org/constructor/updateReadChannelDiscussionInbox.html index b8ffc0c733..88b1b1ec15 100644 --- a/data/core.telegram.org/constructor/updateBotPrecheckoutQuery.html +++ b/data/core.telegram.org/constructor/updateReadChannelDiscussionInbox.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updateBotPrecheckoutQuery</title> + <title>updateReadChannelDiscussionInbox</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="This object contains information about an incoming pre-checkout query."> - <meta property="og:title" content="updateBotPrecheckoutQuery"> + <meta property="description" content="Incoming comments in a discussion thread were marked as read"> + <meta property="og:title" content="updateReadChannelDiscussionInbox"> <meta property="og:image" content=""> - <meta property="og:description" content="This object contains information about an incoming pre-checkout query."> + <meta property="og:description" content="Incoming comments in a discussion thread were marked as read"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/updateBotPrecheckoutQuery" >updateBotPrecheckoutQuery</a></li></ul></div> - <h1 id="dev_page_title">updateBotPrecheckoutQuery</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateReadChannelDiscussionInbox" >updateReadChannelDiscussionInbox</a></li></ul></div> + <h1 id="dev_page_title">updateReadChannelDiscussionInbox</h1> - <div id="dev_page_content"><p>This object contains information about an incoming pre-checkout query.</p> + <div id="dev_page_content"><p>Incoming comments in a <a href="/api/threads">discussion thread</a> were marked as read</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updateBotPrecheckoutQuery" class="current_page_link" >updateBotPrecheckoutQuery</a>#8caa9a96 flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href="/type/string" >string</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> = <a href="/type/Update" >Update</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateReadChannelDiscussionInbox" class="current_page_link" >updateReadChannelDiscussionInbox</a>#d6b19546 flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> top_msg_id:<a href="/type/int" >int</a> read_max_id:<a href="/type/int" >int</a> broadcast_id:flags.0?<a href="/type/long" >long</a> broadcast_post:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</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> @@ -69,46 +69,39 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>query_id</strong></td> +<td><strong>channel_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Unique query identifier</td> +<td><a href="/api/channel">Discussion group ID</a></td> </tr> <tr> -<td><strong>user_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>User who sent the query</td> +<td><strong>top_msg_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>ID of the group message that started the <a href="/api/threads">thread</a> (message in linked discussion group)</td> </tr> <tr> -<td><strong>payload</strong></td> -<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> -<td>Bot specified invoice payload</td> +<td><strong>read_max_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Message ID of latest read incoming message for this <a href="/api/threads">thread</a></td> </tr> <tr> -<td><strong>info</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/PaymentRequestedInfo">PaymentRequestedInfo</a></td> -<td>Order info provided by the user</td> +<td><strong>broadcast_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/long">long</a></td> +<td>If set, contains the ID of the <a href="/api/channel">channel</a> that contains the post that started the <a href="/api/threads">comment thread</a> in the discussion group (<code>channel_id</code>)</td> </tr> <tr> -<td><strong>shipping_option_id</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/string">string</a></td> -<td>Identifier of the shipping option chosen by the user</td> -</tr> -<tr> -<td><strong>currency</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td> -</tr> -<tr> -<td><strong>total_amount</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Total amount in the smallest units of the currency (integer, not float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the exp parameter in <a href="/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +<td><strong>broadcast_post</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/int">int</a></td> +<td>If set, contains the ID of the channel post that started the the <a href="/api/threads">comment thread</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="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4></div> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#threads" id="threads" name="threads"><i class="anchor-icon"></i></a><a href="/api/threads">Threads</a></h4> +<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></div> </div> diff --git a/data/core.telegram.org/constructor/updateReadHistoryInbox.html b/data/core.telegram.org/constructor/updateReadHistoryInbox.html new file mode 100644 index 0000000000..bdfa1383f5 --- /dev/null +++ b/data/core.telegram.org/constructor/updateReadHistoryInbox.html @@ -0,0 +1,182 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updateReadHistoryInbox</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Incoming messages were read"> + <meta property="og:title" content="updateReadHistoryInbox"> + <meta property="og:image" content=""> + <meta property="og:description" content="Incoming messages were 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?215" 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/updateReadHistoryInbox" >updateReadHistoryInbox</a></li></ul></div> + <h1 id="dev_page_title">updateReadHistoryInbox</h1> + + <div id="dev_page_content"><p>Incoming messages were 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updateReadHistoryInbox" class="current_page_link" >updateReadHistoryInbox</a>#9c974fdf flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> peer:<a href="/type/Peer" >Peer</a> max_id:<a href="/type/int" >int</a> still_unread_count:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<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>folder_id</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><a href="/api/folders#peer-folders">Peer folder ID, for more info click here</a></td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> +<td>Peer</td> +</tr> +<tr> +<td><strong>max_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum ID of messages read</td> +</tr> +<tr> +<td><strong>still_unread_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of messages that are still unread</td> +</tr> +<tr> +<td><strong>pts</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/updates">Event count after generation</a></td> +</tr> +<tr> +<td><strong>pts_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/updates">Number of events that were generated</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="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</p> +<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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/updateContactsReset.html b/data/core.telegram.org/constructor/updateRecentStickers.html similarity index 92% rename from data/core.telegram.org/constructor/updateContactsReset.html rename to data/core.telegram.org/constructor/updateRecentStickers.html index 017f656e84..10d375b9b5 100644 --- a/data/core.telegram.org/constructor/updateContactsReset.html +++ b/data/core.telegram.org/constructor/updateRecentStickers.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updateContactsReset</title> + <title>updateRecentStickers</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="All contacts were deleted"> - <meta property="og:title" content="updateContactsReset"> + <meta property="description" content="The recent sticker list was updated"> + <meta property="og:title" content="updateRecentStickers"> <meta property="og:image" content=""> - <meta property="og:description" content="All contacts were deleted"> + <meta property="og:description" content="The recent sticker list was updated"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/updateContactsReset" >updateContactsReset</a></li></ul></div> - <h1 id="dev_page_title">updateContactsReset</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateRecentStickers" >updateRecentStickers</a></li></ul></div> + <h1 id="dev_page_title">updateRecentStickers</h1> - <div id="dev_page_content"><p>All contacts were deleted</p> + <div id="dev_page_content"><p>The recent sticker list was updated</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updateContactsReset" class="current_page_link" >updateContactsReset</a>#7084a7be = <a href="/type/Update" >Update</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateRecentStickers" class="current_page_link" >updateRecentStickers</a>#9a422c20 = <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> <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> diff --git a/data/core.telegram.org/constructor/updateServiceNotification.html b/data/core.telegram.org/constructor/updateServiceNotification.html new file mode 100644 index 0000000000..e724518904 --- /dev/null +++ b/data/core.telegram.org/constructor/updateServiceNotification.html @@ -0,0 +1,183 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updateServiceNotification</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="A service message for the user."> + <meta property="og:title" content="updateServiceNotification"> + <meta property="og:image" content=""> + <meta property="og:description" content="A service message for the user."> + <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?215" 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/updateServiceNotification" >updateServiceNotification</a></li></ul></div> + <h1 id="dev_page_title">updateServiceNotification</h1> + + <div id="dev_page_content"><p>A service message for the user.</p> +<p>The app must show the message to the user upon receiving this update. In case the <strong>popup</strong> parameter was passed, the text message must be displayed in a popup alert immediately upon receipt. It is recommended to handle the text as you would an ordinary message in terms of highlighting links, etc. The message must also be stored locally as part of the message history with the user id <code>777000</code> (Telegram Notifications).</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updateServiceNotification" class="current_page_link" >updateServiceNotification</a>#ebe46819 flags:<a href="/type/%23" >#</a> popup:flags.0?true inbox_date:flags.1?<a href="/type/int" >int</a> type:<a href="/type/string" >string</a> message:<a href="/type/string" >string</a> media:<a href="/type/MessageMedia" >MessageMedia</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</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>popup</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>(boolTrue) if the message must be displayed in a popup.</td> +</tr> +<tr> +<td><strong>inbox_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/int">int</a></td> +<td>When was the notification received<br>The message must also be stored locally as part of the message history with the user id <code>777000</code> (Telegram Notifications).</td> +</tr> +<tr> +<td><strong>type</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>String, identical in format and contents to the <a href="/api/errors#error-type"><strong>type</strong></a> field in API errors. Describes type of service message. It is acceptable to ignore repeated messages of the same <strong>type</strong> within a short period of time (15 minutes).</td> +</tr> +<tr> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Message text</td> +</tr> +<tr> +<td><strong>media</strong></td> +<td style="text-align: center;"><a href="/type/MessageMedia">MessageMedia</a></td> +<td>Media content (optional)</td> +</tr> +<tr> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td><a href="/api/entities">Message entities for styled text</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="#error-handling" id="error-handling" name="error-handling"><i class="anchor-icon"></i></a><a href="/api/errors">Error handling </a></h4> +<p>How to handle API return errors correctly.</p> +<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/updateShortSentMessage.html b/data/core.telegram.org/constructor/updateShortSentMessage.html similarity index 98% rename from data/corefork.telegram.org/constructor/updateShortSentMessage.html rename to data/core.telegram.org/constructor/updateShortSentMessage.html index 19dea3afbb..a3a338533f 100644 --- a/data/corefork.telegram.org/constructor/updateShortSentMessage.html +++ b/data/core.telegram.org/constructor/updateShortSentMessage.html @@ -155,9 +155,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -174,7 +174,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/constructor/phoneCallEmpty.html b/data/core.telegram.org/constructor/updateTheme.html similarity index 91% rename from data/core.telegram.org/constructor/phoneCallEmpty.html rename to data/core.telegram.org/constructor/updateTheme.html index 9dc5d77a93..c987d45e7d 100644 --- a/data/core.telegram.org/constructor/phoneCallEmpty.html +++ b/data/core.telegram.org/constructor/updateTheme.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>phoneCallEmpty</title> + <title>updateTheme</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Empty constructor"> - <meta property="og:title" content="phoneCallEmpty"> + <meta property="description" content="A cloud theme was updated"> + <meta property="og:title" content="updateTheme"> <meta property="og:image" content=""> - <meta property="og:description" content="Empty constructor"> + <meta property="og:description" content="A cloud theme was updated"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/phoneCallEmpty" >phoneCallEmpty</a></li></ul></div> - <h1 id="dev_page_title">phoneCallEmpty</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateTheme" >updateTheme</a></li></ul></div> + <h1 id="dev_page_title">updateTheme</h1> - <div id="dev_page_content"><p>Empty constructor</p> + <div id="dev_page_content"><p>A cloud theme was updated</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/phoneCallEmpty" class="current_page_link" >phoneCallEmpty</a>#5366c915 id:<a href="/type/long" >long</a> = <a href="/type/PhoneCall" >PhoneCall</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateTheme" class="current_page_link" >updateTheme</a>#8216fba3 theme:<a href="/type/Theme" >Theme</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> @@ -64,14 +64,14 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Call ID</td> +<td><strong>theme</strong></td> +<td style="text-align: center;"><a href="/type/Theme">Theme</a></td> +<td>Theme</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/PhoneCall">PhoneCall</a></p></div> +<p><a href="/type/Update">Update</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/upload.cdnFile b/data/core.telegram.org/constructor/upload.cdnFile new file mode 100644 index 0000000000..b50c25186c --- /dev/null +++ b/data/core.telegram.org/constructor/upload.cdnFile @@ -0,0 +1,149 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>upload.cdnFile</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Represent a chunk of a CDN file."> + <meta property="og:title" content="upload.cdnFile"> + <meta property="og:image" content=""> + <meta property="og:description" content="Represent a chunk of a CDN file."> + <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?215" 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/upload.cdnFile" >upload.cdnFile</a></li></ul></div> + <h1 id="dev_page_title">upload.cdnFile</h1> + + <div id="dev_page_content"><p>Represent a chunk of a <a href="/cdn">CDN</a> file.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/upload.cdnFile" class="current_page_link" >upload.cdnFile</a>#a99fca4f bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/upload.CdnFile" >upload.CdnFile</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>bytes</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>The data</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/upload.CdnFile">upload.CdnFile</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="#encrypted-cdns-for-speed-and-security" id="encrypted-cdns-for-speed-and-security" name="encrypted-cdns-for-speed-and-security"><i class="anchor-icon"></i></a><a href="/cdn">Encrypted CDNs for Speed and Security</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/sendMessageEmojiInteraction.html b/data/core.telegram.org/constructor/upload.fileCdnRedirect similarity index 80% rename from data/core.telegram.org/constructor/sendMessageEmojiInteraction.html rename to data/core.telegram.org/constructor/upload.fileCdnRedirect index 4e0c69aba9..cf7db284bd 100644 --- a/data/core.telegram.org/constructor/sendMessageEmojiInteraction.html +++ b/data/core.telegram.org/constructor/upload.fileCdnRedirect @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>sendMessageEmojiInteraction</title> + <title>upload.fileCdnRedirect</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="User has clicked on an animated emoji triggering a reaction, click here for more info »."> - <meta property="og:title" content="sendMessageEmojiInteraction"> + <meta property="description" content="The file must be downloaded from a CDN DC."> + <meta property="og:title" content="upload.fileCdnRedirect"> <meta property="og:image" content=""> - <meta property="og:description" content="User has clicked on an animated emoji triggering a reaction, click here for more info »."> + <meta property="og:description" content="The file must be downloaded from a CDN DC."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/sendMessageEmojiInteraction" >sendMessageEmojiInteraction</a></li></ul></div> - <h1 id="dev_page_title">sendMessageEmojiInteraction</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/upload.fileCdnRedirect" >upload.fileCdnRedirect</a></li></ul></div> + <h1 id="dev_page_title">upload.fileCdnRedirect</h1> - <div id="dev_page_content"><p>User has clicked on an animated emoji triggering a <a href="/api/animated-emojis#emoji-reactions">reaction, click here for more info »</a>.</p> + <div id="dev_page_content"><p>The file must be downloaded from a <a href="/cdn">CDN DC</a>.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/sendMessageEmojiInteraction" class="current_page_link" >sendMessageEmojiInteraction</a>#25972bcb emoticon:<a href="/type/string" >string</a> msg_id:<a href="/type/int" >int</a> interaction:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/upload.fileCdnRedirect" class="current_page_link" >upload.fileCdnRedirect</a>#f18cda44 dc_id:<a href="/type/int" >int</a> file_token:<a href="/type/bytes" >bytes</a> encryption_key:<a href="/type/bytes" >bytes</a> encryption_iv:<a href="/type/bytes" >bytes</a> file_hashes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/FileHash" >FileHash</a>> = <a href="/type/upload.File" >upload.File</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> @@ -64,27 +64,36 @@ </thead> <tbody> <tr> -<td><strong>emoticon</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Emoji</td> -</tr> -<tr> -<td><strong>msg_id</strong></td> +<td><strong>dc_id</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Message ID of the animated emoji that was clicked</td> +<td><a href="/cdn">CDN DC</a> ID</td> </tr> <tr> -<td><strong>interaction</strong></td> -<td style="text-align: center;"><a href="/type/DataJSON">DataJSON</a></td> -<td>A JSON object with interaction info, <a href="/api/animated-emojis#emoji-reactions">click here for more info »</a></td> +<td><strong>file_token</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>File token (see <a href="/cdn">CDN files</a>)</td> +</tr> +<tr> +<td><strong>encryption_key</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Encryption key (see <a href="/cdn">CDN files</a>)</td> +</tr> +<tr> +<td><strong>encryption_iv</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Encryption IV (see <a href="/cdn">CDN files</a>)</td> +</tr> +<tr> +<td><strong>file_hashes</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/FileHash">FileHash</a>></td> +<td>File hashes (see <a href="/cdn">CDN files</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/SendMessageAction">SendMessageAction</a></p> +<p><a href="/type/upload.File">upload.File</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="#animated-emojis" id="animated-emojis" name="animated-emojis"><i class="anchor-icon"></i></a><a href="/api/animated-emojis">Animated Emojis</a></h4> -<p>Graphical telegram clients should transform emojis into their respective animated version.</p></div> +<h4><a class="anchor" href="#encrypted-cdns-for-speed-and-security" id="encrypted-cdns-for-speed-and-security" name="encrypted-cdns-for-speed-and-security"><i class="anchor-icon"></i></a><a href="/cdn">Encrypted CDNs for Speed and Security</a></h4></div> </div> diff --git a/data/core.telegram.org/constructor/user.html b/data/core.telegram.org/constructor/user.html new file mode 100644 index 0000000000..b6d8f4eddb --- /dev/null +++ b/data/core.telegram.org/constructor/user.html @@ -0,0 +1,287 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>user</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Indicates info about a certain user"> + <meta property="og:title" content="user"> + <meta property="og:image" content=""> + <meta property="og:description" content="Indicates info about a certain user"> + <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?215" 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/user" >user</a></li></ul></div> + <h1 id="dev_page_title">user</h1> + + <div id="dev_page_content"><p>Indicates info about a certain user</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/user" class="current_page_link" >user</a>#3ff6ecb0 flags:<a href="/type/%23" >#</a> self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true id:<a href="/type/long" >long</a> access_hash:flags.0?<a href="/type/long" >long</a> first_name:flags.1?<a href="/type/string" >string</a> last_name:flags.2?<a href="/type/string" >string</a> username:flags.3?<a href="/type/string" >string</a> phone:flags.4?<a href="/type/string" >string</a> photo:flags.5?<a href="/type/UserProfilePhoto" >UserProfilePhoto</a> status:flags.6?<a href="/type/UserStatus" >UserStatus</a> bot_info_version:flags.14?<a href="/type/int" >int</a> restriction_reason:flags.18?<a href="/type/Vector%20t" >Vector</a><<a href="/type/RestrictionReason" >RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href="/type/string" >string</a> lang_code:flags.22?<a href="/type/string" >string</a> = <a href="/type/User" >User</a>;</code></pre></p> +<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>self</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>Whether this user indicates the currently logged in user</td> +</tr> +<tr> +<td><strong>contact</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>Whether this user is a contact</td> +</tr> +<tr> +<td><strong>mutual_contact</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>Whether this user is a mutual contact</td> +</tr> +<tr> +<td><strong>deleted</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>Whether the account of this user was deleted</td> +</tr> +<tr> +<td><strong>bot</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>Is this user a bot?</td> +</tr> +<tr> +<td><strong>bot_chat_history</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>Can the bot see all messages in groups?</td> +</tr> +<tr> +<td><strong>bot_nochats</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.16?<a href="/constructor/true">true</a></td> +<td>Can the bot be added to groups?</td> +</tr> +<tr> +<td><strong>verified</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.17?<a href="/constructor/true">true</a></td> +<td>Whether this user is verified</td> +</tr> +<tr> +<td><strong>restricted</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.18?<a href="/constructor/true">true</a></td> +<td>Access to this user must be restricted for the reason specified in <code>restriction_reason</code></td> +</tr> +<tr> +<td><strong>min</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.20?<a href="/constructor/true">true</a></td> +<td>See <a href="/api/min">min</a></td> +</tr> +<tr> +<td><strong>bot_inline_geo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.21?<a href="/constructor/true">true</a></td> +<td>Whether the bot can request our geolocation in inline mode</td> +</tr> +<tr> +<td><strong>support</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.23?<a href="/constructor/true">true</a></td> +<td>Whether this is an official support user</td> +</tr> +<tr> +<td><strong>scam</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.24?<a href="/constructor/true">true</a></td> +<td>This may be a scam user</td> +</tr> +<tr> +<td><strong>apply_min_photo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/constructor/true">true</a></td> +<td>If set, the profile picture for this user should be refetched</td> +</tr> +<tr> +<td><strong>fake</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.26?<a href="/constructor/true">true</a></td> +<td>If set, this user was reported by many users as a fake or scam user: be careful when interacting with them.</td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>ID of the user</td> +</tr> +<tr> +<td><strong>access_hash</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/long">long</a></td> +<td>Access hash of the user</td> +</tr> +<tr> +<td><strong>first_name</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/string">string</a></td> +<td>First name</td> +</tr> +<tr> +<td><strong>last_name</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td> +<td>Last name</td> +</tr> +<tr> +<td><strong>username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td> +<td>Username</td> +</tr> +<tr> +<td><strong>phone</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/string">string</a></td> +<td>Phone number</td> +</tr> +<tr> +<td><strong>photo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/UserProfilePhoto">UserProfilePhoto</a></td> +<td>Profile picture of user</td> +</tr> +<tr> +<td><strong>status</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/UserStatus">UserStatus</a></td> +<td>Online status of user</td> +</tr> +<tr> +<td><strong>bot_info_version</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/int">int</a></td> +<td>Version of the <a href="/constructor/userFull">bot_info field in userFull</a>, incremented every time it changes</td> +</tr> +<tr> +<td><strong>restriction_reason</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.18?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>></td> +<td>Contains the reason why access to this user must be restricted.</td> +</tr> +<tr> +<td><strong>bot_inline_placeholder</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.19?<a href="/type/string">string</a></td> +<td>Inline placeholder for this inline bot</td> +</tr> +<tr> +<td><strong>lang_code</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.22?<a href="/type/string">string</a></td> +<td>Language code of the user</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/User">User</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="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.</p> +<h4><a class="anchor" href="#userfull" id="userfull" name="userfull"><i class="anchor-icon"></i></a><a href="/constructor/userFull">userFull</a></h4> +<p>Extended user info</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inlineQueryPeerTypePM.html b/data/core.telegram.org/constructor/userProfilePhotoEmpty.html similarity index 91% rename from data/core.telegram.org/constructor/inlineQueryPeerTypePM.html rename to data/core.telegram.org/constructor/userProfilePhotoEmpty.html index fde1ebb46c..cf1ead2630 100644 --- a/data/core.telegram.org/constructor/inlineQueryPeerTypePM.html +++ b/data/core.telegram.org/constructor/userProfilePhotoEmpty.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inlineQueryPeerTypePM</title> + <title>userProfilePhotoEmpty</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="The inline query was sent in a private chat"> - <meta property="og:title" content="inlineQueryPeerTypePM"> + <meta property="description" content="Profile photo has not been set, or was hidden."> + <meta property="og:title" content="userProfilePhotoEmpty"> <meta property="og:image" content=""> - <meta property="og:description" content="The inline query was sent in a private chat"> + <meta property="og:description" content="Profile photo has not been set, or was hidden."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inlineQueryPeerTypePM" >inlineQueryPeerTypePM</a></li></ul></div> - <h1 id="dev_page_title">inlineQueryPeerTypePM</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/userProfilePhotoEmpty" >userProfilePhotoEmpty</a></li></ul></div> + <h1 id="dev_page_title">userProfilePhotoEmpty</h1> - <div id="dev_page_content"><p>The inline query was sent in a private chat</p> + <div id="dev_page_content"><p>Profile photo has not been set, or was hidden.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inlineQueryPeerTypePM" class="current_page_link" >inlineQueryPeerTypePM</a>#833c0fac = <a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/userProfilePhotoEmpty" class="current_page_link" >userProfilePhotoEmpty</a>#4f11bae1 = <a href="/type/UserProfilePhoto" >UserProfilePhoto</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <p>This constructor does not require any parameters.</p> <h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> -<p><a href="/type/InlineQueryPeerType">InlineQueryPeerType</a></p></div> +<p><a href="/type/UserProfilePhoto">UserProfilePhoto</a></p></div> </div> diff --git a/data/core.telegram.org/constructor/webAuthorization.html b/data/core.telegram.org/constructor/webAuthorization.html new file mode 100644 index 0000000000..f90b8e5141 --- /dev/null +++ b/data/core.telegram.org/constructor/webAuthorization.html @@ -0,0 +1,189 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>webAuthorization</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Represents a bot logged in using the Telegram login widget"> + <meta property="og:title" content="webAuthorization"> + <meta property="og:image" content=""> + <meta property="og:description" content="Represents a bot logged in using the Telegram login widget"> + <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?215" 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/webAuthorization" >webAuthorization</a></li></ul></div> + <h1 id="dev_page_title">webAuthorization</h1> + + <div id="dev_page_content"><p>Represents a bot logged in using the <a href="/widgets/login">Telegram login widget</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/webAuthorization" class="current_page_link" >webAuthorization</a>#a6f8f452 hash:<a href="/type/long" >long</a> bot_id:<a href="/type/long" >long</a> domain:<a href="/type/string" >string</a> browser:<a href="/type/string" >string</a> platform:<a href="/type/string" >string</a> date_created:<a href="/type/int" >int</a> date_active:<a href="/type/int" >int</a> ip:<a href="/type/string" >string</a> region:<a href="/type/string" >string</a> = <a href="/type/WebAuthorization" >WebAuthorization</a>;</code></pre></p> +<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th style="text-align: center;">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>hash</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Authorization hash</td> +</tr> +<tr> +<td><strong>bot_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Bot ID</td> +</tr> +<tr> +<td><strong>domain</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The domain name of the website on which the user has logged in.</td> +</tr> +<tr> +<td><strong>browser</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Browser user-agent</td> +</tr> +<tr> +<td><strong>platform</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Platform</td> +</tr> +<tr> +<td><strong>date_created</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>When was the web session created</td> +</tr> +<tr> +<td><strong>date_active</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>When was the web session last active</td> +</tr> +<tr> +<td><strong>ip</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>IP address</td> +</tr> +<tr> +<td><strong>region</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Region, determined from IP address</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/WebAuthorization">WebAuthorization</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="#telegram-login-widget" id="telegram-login-widget" name="telegram-login-widget"><i class="anchor-icon"></i></a><a href="/widgets/login">Telegram Login Widget</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/webDocumentNoProxy.html b/data/core.telegram.org/constructor/webDocument.html similarity index 86% rename from data/core.telegram.org/constructor/webDocumentNoProxy.html rename to data/core.telegram.org/constructor/webDocument.html index 81ebe54d51..6f07616c6b 100644 --- a/data/core.telegram.org/constructor/webDocumentNoProxy.html +++ b/data/core.telegram.org/constructor/webDocument.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>webDocumentNoProxy</title> + <title>webDocument</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Remote document that can be downloaded without proxying through telegram"> - <meta property="og:title" content="webDocumentNoProxy"> + <meta property="description" content="Remote document"> + <meta property="og:title" content="webDocument"> <meta property="og:image" content=""> - <meta property="og:description" content="Remote document that can be downloaded without proxying through telegram"> + <meta property="og:description" content="Remote document"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/webDocumentNoProxy" >webDocumentNoProxy</a></li></ul></div> - <h1 id="dev_page_title">webDocumentNoProxy</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/webDocument" >webDocument</a></li></ul></div> + <h1 id="dev_page_title">webDocument</h1> - <div id="dev_page_content"><p>Remote document that can be downloaded without <a href="/api/files">proxying through telegram</a></p> + <div id="dev_page_content"><p>Remote document</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/webDocumentNoProxy" class="current_page_link" >webDocumentNoProxy</a>#f9c8bcc6 url:<a href="/type/string" >string</a> size:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> = <a href="/type/WebDocument" >WebDocument</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/webDocument" class="current_page_link" >webDocument</a>#1c570ed1 url:<a href="/type/string" >string</a> access_hash:<a href="/type/long" >long</a> size:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> = <a href="/type/WebDocument" >WebDocument</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> @@ -69,6 +69,11 @@ <td>Document URL</td> </tr> <tr> +<td><strong>access_hash</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Access hash</td> +</tr> +<tr> <td><strong>size</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> <td>File size</td> @@ -86,10 +91,7 @@ </tbody> </table> <h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> -<p><a href="/type/WebDocument">WebDocument</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="#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></div> +<p><a href="/type/WebDocument">WebDocument</a></p></div> </div> diff --git a/data/core.telegram.org/contest300K.html b/data/core.telegram.org/contest300K.html new file mode 100644 index 0000000000..86ddea9c34 --- /dev/null +++ b/data/core.telegram.org/contest300K.html @@ -0,0 +1,237 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Cracking Contest Description</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="« Back to Contest Announcement +The current round of the contest is over. Go to results » +In this contest you assume the…"> + <meta property="og:title" content="Telegram Cracking Contest Description"> + <meta property="og:image" content=""> + <meta property="og:description" content="« Back to Contest Announcement +The current round of the contest is over. Go to results » +In this contest you assume the…"> + <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?215" 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 Cracking Contest Description</h1> + + <div id="dev_page_content"><p><a href="https://telegram.org/blog/cryptocontest"><strong>« Back to Contest Announcement</strong></a></p> +<blockquote> +<p>The current round of the contest is over. <a href="https://telegram.org/blog/cryptocontest-ends"><strong>Go to results »</strong></a></p> +</blockquote> +<p>In this contest you assume the role of a malicious entity in control of Telegram's servers. Your goal is to extract sensitive data (a secret email and password) from a conversation between two peers — Paul and Nick. They are represented by two virtual users that communicate via <a href="https://core.telegram.org/api/end-to-end">Secret Chats</a> in Telegram.</p> +<p>Paul and Nick are both using clients that perform all the checks from <a href="/mtproto/security_guidelines">Telegram Security Guidelines</a> and compare their key visualizations over an independent channel as soon as a new Secret Chat is established. If any of these checks fails, they stop accepting messages in that Secret Chat. You control the entire process by sending commands to the Telegram user <code>@CryptoContest</code>, used as an interface for this contest. This enables contestants to try CPA, KPA, MITM and other kinds of active attacks and data tampering.</p> +<h3><a class="anchor" name="protocol" href="#protocol"><i class="anchor-icon"></i></a>Protocol</h3> +<p>The protocol used by Paul and Nick to establish Secret Сhats and exchange messages is identical to the one used for <a href="https://core.telegram.org/api/end-to-end">Secret Chats</a> in Telegram. Since we assume that the attacker is already in full control of the Telegram servers, basic MTProto encryption is bypassed altogether. In order to further simplify the task for contestants, we have removed irrelevant parameters, such as user_id and random_id.</p> +<p>The following <a href="/mtproto/TL">TL</a> scheme is used to establish Secret Chats in this contest: </p> +<pre><code>contest.dhConfig#01e00a51 g:int p:64*[int] random:64*[int] = contest.DhConfig; +contest.requestEncryption#3a73a74c g_a:64*[int] = contest.Message; +contest.acceptEncryption#068e4342 g_b:64*[int] fingerprint:int = contest.Message; +contest.encryptedMessage#11a6d4b1 id:long message:string = contest.Message; +---functions--- +contest.getDhConfig#369ee1a6 = contest.DhConfig;</code></pre> +<p>For exchange of encrypted messages (see <a href="/api/end-to-end#sending-and-receiving-messages-in-a-secret-chat">documentation</a>), the up-to-date layer 17 scheme with <a href="/api/end-to-end/seq_no">sequence numbers</a> is used, but with plain text message support only.</p> +<p>Each plaintext message is first created as a layer 17 <a href="/constructor/decryptedMessage">decryptedMessage</a>, then embedded in a <a href="/constructor/decryptedMessageLayer">decryptedMessageLayer</a> and encrypted as explained in the <a href="/api/end-to-end#serialization-and-encryption-of-outgoing-messages">Secret Chat documentation</a>. For the purpose of this contest, it is the result of this encryption <em>(ciphertext)</em> that is exchanged between the parties. </p> +<p>Notice that sending messages in an actual Telegram Secret Chat involves further embedding of that <em>ciphertext</em> into an API call and an additional layer of <a href="/mtproto">MTProto</a> encryption for client-server interaction. This step is omitted here, since we assume the attacker to be in control of the Telegram servers, not just of the communication lines between the clients and Telegram servers.</p> +<h3><a class="anchor" name="interface" href="#interface"><i class="anchor-icon"></i></a>Interface</h3> +<p>To access the interface, find the Telegram user <code>@CryptoContest</code> using the Global Search by username in any of the <a href="https://telegram.org/apps">Telegram apps</a>. This is a special bot we created for this contest. You can control communication between Paul and Nick by sending <a href="#commands">particularly formed</a> text messages to this bot and processing automatically generated answers to these messages (you may find the unofficial <a href="https://github.com/vysheng/tg">Linux CLI</a> convenient for mass automated queries).</p> +<p>You can create as many parallel Secret Chats between Paul and Nick as you like using the bot — each of them will have a separate <em>session_id</em>. All data is represented in hexadecimal format, with the exception of the <em>session_id</em>.</p> +<h3><a class="anchor" name="commands" href="#commands"><i class="anchor-icon"></i></a>Commands</h3> +<p>Below, <strong>A</strong> stands for the creator of the Secret Chat, <strong>B</strong> stands for the second party, <strong>S</strong> — the Telegram Server.</p> +<p>Each Secret Chat session in this contest is divided in two phases: </p> +<ul> +<li><a href="#1-creating-a-secret-chat">Creating a Secret Chat</a></li> +<li><a href="#2-sending-text-messages">Sending Encrypted Message</a></li> +</ul> +<h5><a class="anchor" name="1-creating-a-secret-chat" href="#1-creating-a-secret-chat"><i class="anchor-icon"></i></a>1. Creating a Secret Chat</h5> +<p>In order to create a new Secret Chat, six messages need to be exchanged:</p> +<table class="table"> +<thead> +<tr> +<th><strong>Source</strong></th> +<th><strong>Destination</strong></th> +<th><strong>Message</strong></th> +</tr> +</thead> +<tbody> +<tr> +<td>A</td> +<td>S</td> +<td>contest.getDhConfig</td> +</tr> +<tr> +<td>S</td> +<td>A</td> +<td>contest.DhConfig</td> +</tr> +<tr> +<td>A</td> +<td>B</td> +<td>contest.requestEncryption</td> +</tr> +<tr> +<td>B</td> +<td>S</td> +<td>contest.getDhConfig</td> +</tr> +<tr> +<td>S</td> +<td>B</td> +<td>contest.DhConfig</td> +</tr> +<tr> +<td>B</td> +<td>A</td> +<td>contest.acceptEncryption</td> +</tr> +</tbody> +</table> +<p>To create a Secret Chat in this contest:</p> +<ul> +<li>Send the <strong>START</strong> command to the user <code>@CryptoContest</code> in Telegram. You'll get the <strong>getDhConfig</strong> query, sent by A to the Server, and the answer that the server would normally send to A. You shall also receive the new <em>session_id</em> as the first 32-bit integer. All further messages related to this particular session (Secret Chat instance) must be prefixed with this <em>session_id</em> in decimal form.</li> +<li>After that, use the <strong>PASS</strong> command to pass the server's answer to A or <strong>ANSWER bytes</strong> to send a different answer instead. <strong>Bytes</strong> is represented by a string of an even number of hexadecimal digits. You'll receive the <strong>requestEncryption</strong> query as the result. </li> +<li>After that, use the <strong>PASS</strong> command to pass this query to B or <strong>ANSWER bytes</strong> to arbitrarily change it. You‘ll receive B’s <strong>getDhConfig</strong> to the server as the result.</li> +<li>As before, you can use either <strong>PASS</strong> or <strong>ANSWER bytes</strong>. You'll receive <strong>acceptEncryption</strong> as the result.</li> +<li>As before, you can use either <strong>PASS</strong> or <strong>ANSWER bytes</strong>. You'll receive “Ok” as the result.</li> +</ul> +<p>You will receive an error text as the result after any of these steps in case the participating clients perceive that something went wrong. This can happen if a security check is failed, or in the case that the first 128 bits of the SHA-1 of the newly created encryption key don‘t match on both parties’ clients when this stage is completed (this corresponds to Paul and Nick comparing the key visualizations for the Secret Chat in their Telegram apps).</p> +<p>If you obtain such an error, the session is failed and can no longer be used. You'll have to start new session. Note that the time to complete this phase is limited. Each step should not take longer than one hour, otherwise the Secret Chat will get cancelled.</p> +<p>Example:</p> +<pre><code>START +15 a6e19e36 510ae00103000000c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b202d33053c2340fd84dd024e8012277e9c6442ad7cd09fe85955c13196e2d32861ad0d8f8139ce5870f1c3563fbff77428632897352abd91cd0a6497a0f64a33d87cd8b53470cf1bc6a052bba7d0121623e9611c0de83ffeb63b7d15831a70187093373cb20df5613bdfab12a54bbc6fff94598d95a8dcdb1374631b021e77c350261bca9ffc16c59b19d3041bee011a20b06fc9806d633b6b9cdd79cbb8b02fe8ef9dde29b6d31d80b030c69d67d6fc4a7edb33ffab532d085796cf3e7635fd42ee72ea24840082186fd40c3c45cf0acef886533d4de7468f88942a662d302928470aa8704529180a6aec2f877398efb91893cc9b549e5123d7269adfe7b6ee +15 PASS +15 4ca7733a1a7823b420111d8e86e3fe9a7cff9fc611ce339d6999fc3053973ef6c8276af841b53547fdebdcb057cbad16aff6178be3fb8747889937dec082c984227c974a19232b85ad85ef457521fcf17d5f697a17b7e62952306f0ed086deb1ebcff0c8a32787789fe7afaa4035c2d0e07c10db46c0df6930a1729d3607fb035154e90c02036318862c5a9537e87a55bc656e3fc53db08f41a07f834e4917ebaaace1214409ffb44c5a806a9cb4def209bfb8ab2e59f1cb6257e422f37dfab288170bdc5666e6a63d1b0447a7b935ad3bdac8d53f64278d433b45925c84dc60214473363d57a30e31324d9b3cc42fb56d375aac2d9d1af16331ad3a92b43a9d64e47813 +15 PASS +15 a6e19e36 510ae00103000000c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b1ccd9c752428f0bca9ac9060bb85b8f90acb9374cd8d5a03110635f591a18f131cb7cc204407efec0687a8b77ba6c4e6732c35174e79e36aaa7fa6ab685257710e074065961ce1b16d21fed8a83cd95efcc4be7111cd33b5704fe759dfab21fc3e8aaa86d44609dc0b073354f8160c653f4fbde3ae7c28c87c3667e0797fac24b32e5c1a870cd898b2a9c517709bb0b8e4ee875ff857868eb56548e6dc993f198fd78c8a77cf997ed42a15f99a9b6265c7cf9bedc7580a11514047b881f717b233f3570ec21856bd2b9791e4c43b125e9260ac3fd48b9a10de5f9d5080e53d92d194adb796766684d905cca35e691fab0c76d6b5f49242f81eb92fcc8adc5a64 +15 ANSWER 510ae00103000000c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b1ccd9c752428f0bca9ac9060bb85b8f90acb9374cd8d5a03110635f591a18f131cb7cc204407efec0687a8b77ba6c4e6732c35174e79e36aaa7fa6ab685257710e074065961ce1b16d21fed8a83cd95efcc4be7111cd33b5704fe759dfab21fc3e8aaa86d44609dc0b073354f8160c653f4fbde3ae7c28c87c3667e0797fac24b32e5c1a870cd898b2a9c517709bb0b8e4ee875ff857868eb56548e6dc993f198fd78c8a77cf997ed42a15f99a9b6265c7cf9bedc7580a11514047b881f717b233f3570ec21856bd2b9791e4c43b125e9260ac3fd48b9a10de5f9d5080e53d92d194adb796766684d905cca35e691fab0c76d6b5f49242f81eb92fcc8ad00000 +15 42438e06bbb424bba5fd95122ec2f206c9b502f1f6d4e4fdbf74ed2c946ad60abaefd6fbd6a08e3ef418709d15bc557ef5e486a51d1e304f6c1e943faad948fde4e6273c0cad0df07068ad028fb01dc0fd7221aeed6ed5dc510dbe4824939036b0f3a45e740b40cef86a32f0b73b20234efc41d573f3e14efc08b3f65e9f7be52d5b930de52d41c7aadc4e0e85dfcf3bb1dd2e9cdf94fc236082879aea27207415cb846a5d5969e619040416a7f0f708f56a5b340a8fd0be1a26bfdc3de365a950532d363b427d6d905af7534af574ae8afd3f47658de5da3fa02dd818a31523122ff53dd31ffd7aa22e53cbf2da7772a1589e9a242f28f9cb1130f54553fcb355b3398fc877b80b3ef2cc3d +15 PASS +15 Ok</code></pre> +<h5><a class="anchor" name="2-sending-text-messages" href="#2-sending-text-messages"><i class="anchor-icon"></i></a>2. Sending Text Messages</h5> +<p>Once the Secret Chat has been established, you can use the following queries to make Paul and Nick exchange text messages inside the Secret Chat:</p> +<ul> +<li><strong>ASK [A|B]</strong> — asks A or B to send a random plaintext message to the other party. It is guaranteed that at least one of the first ten generated messages will contain the secret email and password that are the <a href="#objectives">goal</a> of this contest. It is also guaranteed that apart from that, all messages will contain only dictionary English words, spaces, line breaks and punctuation marks. The result to this query is the ciphertext corresponding to the randomly generated plaintext.</li> +<li><strong>TXT [A|B] bytes</strong> — asks A or B to encrypt <strong>bytes</strong> as the (plaintext) contents of a text message and send it to the other party. Note that <strong>bytes</strong> can be any byte sequence, not necessarily a valid UTF-8 sequence. The result to this query is the ciphertext corresponding to the given plaintext.</li> +<li><strong>MSG [A|B] bytes</strong> — send a specified (ciphertext) message (for example, obtained as an answer to an <strong>ASK</strong> or <strong>TXT</strong> query) to A or B. You will receive ‘Ok’ if this message was decrypted successfully and accepted by the client, or ‘Fail’ otherwise.</li> +</ul> +<p>Example:</p> +<pre><code>15 ASK A +15 b1d4a6119278722b0309a8c1fee80000c877b80b3ef2cc3dc92104de4322d8ae374fbf38758091fe4c86bafffa792f7eb37d8431cf8f868319c3af005791b7c55f788e260b8fa6a96b6808d0d448abfdb49913160c5355ef2d4e439a676055e42de6b26dd7d0e06e3fb48981208449658aff63fd8262ef0669f8bb242ade401e1190d2f54f3896ac17c1b796cbe185d5b0166649d5bac25e4626c08c78527458fc7877ee2add14a8e7b1f9b56651b8264284aa2fd28de55f96bcec8075dd43bbc69f6c05c2428795e51a081e3995e4ede72d190d55d0b30d8215bf4ed13fde7c8f578993050280ec4a940e910eb182bd335e52e2a699d9b5 +15 MSG B b1d4a6119278722b0309a8c1fee80000c877b80b3ef2cc3dc92104de4322d8ae374fbf38758091fe4c86bafffa792f7eb37d8431cf8f868319c3af005791b7c55f788e260b8fa6a96b6808d0d448abfdb49913160c5355ef2d4e439a676055e42de6b26dd7d0e06e3fb48981208449658aff63fd8262ef0669f8bb242ade401e1190d2f54f3896ac17c1b796cbe185d5b0166649d5bac25e4626c08c78527458fc7877ee2add14a8e7b1f9b56651b8264284aa2fd28de55f96bcec8075dd43bbc69f6c05c2428795e51a081e3995e4ede72d190d55d0b30d8215bf4ed13fde7c8f578993050280ec4a940e910eb182bd335e52e2a699d9b0 +15 Fail +15 MSG B b1d4a6119278722b0309a8c1fee80000c877b80b3ef2cc3dc92104de4322d8ae374fbf38758091fe4c86bafffa792f7eb37d8431cf8f868319c3af005791b7c55f788e260b8fa6a96b6808d0d448abfdb49913160c5355ef2d4e439a676055e42de6b26dd7d0e06e3fb48981208449658aff63fd8262ef0669f8bb242ade401e1190d2f54f3896ac17c1b796cbe185d5b0166649d5bac25e4626c08c78527458fc7877ee2add14a8e7b1f9b56651b8264284aa2fd28de55f96bcec8075dd43bbc69f6c05c2428795e51a081e3995e4ede72d190d55d0b30d8215bf4ed13fde7c8f578993050280ec4a940e910eb182bd335e52e2a699d9b5 +15 Ok +15 TXT B abac +15 b1d4a61101771d42f62323e6fe680000c877b80b3ef2cc3df751e68b935b083a6f5c15ba8d95b94388fc34453a1e7b9b20222402b7698be5dd8a6ff69a5141b01ca2488b0dada8f2b0e47980218f48912168ddd2cebd3b61b1edf2f557c7ec44768595ce1cb42a01f7c14dd4e6e6e7601cb17ab0b6d5a274</code></pre> +<hr> +<h3><a class="anchor" name="objectives" href="#objectives"><i class="anchor-icon"></i></a>Objectives</h3> +<p>We are offering a <strong>$300,000</strong> reward to the first person to break Telegram's encryption protocol in this contest.</p> +<p>Your goal is to extract a secret email address from one of the random messages that are exchanged between Nick and Paul when you use the <strong>ASK</strong> command. It is guaranteed that at least one of the first ten generated messages within a session will contain the secret address. It is also guaranteed that apart from that, all messages will contain only dictionary English words, spaces, line breaks and punctuation marks.</p> +<p>Once you have the address, you will need to send an email to it. That email must contain:<br>- The entire text of the message that contained the secret email.<br>- Session logs for the successful attempt with your user_id.<br>- A detailed explanation of the attack on the protocol.<br>- Your bank account details to receive the $300,000 prize.</p> +<h4><a class="anchor" name="decrypting-messages" href="#decrypting-messages"><i class="anchor-icon"></i></a>Decrypting messages</h4> +<p>To prove that the competition was fair, we will add a command that returns the keys used for a particular session by its <em>session_id</em> at the end of the contest. This will be done as soon as a winner is announced, or on February 4, 2015 in case no winner is announced to that date.</p> +<h4><a class="anchor" name="bonus-objective" href="#bonus-objective"><i class="anchor-icon"></i></a>Bonus objective</h4> +<p>We are also offering an independent <strong>$100,000</strong> reward to the first person to make the bot accept a ciphertext message (i.e. the first person to send a message using <strong>MSG [A|B] bytes</strong> and receive the result ‘OK’), provided that that ciphertext deciphers to a plaintext that was never encrypted by the bot itself within this session.</p> +<p>Should you succeed at this, kindly send an email to security@telegram.org and include the following:<br>- Session logs for the successful attempt with your user_id.<br>- A detailed explanation of the attack on the protocol.<br>- Your bank account details to receive the $100,000 prize.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/css/bootstrap-extra.css b/data/core.telegram.org/css/bootstrap-extra.css new file mode 100644 index 0000000000..8a35b6069b --- /dev/null +++ b/data/core.telegram.org/css/bootstrap-extra.css @@ -0,0 +1,3274 @@ +/* glyph */ +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} + + +/*btn*/ +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 6px 12px; + font-size: 12px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; +} +.btn-default .badge { + color: #ffffff; + background-color: #333333; +} +.btn-primary { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #3071a9; + border-color: #285e8e; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary .badge { + color: #428bca; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #ffffff; +} +.btn-link { + color: #0088cc; + font-weight: normal; + cursor: pointer; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #0088cc; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777777; + text-decoration: none; +} +.btn-lg { + padding: 10px 16px; + font-size: 15px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm { + padding: 5px 10px; + font-size: 11px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs { + padding: 1px 5px; + font-size: 11px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.img-responsive { + display: block; + width: 100% \9; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + width: 100% \9; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} + + + +.row { + margin-left: -15px; + margin-right: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0%; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0%; + } +} + + + + +.form-control { + display: block; + width: 100%; + height: 31px; + padding: 6px 12px; + font-size: 12px; + line-height: 1.42857143; + color: #555555; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #777777; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #777777; +} +.form-control::-webkit-input-placeholder { + color: #777777; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + line-height: 31px; + line-height: 1.42857143 \0; +} +input[type="date"].input-sm, +input[type="time"].input-sm, +input[type="datetime-local"].input-sm, +input[type="month"].input-sm { + line-height: 28px; +} +input[type="date"].input-lg, +input[type="time"].input-lg, +input[type="datetime-local"].input-lg, +input[type="month"].input-lg { + line-height: 42px; +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + min-height: 17px; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} +.input-sm, +.form-horizontal .form-group-sm .form-control { + height: 28px; + padding: 5px 10px; + font-size: 11px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 28px; + line-height: 28px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.input-lg, +.form-horizontal .form-group-lg .form-control { + height: 42px; + padding: 10px 16px; + font-size: 15px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg { + height: 42px; + line-height: 42px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 38.75px; +} +.form-control-feedback { + position: absolute; + top: 22px; + right: 0; + z-index: 2; + display: block; + width: 31px; + height: 31px; + line-height: 31px; + text-align: center; +} +.input-lg + .form-control-feedback { + width: 42px; + height: 42px; + line-height: 42px; +} +.input-sm + .form-control-feedback { + width: 28px; + height: 28px; + line-height: 28px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + border-color: #3c763d; + background-color: #dff0d8; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + border-color: #8a6d3b; + background-color: #fcf8e3; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + border-color: #a94442; + background-color: #f2dede; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 7px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 24px; +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 7px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + top: 0; + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.3px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + visibility: visible; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + right: 5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} + +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate3d(0, -25%, 0); + transform: translate3d(0, -25%, 0); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.42857143px; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} + +.modal-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.navbar-collapse:after, +.modal-footer:after { + clear: both; +} + + +.alert { + padding: 15px; + margin-bottom: 17px; + border: 1px solid transparent; + border-radius: 0; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #3c763d; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #31708f; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + background-color: #fcf8e3; + border-color: #faebcc; + color: #8a6d3b; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + background-color: #f2dede; + border-color: #ebccd1; + color: #a94442; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 18px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + + +/* Manually added pager */ +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + line-height: 1.42857143; + text-decoration: none; + color: #337ab7; + background-color: #ffffff; + border: 1px solid #dddddd; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eeeeee; + border-color: #dddddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #ffffff; + background-color: #337ab7; + border-color: #337ab7; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777777; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777777; + background-color: #ffffff; + cursor: not-allowed; +} +.pager:before, +.pager:after { + content: " "; + display: table; +} +.pager:after { + clear: both; +} + +/* List and panel */ +.list-group { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #555555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333333; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + text-decoration: none; + color: #555555; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #eeeeee; + color: #777777; + cursor: not-allowed; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-muted { + color: #777777; + background-color: #f7f7f7; +} +a.list-group-item-muted, +button.list-group-item-muted { + color: #777777; +} +a.list-group-item-muted .list-group-item-heading, +button.list-group-item-muted .list-group-item-heading { + color: inherit; +} +a.list-group-item-muted:hover, +button.list-group-item-muted:hover, +a.list-group-item-muted:focus, +button.list-group-item-muted:focus { + color: #777777; + background-color: #f1f1f1; +} +a.list-group-item-muted.active, +button.list-group-item-muted.active, +a.list-group-item-muted.active:hover, +button.list-group-item-muted.active:hover, +a.list-group-item-muted.active:focus, +button.list-group-item-muted.active:focus { + color: #fff; + background-color: #777777; + border-color: #777777; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 0; +} +.list-group-item-text { + margin-top: 5px; + margin-bottom: 0; + line-height: 1.3; +} +.list-group-item-text:empty { + margin-top: 0; +} +.panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #dddddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + border: 0; + margin-bottom: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #dddddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} +.panel-default { + border-color: #dddddd; +} +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #ffffff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} + +/* Inline Group */ + +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 41px; + padding: 10px 16px; + font-size: 15px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 41px; + line-height: 41px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 15px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.clearfix:before, +.clearfix:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + content: " "; + display: table; +} +.clearfix:after, +.form-horizontal .form-group:after { + clear: both; +} diff --git a/data/core.telegram.org/css/telegram-extra.css b/data/core.telegram.org/css/telegram-extra.css new file mode 100644 index 0000000000..6b408d1ae4 --- /dev/null +++ b/data/core.telegram.org/css/telegram-extra.css @@ -0,0 +1,246 @@ +.telegram-passport-wrap { + overflow: hidden; +} +.telegram-passport-form { + position: relative; +} +.telegram-passport-form .control-label { + line-height: 20px; + padding-top: 11px; +} +.telegram-passport-header { + font-size: 18px; + line-height: 27px; +} +.telegram-passport-greeting { + margin-right: 10px; +} +.telegram-passport-greeting a, +.telegram-passport-greeting a:hover { + color: inherit; +} +.telegram-passport-logout { + font-size: 16px; + font-weight: normal; +} +.telegram-passport-login-wrap { + margin: 10px 0 50px; + text-align: center; +} +.telegram-passport-relogin-wrap { + margin: 10px 0 50px; + text-align: center; +} +.telegram-passport-pending { + padding: 20px 0 40px; + text-align: center; +} +.telegram-passport-block-header, +.telegram-passport-item { + border-bottom: 1px solid #e7e7e7; +} +.telegram-passport-block-header, +.telegram-passport-item-name, +.telegram-passport-item-value { + padding: 15px 0; + line-height: 20px; +} +.telegram-passport-block-header { + margin: 25px 0 0; +} +.telegram-passport-item-name { + margin-right: 15px; + margin-bottom: -5px; + padding-bottom: 0; + float: left; +} +.telegram-passport-item-files, +.telegram-passport-item-value { + clear: left; + font-weight: bold; +} +.telegram-passport-item-value { + transition: color .12s linear; +} +.telegram-passport-item-files { + padding: 6px 0; +} +.telegram-passport-item-file { + padding: 6px 0; + min-height: 60px; +} +.telegram-passport-item .telegram-passport-checkbox-right .checkbox-input { + margin: 0; +} +.telegram-passport-item .telegram-passport-checkbox-right { + float: right; + margin: 40px -5px 10px; + padding: 5px; +} +.telegram-passport-item-files .checkbox-item-block { + margin: 6px 0; +} +.telegram-passport-item-file .telegram-passport-checkbox-right { + margin: 9px -5px; +} +.telegram-passport-scan-thumb { + display: inline-block; + width: 64px; + height: 48px; + background: #f7f7f7 no-repeat center; + background-size: cover; + float: left; + border-radius: 3px; + margin-right: 15px; +} +.telegram-passport-scan-name { + display: inline-block; + font-size: 14px; + padding: 3px 0 0; + transition: color .12s linear; + color: #2e87ca; +} +.telegram-passport-scan-size { + font-size: 13px; + padding: 1px 0 0; + font-weight: normal; + transition: color .12s linear; + color: #999; +} +.telegram-passport-item-value, +.telegram-passport-scan-info { + margin-right: 42px; +} +.telegram-passport-item .checkbox-item-block .checkbox-label { + transition: color .12s linear; +} +.telegram-passport-item.item-rejected .telegram-passport-item-value, +.telegram-passport-item-file.item-rejected .telegram-passport-scan-name, +.telegram-passport-item-file.item-rejected .telegram-passport-scan-size, +.telegram-passport-item .checkbox-item-block.item-rejected .checkbox-label { + color: #c93c3c; +} + +.telegram-passport-item .checkbox-item-block .checkbox-input-icon:before { + border-color: #eb5454; + background-color: #eb5454; + background-position: -3px -119px; +} +.telegram-passport-item .checkbox-item-block input.checkbox:checked + .checkbox-input .ripple { + background-color: rgba(235, 84, 84, .2); +} +.telegram-passport-errors-wrap { + text-align: right; + margin: 20px 16px 0; +} +.btn.telegram-passport-errors { + font-size: 15px; + font-weight: 500; + line-height: 20px; + border-radius: 6px; + background-color: transparent; + padding: 8px 16px 10px; + margin: 4px -16px; + border: none; + color: #c93c3c; + position: relative; + z-index: 1; +} +.btn.telegram-passport-errors:hover { + background-color: #f7e3e3; +} +.btn.telegram-passport-errors:focus { + outline: none; +} +.btn.telegram-passport-errors:active { + box-shadow: none; +} +.telegram-passport-errors-icon { + display: inline-block; + vertical-align: top; + width: 18px; + height: 19px; + margin: 1px 12px 0 0; + background: url(/img/passport_bug.png) no-repeat 0 0; +} +@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + .telegram-passport-errors-icon { + background-image: url(/img/passport_bug_2x.png); + background-size: 18px 19px; + } +} +.telegram-passport-errors-sent { + font-size: 14px; + line-height: 20px; + padding: 13px 24px 0 0; + color: #999; + transition: opacity .12s linear; + opacity: 0; +} +.telegram-passport-errors-sent.shown { + opacity: 1; +} + +@media (min-width: 768px) { + .telegram-passport-login-wrap { + text-align: left; + } + .telegram-passport-relogin-wrap { + text-align: left; + margin: 50px 0 50px 240px; + } + .telegram-passport-item-files, + .telegram-passport-item-value { + clear: none; + margin-left: 240px; + } + .telegram-passport-item .telegram-passport-checkbox-right { + margin-top: 10px; + } + .telegram-passport-item-file .telegram-passport-checkbox-right { + margin: 9px -5px; + } + .telegram-passport-errors-wrap { + position: absolute; + right: 0; + margin: 50px 0 0; + } +} + +.telegram-passport-form .sub-control-label { + text-align: left; + margin: 11px 0 6px; +} +.telegram-passport-form .sub-control-label .radio-label { + font-weight: bold; +} +.telegram-passport-form .sub-control-label .radio-item + .radio-item, +.telegram-passport-form .sub-control-label .checkbox-item + .checkbox-item { + margin-left: 25px; +} +.telegram-passport-form label.control-label .radio-label { + font-weight: bold; +} +.passport-opt, +.passport-opt-col { + display: inline-block; + margin-left: 31px; + margin-top: -10px; +} +.passport-opt + .passport-opt, +.passport-opt-col + .passport-opt-col { + margin-left: 0; +} +@media (min-width: 992px) { + .passport-opt-col { + margin-left: 0; + margin-top: 0; + text-align: center; + } + .passport-opt-col .checkbox-label { + text-align: left; + } + .passport-opt-col .checkbox-item input.checkbox ~ .checkbox-label { + display: none; + } +} diff --git a/data/core.telegram.org/getProxyConfig.html b/data/core.telegram.org/getProxyConfig.html new file mode 100644 index 0000000000..7238f2dd28 --- /dev/null +++ b/data/core.telegram.org/getProxyConfig.html @@ -0,0 +1,24 @@ +# force_probability 10 10 +default 2; +proxy_for 1 149.154.X.X:8888; +proxy_for -1 149.154.X.X:8888; +proxy_for 2 149.154.X.X:8888; +proxy_for -2 149.154.X.X:8888; +proxy_for 3 149.154.X.X:8888; +proxy_for -3 149.154.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for -4 149.154.X.X:8888; +proxy_for -4 149.154.X.X:8888; +proxy_for 5 91.108.X.X:8888; +proxy_for 5 91.108.X.X:8888; +proxy_for -5 91.108.X.X:8888; +proxy_for -5 91.108.X.X:8888; diff --git a/data/core.telegram.org/import-stickers.html b/data/core.telegram.org/import-stickers.html new file mode 100644 index 0000000000..c784348887 --- /dev/null +++ b/data/core.telegram.org/import-stickers.html @@ -0,0 +1,159 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Importing Stickers to Telegram</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="The easiest way to create stickers on Telegram is to simply upload them using the @stickers bot. This bot can help you upload…"> + <meta property="og:title" content="Importing Stickers to Telegram"> + <meta property="og:image" content=""> + <meta property="og:description" content="The easiest way to create stickers on Telegram is to simply upload them using the @stickers bot. This bot can help you upload…"> + <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?215" 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">Importing Stickers to Telegram</h1> + + <div id="dev_page_content"><p>The easiest way to create stickers on Telegram is to simply upload them using the <a href="https://t.me/stickers">@stickers</a> bot. This bot can help you <strong>upload new stickers</strong>, <strong>create sticker packs</strong> and get <strong>usage stats</strong> for your stickers and packs.</p> +<p>Telegram also offers a platform for developers of apps that <strong>help</strong> users <strong>make their own stickers</strong>. For example, apps that allow people to upload pictures of themselves and turn them into stickers.</p> +<h3><a class="anchor" name="who-is-this-for" href="#who-is-this-for"><i class="anchor-icon"></i></a>Who is this for?</h3> +<p><strong>USE this:</strong></p> +<ul> +<li>To help people <strong>make</strong> their own <strong>unique custom stickers</strong>.</li> +<li>To help people <strong>migrate</strong> their unique custom stickers they created <strong>from another platform</strong>.</li> +</ul> +<p><strong>DON'T use this:</strong></p> +<ul> +<li>To share stickers you uploaded with other Telegram users.</li> +<li>Instead, just upload your stickers using the <a href="https://t.me/stickers">@stickers</a> bot and <strong>share the link</strong> of your pack (e.g. <a href="https://t.me/addstickers/UtyaDuck"><a href="https://t.me/addstickers/UtyaDuck">https://t.me/addstickers/UtyaDuck</a></a>).</li> +</ul> +<p>In short, if a set of stickers is <strong>already available on Telegram</strong> – there's <strong>no need</strong> to import it!</p> +<h3><a class="anchor" name="sticker-importing-apps" href="#sticker-importing-apps"><i class="anchor-icon"></i></a>Sticker Importing Apps</h3> +<p>As of <a href="https://telegram.org/blog/animated-backgrounds#importing-stickers">version 7.8</a>, Telegram apps support a simple API for importing stickers.</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/464001267/2/U7MtqT21q4E.76558/a7a73d214c36478ed3" style="max-width: 400px;" title="Think outside the fox." alt="Importing stickers to Telegram"> + <source src="/file/464001715/1/YPZWHRfqpXI.3577036.mp4/bb24535cb655a57cd7" type="video/mp4"> + </video> +</div> + +<blockquote> +<p><strong>WARNING:</strong> Each time a user imports stickers, a <strong>new sticker pack</strong> is created on Telegram. <strong>Do not use</strong> the importing feature to share stickers you made with <em>other</em> users. If you want to share your stickers, simply upload them using <a href="https://t.me/stickers">@stickers</a> and share the <strong>link</strong> of your pack. For example, here's a link to install some <a href="https://t.me/addstickers/UtyaDuck">Duck Stickers</a>.</p> +</blockquote> +<h3><a class="anchor" name="importing-sdks" href="#importing-sdks"><i class="anchor-icon"></i></a>Importing SDKs</h3> +<p>We have created libraries and sample apps for <a href="https://github.com/TelegramMessenger/TelegramStickersImport">iOS</a> and <a href="https://github.com/DrKLO/TelegramStickersImport">Android</a> which you can use to implement importing stickers to Telegram from your app.</p> +<h3><a class="anchor" name="sticker-formats" href="#sticker-formats"><i class="anchor-icon"></i></a>Sticker Formats</h3> +<p>Telegram apps support two sticker types. Regardless of the type, each sticker must be associated with <strong>at least one emoji</strong> that expresses the emotion corresponding to the sticker.</p> +<h4><a class="anchor" name="animated-stickers" href="#animated-stickers"><i class="anchor-icon"></i></a>Animated Stickers</h4> +<p>Must be in <strong>TGS</strong> format, created using the <a href="https://github.com/TelegramMessenger/bodymovin-extension">Bodymovin-TG plugin for Adobe After Effects</a>.</p> +<blockquote> +<p><strong>Note:</strong> Animated <em>.WEBP</em> is <strong>NOT</strong> currently supported, only static <em>.WEBP</em> is supported for <a href="#static-stickers">static stickers</a>. Animated stickers must be in <strong>.TGS</strong> format. You can also import <strong>.WEBM</strong> <a href="#video-stickers">video stickers</a>.</p> +</blockquote> +<p>Max. size: <strong>64 KB</strong><br>Dimensions: <strong>512x512 px</strong><br>FPS: <strong>30-60 FPS</strong><br>Max. duration: <strong>3 seconds</strong></p> +<blockquote> +<p>For full technical details on Telegram animated stickers, see <a href="https://core.telegram.org/stickers#animated-stickers">this page</a>.</p> +</blockquote> +<h4><a class="anchor" name="video-stickers" href="#video-stickers"><i class="anchor-icon"></i></a>Video Stickers</h4> +<p>Must be in <strong>WEBM</strong> format with <a href="https://core.telegram.org/stickers/webm-vp9-encoding">VP9 and alpha channel encoding</a> (transparency is a temporary requirement).</p> +<p>Max. size: <strong>256 KB</strong><br>Max. dimensions: <strong>512x512 px</strong>, at least one side of the image must be 512px.<br>FPS: <strong>30</strong><br>Max. duration: <strong>3 seconds</strong></p> +<h4><a class="anchor" name="static-stickers" href="#static-stickers"><i class="anchor-icon"></i></a>Static Stickers</h4> +<p>Must be in <strong>PNG</strong> or <strong>WEBP</strong> format with a <strong>transparent layer</strong>. All static stickers should use <strong>white stroke</strong> and <strong>shadow</strong>, exactly like in this example: <a href="https://telegram.org/img/StickerExample.psd">StickerExample.psd</a></p> +<p>Max. size: <strong>512 KB</strong><br>Max. dimensions: <strong>512x512 px</strong>, at least one side of the image must be 512px.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/js/jquery-ui.min.js b/data/core.telegram.org/js/jquery-ui.min.js new file mode 100644 index 0000000000..a47c061a05 --- /dev/null +++ b/data/core.telegram.org/js/jquery-ui.min.js @@ -0,0 +1,9 @@ +/*! jQuery UI - v1.11.4 - 2017-08-30 +* http://jqueryui.com +* Includes: core.js, widget.js, mouse.js, draggable.js, resizable.js, sortable.js, slider.js, effect.js, effect-slide.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(e,s){var n,o,a,r=e.nodeName.toLowerCase();return"area"===r?(n=e.parentNode,o=n.name,e.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']")[0],!!a&&i(a)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!e.disabled:"a"===r?e.href||s:s)&&i(e)}function i(e){return t.expr.filters.visible(e)&&!t(e).parents().addBack().filter(function(){return"hidden"===t.css(this,"visibility")}).length}t.ui=t.ui||{},t.extend(t.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),t.fn.extend({scrollParent:function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])},focusable:function(i){return e(i,!isNaN(t.attr(i,"tabindex")))},tabbable:function(i){var s=t.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&e(i,!n)}}),t("<a>").outerWidth(1).jquery||t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(t.fn.removeData=function(e){return function(i){return arguments.length?e.call(this,t.camelCase(i)):e.call(this)}}(t.fn.removeData)),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),t.fn.extend({focus:function(e){return function(i,s){return"number"==typeof i?this.each(function(){var e=this;setTimeout(function(){t(e).focus(),s&&s.call(e)},i)}):e.apply(this,arguments)}}(t.fn.focus),disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(e){if(void 0!==e)return this.css("zIndex",e);if(this.length)for(var i,s,n=t(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}};var s=0,n=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r,l={},h=e.split(".")[0];return e=e.split(".")[1],n=h+"-"+e,s||(s=i,i=t.Widget),t.expr[":"][n.toLowerCase()]=function(e){return!!t.data(e,n)},t[h]=t[h]||{},o=t[h][e],a=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new a(t,e)},t.extend(a,o,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),r=new i,r.options=t.widget.extend({},r.options),t.each(s,function(e,s){return t.isFunction(s)?(l[e]=function(){var t=function(){return i.prototype[e].apply(this,arguments)},n=function(t){return i.prototype[e].apply(this,t)};return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(l[e]=s,void 0)}),a.prototype=t.widget.extend(r,{widgetEventPrefix:o?r.widgetEventPrefix||e:e},l,{constructor:a,namespace:h,widgetName:e,widgetFullName:n}),o?(t.each(o._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,a,i._proto)}),delete o._childConstructors):i._childConstructors.push(a),t.widget.bridge(e,a),a},t.widget.extend=function(e){for(var i,s,o=n.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])s=o[a][i],o[a].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=n.call(arguments,1),l=this;return a?this.each(function(){var i,n=t.data(this,s);return"instance"===o?(l=n,!1):n?t.isFunction(n[o])&&"_"!==o.charAt(0)?(i=n[o].apply(n,r),i!==n&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,s);e?(e.option(o||{}),e._init&&e._init()):t.data(this,s,new i(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=s++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!e),e&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.delegate(c,h,r):i.bind(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(i).undelegate(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget;var o=!1;t(document).mouseup(function(){o=!1}),t.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).bind("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!o){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),o=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),o=!1,!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.widget("ui.draggable",t.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this._blurActiveElement(e),this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=this.document[0];if(this.handleElement.is(e.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&t(i.activeElement).blur()}catch(s){}},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._normalizeRightBottom(),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.focus(),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),l=t.pageX,h=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(l=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(h=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,h=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(l=this.originalPageX),"x"===a.axis&&(h=this.originalPageY)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,l,h,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)l=s.snapElements[d].left-s.margins.left,h=l+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,l-g>_||m>h+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(l-_),r=g>=Math.abs(h-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(l-m),r=g>=Math.abs(h-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseInt(t,10)||0 +},_isNumber:function(t){return!isNaN(parseInt(t,10))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i,s,n,o,a=this,r=this.options;if(this.element.addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),e=this.handles.split(","),this.handles={},i=0;e.length>i;i++)s=t.trim(e[i]),o="ui-resizable-"+s,n=t("<div class='ui-resizable-handle "+o+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),t(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(t(this).removeClass("ui-resizable-autohide"),a._handles.show())}).mouseleave(function(){r.disabled||a.resizing||(t(this).addClass("ui-resizable-autohide"),a._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),a.addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,l=this._change[o];return this._updatePrevProperties(),l?(i=l.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,l,h=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null,l=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null,h.animate||this.element.css(t.extend(a,{top:l,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!h.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,h=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&c&&(t.top=l-e.minHeight),n&&c&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseInt(s[e],10)||0,i[e]+=parseInt(n[e],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,l={width:i.size.width-r,height:i.size.height-a},h=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,c=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(l,c&&h?{top:c,left:h}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,l=t(this).resizable("instance"),h=l.options,c=l.element,u=h.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(l.containerElement=t(d),/document/.test(u)||u===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=l._num(e.css("padding"+s))}),l.containerOffset=e.offset(),l.containerPosition=e.position(),l.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=l.containerOffset,n=l.containerSize.height,o=l.containerSize.width,a=l._hasScroll(d,"left")?d.scrollWidth:o,r=l._hasScroll(d)?d.scrollHeight:n,l.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,l=a.containerOffset,h=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=l),h.left<(a._helper?l.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-l.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?l.left:0),h.top<(a._helper?l.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-l.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?l.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-l.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-l.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),l=a.outerWidth()-e.sizeDiff.width,h=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseInt(e.width(),10),height:parseInt(e.height(),10),left:parseInt(e.css("left"),10),top:parseInt(e.css("top"),10)})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.options,s=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,l="number"==typeof s.grid?[s.grid,s.grid]:s.grid,h=l[0]||1,c=l[1]||1,u=Math.round((n.width-o.width)/h)*h,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=l,_&&(p+=h),v&&(f+=c),g&&(p-=h),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-h)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-h>0?(i.size.width=p,i.position.left=a.left-u):(p=h-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.sortable",t.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),t.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,l=r+t.height,h=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+h>r&&l>s+h,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&l>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),s=e&&i,n=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return s?this.floating?o&&"right"===o||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],l=[],h=this._connectWith();if(h&&e)for(s=h.length-1;s>=0;s--)for(o=t(h[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&l.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(l.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=l.length-1;s>=0;s--)l[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,l,h,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,h=r.length;h>s;s++)l=t(r[s]),l.data(this.widgetName+"-item",a),c.push({item:l,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]).addClass(i||e.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td> </td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,l,h,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue; +d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"clientX":"clientY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(l=this.items[s].item.offset()[a],h=!1,e[u]-l>this.items[s][r]/2&&(h=!0),n>Math.abs(e[u]-l)&&(n=Math.abs(e[u]-l),o=this.items[s],this.direction=h?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,l=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():l?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():l?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.slider",t.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,i="";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=t("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,l,h,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,o.addClass("ui-state-active").focus(),l=o.offset(),h=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-l.left-o.width()/2,top:e.pageY-l.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var s,n,o;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,o=this._trigger("slide",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),o!==!1&&this.values(e,i))):i!==this.value()&&(o=this._trigger("slide",t,{handle:this.handles[e],value:i}),o!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("stop",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger("change",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!i),this._super(e,i),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.floor(+(t-e).toFixed(this._precision())/i)*i;t=s+e,this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,l=this,h=this._animateOff?!1:r.animate,c={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((l.values(s)-l._valueMin())/(l._valueMax()-l._valueMin())),c["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[h?"animate":"css"](c,r.animate),l.options.range===!0&&("horizontal"===l.orientation?(0===s&&l.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&l.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range[h?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range[h?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(e.target).addClass("ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass("ui-state-active"))}}});var a="ui-effects-",r=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=h(),n=s._rgba=[];return i=i.toLowerCase(),f(l,function(t,o){var a,r=o.re.exec(i),l=r&&o.parse(r),h=o.space||"rgba";return l?(a=s[h](l),s[c[h].cache]=a[c[h].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,l=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],h=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=h.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),h.fn=t.extend(h.prototype,{parse:function(n,a,r,l){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,l],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof h?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=h(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=h(t),n=s._space(),o=c[n],a=0===this.alpha()?h("transparent"):this,r=a[o.cache]||o.to(a._rgba),l=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],h=s[o],c=u[n.type]||{};null!==h&&(null===a?l[o]=h:(c.mod&&(h-a>c.mod/2?a+=c.mod:a-h>c.mod/2&&(a-=c.mod)),l[o]=i((h-a)*e+a,n)))}),this[n](l)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=h(e)._rgba;return h(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),h.fn.parse.prototype=h.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),l=Math.min(s,n,o),h=r-l,c=r+l,u=.5*c;return e=l===r?0:s===r?60*(n-o)/h+360:n===r?60*(o-s)/h+120:60*(s-n)/h+240,i=0===h?0:.5>=u?h/c:h/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,l=n.to,c=n.from;h.fn[s]=function(s){if(l&&!this[a]&&(this[a]=l(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=h(c(d)),n[a]=d,n):h(d)},f(o,function(e,i){h.fn[e]||(h.fn[e]=function(n){var o,a=t.type(n),l="alpha"===e?this._hsla?"hsla":"rgba":s,h=this[l](),c=h[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),h[i.idx]=n,this[l](h)))})})}),h.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=h(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(l){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(l){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=h(e.elem,i),e.end=h(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},h.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(r),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(r.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var l=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",h=l.children?a.find("*").addBack():a;h=h.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),h=h.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),h=h.map(function(){var e=this,i=t.Deferred(),s=t.extend({},l,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,h.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),l.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}t.extend(t.effects,{version:"1.11.4",save:function(t,e){for(var i=0;e.length>i;i++)null!==e[i]&&t.data(a+e[i],t[0].style[e[i]])},restore:function(t,e){var i,s;for(s=0;e.length>s;s++)null!==e[s]&&(i=t.data(a+e[s]),void 0===i&&(i=""),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).focus(),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).focus()),e},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){t.isFunction(o)&&o.call(n[0]),t.isFunction(e)&&e()}var n=t(this),o=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):a.call(n[0],s,i)}var s=e.apply(this,arguments),n=s.mode,o=s.queue,a=t.effects.effect[s.effect]; +return t.fx.off||!a?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):o===!1?this.each(i):this.queue(o||"fx",i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s}})}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}(),t.effects,t.effects.effect.slide=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","width","height"],a=t.effects.setMode(n,e.mode||"show"),r="show"===a,l=e.direction||"left",h="up"===l||"down"===l?"top":"left",c="up"===l||"left"===l,u={};t.effects.save(n,o),n.show(),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0),t.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(h,c?isNaN(s)?"-"+s:-s:s),u[h]=(r?c?"+=":"-=":c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}})}}); \ No newline at end of file diff --git a/data/core.telegram.org/js/telegram-passport2.js b/data/core.telegram.org/js/telegram-passport2.js new file mode 100644 index 0000000000..026006ade7 --- /dev/null +++ b/data/core.telegram.org/js/telegram-passport2.js @@ -0,0 +1,413 @@ +(function(window) { + if (!Array.isArray) { + Array.isArray = function(arg) { + return Object.prototype.toString.call(arg) === '[object Array]'; + }; + } + if (!Object.isSimpleObject) { + Object.isSimpleObject = function(arg) { + return arg != null && typeof arg === 'object'; + }; + } + function isFunction(func) { + return func && {}.toString.call(func) === '[object Function]'; + } + function getEl(elOrId) { + if (elOrId.nodeType) return elOrId; + return document.getElementById(elOrId); + } + function preventDefault(event) { + if (window.event) { + window.event.returnValue = false; + } + else if (event.preventDefault) { + event.preventDefault(); + } + else { + event.returnValue = false; + } + } + function addEvent(el, event, handler) { + var events = event.split(/\s+/); + for (var i = 0; i < events.length; i++) { + if (el.addEventListener) { + el.addEventListener(events[i], handler, false); + } else { + el.attachEvent('on' + events[i], handler); + } + } + } + + var UA = window.navigator.userAgent || ''; + var ScopeAliases = { + personal_details: 'pd', + passport: 'pp', + driver_license: 'dl', + identity_card: 'ic', + internal_passport: 'ip', + id_document: 'idd', + address: 'ad', + utility_bill: 'ub', + bank_statement: 'bs', + rental_agreement: 'ra', + passport_registration: 'pr', + temporary_registration: 'tr', + address_document: 'add', + phone_number: 'pn', + email: 'em', + }; + + function openDeepLink(url, tooltipToggle) { + var is_ios = /ios|iphone os|iphone|ipod|ipad/i.test(UA); + var is_firefox = /firefox/i.test(UA); + var use_iframe = (is_ios || is_firefox); + var use_once = (!is_ios && is_firefox); + var timeOpen; + var ttNeedHide = false; + var pageShown = true; + var onPageHide = function() { + pageShown = false; + }; + tooltipToggle = tooltipToggle || function(){}; + var onPageShow = function() { + pageShown = true; + if (ttNeedHide && (+(new Date) - timeOpen) > 5000) { + tooltipToggle(false); + } + }; + addEvent(window, 'pagehide', onPageHide); + addEvent(window, 'pageshow', onPageShow); + addEvent(window, 'blur', onPageHide); + addEvent(window, 'focus', onPageShow); + var showTooltip = function() { + tooltipToggle(true); + if (!pageShown) { + ttNeedHide = true; + } + }; + if (use_iframe) { + var iframeEl = document.createElement('iframe'); + iframeEl.style.position = 'absolute'; + iframeEl.style.left = '-10000px'; + iframeEl.style.top = '-10000px'; + document.body.appendChild(iframeEl); + if (iframeEl !== null) { + timeOpen = +(new Date); + iframeEl.src = url; + setTimeout(showTooltip, 2500); + } + if (!use_once) { + setTimeout(function() { + if (pageShown) { + timeOpen = +(new Date); + window.location = url; + } + }, 2000); + } + } + else { + setTimeout(function() { + timeOpen = +(new Date); + window.location = url; + }, 100); + setTimeout(showTooltip, 1500); + } + } + + function packScope(scope) { + if (scope.data) { + scope.d = scope.data; + delete scope.data; + } + if (!scope.d) { + throw new TypeError('scope data is required'); + } + if (!scope.v) { + throw new TypeError('scope version is required'); + } + for (var i = 0; i < scope.d.length; i++) { + scope.d[i] = packScopeField(scope.d[i]); + } + return JSON.stringify(scope); + } + function packScopeField(field) { + if (field.one_of) { + field._ = field.one_of; + delete field.one_of; + } else if (field.type) { + field._ = field.type; + delete field.type; + } + if (Array.isArray(field._)) { + for (var j = 0; j < field._.length; j++) { + field._[j] = packScopeField(field._[j]); + } + field = packScopeOpts(field); + } else if (field._) { + if (ScopeAliases[field._]) { + field._ = ScopeAliases[field._]; + } + field = packScopeOpts(field); + } else if (ScopeAliases[field]) { + field = ScopeAliases[field]; + } + return field; + } + function packScopeOpts(scope) { + if (scope.selfie) { + scope.s = 1; + delete scope.selfie; + } + if (scope.translation) { + scope.t = 1; + delete scope.translation; + } + if (scope.native_names) { + scope.n = 1; + delete scope.native_names; + } + return scope; + } + + function passportAuth(options, tooltipToggle) { + if (!options.bot_id) { + throw new Error('bot_id is required'); + } + if (!options.scope) { + throw new Error('scope is required'); + } + if (!Object.isSimpleObject(options.scope)) { + throw new TypeError('scope should be an object'); + } + if (!options.public_key) { + throw new Error('public_key is required'); + } + if (!options.nonce) { + throw new Error('nonce is required'); + } + if (options.payload) { + throw new Error('payload is deprecated, use nonce instead'); + } + var is_android = /android/i.test(UA); + var url = (is_android ? 'tg:' : 'tg://') + 'resolve?domain=telegrampassport' + + '&bot_id=' + encodeURIComponent(options.bot_id) + + '&scope=' + encodeURIComponent(packScope(options.scope)) + + '&public_key=' + encodeURIComponent(options.public_key) + + '&nonce=' + encodeURIComponent(options.nonce); + if (options.callback_url) { + url += '&callback_url=' + encodeURIComponent(options.callback_url); + } + url += '&payload=nonce'; // legacy for outdated apps + openDeepLink(url, tooltipToggle); + } + + function createAuthButton(contEl, authDataOrFunc, options) { + contEl = getEl(contEl); + if (!contEl) { + return false; + } + options = options || {}; + var btnText = options.text || 'Log In With Telegram'; + var btnRadius = parseInt(options.radius, 10) || 23; + var tooltipText = options.tooltip_text || 'Please <u>install Telegram</u> to use this option.'; + var tooltipForce = options.tooltip_force || false; + var tooltipPos = options.tooltip_position; + if (tooltipPos == 'top') { + var tooltipWrapClass = 'tooltip-top'; + } else if (tooltipPos == 'left') { + var tooltipWrapClass = 'tooltip-left'; + } else if (tooltipPos == 'right') { + var tooltipWrapClass = 'tooltip-right'; + } else { + var tooltipWrapClass = 'tooltip-bottom'; + } + var btnStyle = '' + + '.telegram-passport {' + + 'display: inline-block;' + + 'position: relative;' + + 'max-width: 100%;' + + '}' + + 'button.telegram-passport-button {' + + 'display: inline-block;' + + 'vertical-align: top;' + + 'font-family: "Lucida Grande", Arial, Helvetica, sans-serif;' + + 'font-size: 16px;' + + 'font-weight: 500;' + + 'line-height: 20px;' + + 'text-align: left;' + + 'border-radius: ' + btnRadius + 'px;' + + 'background-color: #54a9eb;' + + 'text-decoration: none;' + + 'padding: 12px 21px 14px;' + + 'margin: 0;' + + 'white-space: nowrap;' + + 'text-overflow: ellipsis;' + + 'overflow: hidden;' + + 'border: none;' + + 'color: #fff;' + + 'cursor: pointer;' + + 'max-width: 100%;' + + '}' + + 'button.telegram-passport-button:focus {' + + 'outline: none;' + + '}' + + '.telegram-passport-tooltip-wrap {' + + 'position: absolute;' + + 'pointer-events: none;' + + 'text-align: center;' + + 'z-index: 100;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-bottom {' + + 'left: -500px;' + + 'right: -500px;' + + 'top: 100%;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-top {' + + 'left: -500px;' + + 'right: -500px;' + + 'bottom: 100%;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-left {' + + 'right: 100%;' + + 'top: 7px;' + + 'bottom: 7px;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-right {' + + 'left: 100%;' + + 'top: 7px;' + + 'bottom: 7px;' + + '}' + + '.telegram-passport-tooltip {' + + 'position: relative;' + + 'font-family: "Lucida Grande", Arial, Helvetica, sans-serif;' + + 'background: #949494;' + + 'color: #fff;' + + 'white-space: nowrap;' + + 'border-radius: ' + btnRadius + 'px;' + + 'padding: 7px 16px;' + + 'display: inline-block;' + + 'font-size: 14px;' + + 'line-height: 18px;' + + 'text-decoration: none;' + + 'pointer-events: none;' + + 'visibility: hidden;' + + 'opacity: 0;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-bottom .telegram-passport-tooltip {' + + 'margin-top: 32px;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-top .telegram-passport-tooltip {' + + 'margin-bottom: 32px;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-left .telegram-passport-tooltip {' + + 'margin-right: 32px;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-right .telegram-passport-tooltip {' + + 'margin-left: 32px;' + + '}' + + '.telegram-passport-tooltip:hover {' + + 'color: #fff;' + + 'text-decoration: none;' + + '}' + + '.telegram-passport-tooltip-shown {' + + 'transition: all .2s ease;' + + 'pointer-events: auto;' + + 'visibility: visible;' + + 'opacity: 1;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-bottom .telegram-passport-tooltip-shown {' + + 'margin-top: 16px;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-top .telegram-passport-tooltip-shown {' + + 'margin-bottom: 16px;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-left .telegram-passport-tooltip-shown {' + + 'margin-right: 16px;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-right .telegram-passport-tooltip-shown {' + + 'margin-left: 16px;' + + '}' + + '.telegram-passport-button-icon {' + + 'display: inline-block;' + + 'vertical-align: top;' + + "background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAAsCAYAAAFZD3u2AAAAAXNSR0IArs4c6QAAB+FJREFUaAXVWllsVFUYPndm2qG0Q4EipaWspSJbQRYxDWIUHyBqAgYTjUsTNBqN+qAJLg8+ugTlQeITARNQNERcXlyesAxVhOKSSGhLVyi0dDqdznTWznL9/ts5t2fuNrfTEvFP/p5//89/z52z3TJmArIsOyWtDkKZyxxEgE+SkOBMm5/rxlsSxpPpTFPrEJEqKJ4S4PfOgBSMp1QvkqmMSJCryOto6HuUsFwDwbvkRQDZb0rcLEM2JFRklFP1zJaQ0wm1t+FEmjxzQPUcioyxbPcHcyzsMOhXzhNyaZ1gMAeyYVF+visgskp2CYY0CHNzNGD42GxfWaFVKY4u9D1HQ2NGlkYO2QibdJFIgB5I3/zRLx/xXlUCgM8BQyc7QkQ5YceOerBZTGnpJBr2DkXHOK9zguIcV/JW+2IrTlDu5QZie7bdL1/oCogiorupvzpIpzMpit7ji+h0EBTxTG9yLRkTRuLq75GrlFZXj7fNf4ocMplMjqHI6JxIQE40uGZANurPghgRjjb39YI/IspAv6zhx1lv+/ALR73XJuYHiHlWQ4fpFCLRazwZb6ccH4FKgD/xgFbtpJIh0ENAw5eFksSS6Zs0cCawxTQZHA6aOOWIfaOJGCVoxltuBZRImd5gdAH0ZtPMGsVVf5T1DMUUaUVZ0QyLiYl7vkoETYkz0NJkSa0ptPaH2WAooerXLPSwirJilbcisjM/o2k0DsMSrTE68dZfvcH3Q8JqRzYNK+Ywl9P056INQ/wXXJizSnEhb1ta5KJImX+MeAw+W1sziy2cbfkAuKva8qpIYJmMDM60Dn2ICX8/ree+USUviVljQ03G6ZhYYhWh/k8HktVxcd5kZEhv20BojIUTKSxhLLRv2+JyHgCPeznoTs5rWhom/VquMdKxX52/8YNOqBEg8TtADsc06lvPIvMuYBdw9y3JhsDzgBeBIvRPazJEPiRG19AHppwMAZ8EpjSBjdjqgpIh0lJgh1HEdCYTTiTTOtWkEsHbATyuiyIIWroDcsfNsCCZIG0lg/lLEy7GVCiaDNBv8XogZmwgy17TZPBYDxww8xTlv17xK1uckYi6SxPVnN5DydQZBFI3+K+Bj5AiHwwEE+n2gbCT7LYun83cRQpp6MbnRxeS7ITFj4ZWxsK0t93vxNFEib6tbi5zONQ+G3tkpbSeKRtrS6ussnMwwq4HaEUaBxuLJhnGUNlMImhh+ogIK0hl5DSdL3giKsRmIgr7CY+t1o8Cl0L4LXADV1L7T1+IDUeSqsjtcrCttXQwsg2VqEw5n6nJRFckrh1LpU+c6xy5R5TPKnGxDROri6gypfnLQQaGybgn/XY4XTXbzeoqyzhruxWTWW4mYKgma+kJ2k4gGDYJtPlGn4wk5ribG8eSGXb07DUW1myAuN6kPSjKLR8jGfJH2eGLqn53LSjFLkt3IFb1nBAfIcksH6PiJEkj3Jm3SFwDupTzdtu8yTIOtk4M5nI6NzY2LLqOXkezPT8v6gU6ItAKmTfZA3UVfdxJcjh3NzYs/JPz1CLhVjS7RFmWzhkvA72xyHvZt+mz5qvmpxC44bdJ6516ujWO9D+VorC1wAPAG0AtdN/2ZaHHxcA9wO+Algs09BzO3laFoVfVwP3AS7yHBbaP/WeFocPbgIeBwQI7b+bWQ0Xp7ianu1Jk9yDmXmAjcDsw78QPGw7pgeDYSOdguKIap91ldyjbGK4za5VZazJJzAKpchSxEgwV8AyQFoVCINHti2WuDUeV+4QlFSVsyTxbBVEu2vXNwlSdLGjEUAD50baWingUSPvoggG3jLGOwah7IBin9cdNF/2rqz1snsfeDYuQ+BAVRXzeEUMR82H3FJCKWA+cFsA3jVhbf7hE3IwWYzO6rsbDSt0FPW/qVzUKU87RORFQBK22VMATwEltd2GfF+LJTKK1f9QdiikXrerVFW166Q6saHLXU9p8X/KiSEGHl9fRfqy1mi5+NJ5KY2Sc0TH9/U5VuZutqCyl7ct0pNuMOBd5IBqxnCMDV0ylDUSTcnt/WEqkMhRGdxCtQzFVk7zTy9OfM2JRZKs+KowcfSB6Gkiv4b3ASQFdrdJxFPcehn4uHBvX4PdTXjL+ccPQqHDhbhT2veiuFiYKRRoFrwD/eBbVkwx4uuuQenDIMKlFCTOz2KlMCFY3CIph4X+6UFSt1j1vYVoH4k93d89wJDzj1+tGBpDRZfiqqjLbNxUmYeyIX0Fhn2oNCyqMgjRd9jdg6mnWBqSLii3LrO94tD5T4OlMWo7ClGlWjFNwYRTklzbfYUmWnhcD0ux3Izj+KaMev6mNS8qZY3pmPTENpz9AUW9zRmynVNjJkyedC+p3RGUmq1uEUDzNBkcnvtFQsmL8mwJdoC21vzUS+2hFz0dhPiODKRVGAZs6g3UsmWznwUeiSTYkXG1xObUYuEsP11e9ON/jOgx2lagrgD6Oop4188t7N2DmyOX315ZfcUoO9XXAtY8O0IFBR5F0J77YrK2cVdQMfjWQHiotLSGdgz2B5d3DlEeM+oAlQfK2DffglVzcN5Jg+OcWpWsIHmdOaee+hkVNVn2FPy1u7wHfANrp02k8lwetYtoJYuWv6n7+e6C0pNjV3zEU9eCGOc0kx77n7qs5phrYJFDkAph+Dtxh4kJPrRaF9Zrob38xiqwHngLSf3TQh3X6YGXr++q/M6e7wZMmuzIAAAAASUVORK5CYII=') no-repeat;" + + 'background-size: 27px 22px;' + + 'width: 27px;' + + 'height: 22px;' + + 'margin: 0 15px -2px -5px;' + + '}' + + '.telegram-passport-tooltip:before {' + + "content: '';" + + 'display: inline-block;' + + 'position: absolute;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-bottom .telegram-passport-tooltip:before {' + + 'left: 50%;' + + 'top: 0;' + + 'border: 10px solid;' + + 'border-radius: 4px 0 0;' + + 'border-color: #949494 transparent transparent #949494;' + + 'transform: rotateZ(45deg) translate3d(-3px,5px,0);' + + 'transform-origin: 100% 0;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-top .telegram-passport-tooltip:before {' + + 'left: 50%;' + + 'bottom: 0;' + + 'border: 10px solid;' + + 'border-radius: 0 0 4px;' + + 'border-color: transparent #949494 #949494 transparent;' + + 'transform: rotateZ(45deg) translate3d(-11px,9px,0);' + + 'transform-origin: 0 100%;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-left .telegram-passport-tooltip:before {' + + 'top: 50%;' + + 'right: 0;' + + 'border: 8px solid;' + + 'border-radius: 0 2px 0 0;' + + 'border-color: #949494 #949494 transparent transparent;' + + 'transform: rotateZ(45deg) translate3d(4px,-3.5px,0);' + + 'transform-origin: 100% 0;' + + '}' + + '.telegram-passport-tooltip-wrap.tooltip-right .telegram-passport-tooltip:before {' + + 'top: 50%;' + + 'left: 0;' + + 'border: 8px solid;' + + 'border-radius: 0 0 0 2px;' + + 'border-color: transparent transparent #949494 #949494;' + + 'transform: rotateZ(45deg) translate3d(-15px,-7.5px,0);' + + 'transform-origin: 0 100%;' + + '}'; + var tooltipClass = tooltipForce ? 'telegram-passport-tooltip telegram-passport-tooltip-shown' : 'telegram-passport-tooltip'; + var btnHtml = '' + + '<style>' + btnStyle + '</style>' + + '<div class="telegram-passport-tooltip-wrap ' + tooltipWrapClass + '"><a class="' + tooltipClass + '" href="https://telegram.org/dl/" target="_blank">' + tooltipText + '</a></div>' + + '<button class="telegram-passport-button"><i class="telegram-passport-button-icon"></i>' + btnText + '</button>'; + var btnContEl = document.createElement('div'); + btnContEl.className = 'telegram-passport'; + btnContEl.innerHTML = btnHtml; + contEl.appendChild(btnContEl); + var buttonEl = btnContEl.getElementsByTagName('button')[0]; + var tooltipEl = btnContEl.getElementsByTagName('a')[0]; + addEvent(buttonEl, 'click', function(e) { + preventDefault(e); + var options = isFunction(authDataOrFunc) ? authDataOrFunc() : authDataOrFunc; + options = options || {}; + var tooltipToggle = function(show) { + if (show) { + tooltipEl.classList.add('telegram-passport-tooltip-shown'); + } else { + tooltipEl.classList.remove('telegram-passport-tooltip-shown'); + } + }; + passportAuth(options, !tooltipForce ? tooltipToggle : null); + }); + } + + if (!window.Telegram) { + window.Telegram = {}; + } + window.Telegram.Passport = { + auth: passportAuth, + createAuthButton: createAuthButton, + }; +})(window); diff --git a/data/core.telegram.org/method/messages.checkChatInvite b/data/core.telegram.org/method/account.confirmPhone similarity index 81% rename from data/core.telegram.org/method/messages.checkChatInvite rename to data/core.telegram.org/method/account.confirmPhone index 3faca74996..a0c2ab7eec 100644 --- a/data/core.telegram.org/method/messages.checkChatInvite +++ b/data/core.telegram.org/method/account.confirmPhone @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.checkChatInvite</title> + <title>account.confirmPhone</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Check the validity of a chat invite link and get basic info about it"> - <meta property="og:title" content="messages.checkChatInvite"> + <meta property="description" content="Confirm a phone number to cancel account deletion, for more info click here »"> + <meta property="og:title" content="account.confirmPhone"> <meta property="og:image" content=""> - <meta property="og:description" content="Check the validity of a chat invite link and get basic info about it"> + <meta property="og:description" content="Confirm a phone number to cancel account deletion, for more info click here »"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.checkChatInvite" >messages.checkChatInvite</a></li></ul></div> - <h1 id="dev_page_title">messages.checkChatInvite</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/account.confirmPhone" >account.confirmPhone</a></li></ul></div> + <h1 id="dev_page_title">account.confirmPhone</h1> - <div id="dev_page_content"><p>Check the validity of a chat invite link and get basic info about it</p> + <div id="dev_page_content"><p>Confirm a phone number to cancel account deletion, for more info <a href="/api/account-deletion">click here »</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,10 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/chatInviteAlready" >chatInviteAlready</a>#5a686d7c chat:<a href="/type/Chat" >Chat</a> = <a href="/type/ChatInvite" >ChatInvite</a>; -<a href="/constructor/chatInvite" >chatInvite</a>#dfc2f58e flags:<a href="/type/%23" >#</a> channel:flags.0?true broadcast:flags.1?true public:flags.2?true megagroup:flags.3?true title:<a href="/type/string" >string</a> photo:<a href="/type/Photo" >Photo</a> participants_count:<a href="/type/int" >int</a> participants:flags.4?<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/ChatInvite" >ChatInvite</a>; -<a href="/constructor/chatInvitePeek" >chatInvitePeek</a>#61695cb0 chat:<a href="/type/Chat" >Chat</a> expires:<a href="/type/int" >int</a> = <a href="/type/ChatInvite" >ChatInvite</a>; +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/messages.checkChatInvite" class="current_page_link" >messages.checkChatInvite</a>#3eadb1bb hash:<a href="/type/string" >string</a> = <a href="/type/ChatInvite" >ChatInvite</a>;</code></pre></p> +<a href="/method/account.confirmPhone" class="current_page_link" >account.confirmPhone</a>#5f2178c3 phone_code_hash:<a href="/type/string" >string</a> phone_code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</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> @@ -68,14 +67,19 @@ </thead> <tbody> <tr> -<td><strong>hash</strong></td> +<td><strong>phone_code_hash</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Invite hash in <code>t.me/joinchat/hash</code></td> +<td>Phone code hash, for more info <a href="/api/account-deletion">click here »</a></td> +</tr> +<tr> +<td><strong>phone_code</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>SMS code, for more info <a href="/api/account-deletion">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/ChatInvite">ChatInvite</a></p> +<p><a href="/type/Bool">Bool</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> @@ -88,21 +92,19 @@ <tbody> <tr> <td>400</td> -<td>INVITE_HASH_EMPTY</td> -<td>The invite hash is empty.</td> +<td>CODE_HASH_INVALID</td> +<td>Code hash invalid.</td> </tr> <tr> <td>400</td> -<td>INVITE_HASH_EXPIRED</td> -<td>The invite link has expired.</td> -</tr> -<tr> -<td>400</td> -<td>INVITE_HASH_INVALID</td> -<td>The invite hash is invalid.</td> +<td>PHONE_CODE_EMPTY</td> +<td>phone_code is missing.</td> </tr> </tbody> -</table></div> +</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="#account-deletion" id="account-deletion" name="account-deletion"><i class="anchor-icon"></i></a><a href="/api/account-deletion">Account deletion</a></h4> +<p>How to reset an account if the 2FA password was forgotten.</p></div> </div> diff --git a/data/core.telegram.org/method/account.createTheme b/data/core.telegram.org/method/account.createTheme new file mode 100644 index 0000000000..80dbc9c1da --- /dev/null +++ b/data/core.telegram.org/method/account.createTheme @@ -0,0 +1,186 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.createTheme</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Create a theme"> + <meta property="og:title" content="account.createTheme"> + <meta property="og:image" content=""> + <meta property="og:description" content="Create a theme"> + <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?215" 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/account.createTheme" >account.createTheme</a></li></ul></div> + <h1 id="dev_page_title">account.createTheme</h1> + + <div id="dev_page_content"><p>Create a theme</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/theme" >theme</a>#e802b8dc flags:<a href="/type/%23" >#</a> creator:flags.0?true default:flags.1?true for_chat:flags.5?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> slug:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> document:flags.2?<a href="/type/Document" >Document</a> settings:flags.3?<a href="/type/ThemeSettings" >ThemeSettings</a> installs_count:flags.4?<a href="/type/int" >int</a> = <a href="/type/Theme" >Theme</a>; +---functions--- +<a href="/method/account.createTheme" class="current_page_link" >account.createTheme</a>#8432c21f flags:<a href="/type/%23" >#</a> slug:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> document:flags.2?<a href="/type/InputDocument" >InputDocument</a> settings:flags.3?<a href="/type/InputThemeSettings" >InputThemeSettings</a> = <a href="/type/Theme" >Theme</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>slug</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Unique theme ID</td> +</tr> +<tr> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Theme name</td> +</tr> +<tr> +<td><strong>document</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/InputDocument">InputDocument</a></td> +<td>Theme file</td> +</tr> +<tr> +<td><strong>settings</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/InputThemeSettings">InputThemeSettings</a></td> +<td>Theme settings</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/Theme">Theme</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>THEME_MIME_INVALID</td> +<td>The theme's MIME type 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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/account.deleteAccount b/data/core.telegram.org/method/account.deleteAccount new file mode 100644 index 0000000000..24f85058e8 --- /dev/null +++ b/data/core.telegram.org/method/account.deleteAccount @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.deleteAccount</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the 2FA password and no recovery method is configured."> + <meta property="og:title" content="account.deleteAccount"> + <meta property="og:image" content=""> + <meta property="og:description" content="Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the 2FA password and no recovery method is configured."> + <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?215" 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/account.deleteAccount" >account.deleteAccount</a></li></ul></div> + <h1 id="dev_page_title">account.deleteAccount</h1> + + <div id="dev_page_content"><p>Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the <a href="/api/srp">2FA password and no recovery method is configured</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/account.deleteAccount" class="current_page_link" >account.deleteAccount</a>#418d4e0b reason:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</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>reason</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Why is the account being deleted, can be empty</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/Bool">Bool</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>420</td> +<td>2FA_CONFIRM_WAIT_X</td> +<td>Since this account is active and protected by a 2FA password, we will delete it in 1 week for security purposes. You can cancel this process at any time, you'll be able to reset your account in X seconds.</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/auth.logOut b/data/core.telegram.org/method/account.getAuthorizations similarity index 88% rename from data/core.telegram.org/method/auth.logOut rename to data/core.telegram.org/method/account.getAuthorizations index a76fb07834..68575508d2 100644 --- a/data/core.telegram.org/method/auth.logOut +++ b/data/core.telegram.org/method/account.getAuthorizations @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>auth.logOut</title> + <title>account.getAuthorizations</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Logs out the user."> - <meta property="og:title" content="auth.logOut"> + <meta property="description" content="Get logged-in sessions"> + <meta property="og:title" content="account.getAuthorizations"> <meta property="og:image" content=""> - <meta property="og:description" content="Logs out the user."> + <meta property="og:description" content="Get logged-in sessions"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/auth.logOut" >auth.logOut</a></li></ul></div> - <h1 id="dev_page_title">auth.logOut</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/account.getAuthorizations" >account.getAuthorizations</a></li></ul></div> + <h1 id="dev_page_title">account.getAuthorizations</h1> - <div id="dev_page_content"><p>Logs out the user.</p> + <div id="dev_page_content"><p>Get logged-in sessions</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,19 +52,13 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; -<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +<pre class="page_scheme"><code><a href="/constructor/account.authorizations" >account.authorizations</a>#1250abde authorizations:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Authorization" >Authorization</a>> = <a href="/type/account.Authorizations" >account.Authorizations</a>; ---functions--- -<a href="/method/auth.logOut" class="current_page_link" >auth.logOut</a>#5717da40 = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/account.getAuthorizations" class="current_page_link" >account.getAuthorizations</a>#e320c158 = <a href="/type/account.Authorizations" >account.Authorizations</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> -<p><a href="/type/Bool">Bool</a></p> -<h3><a class="anchor" href="#query-example" id="query-example" name="query-example"><i class="anchor-icon"></i></a>Query example</h3> -<pre><code>(auth.logOut ) -= -(boolTrue)</code></pre> -<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> +<p><a href="/type/account.Authorizations">account.Authorizations</a></p></div> </div> diff --git a/data/corefork.telegram.org/method/account.getChatThemes b/data/core.telegram.org/method/account.getChatThemes similarity index 98% rename from data/corefork.telegram.org/method/account.getChatThemes rename to data/core.telegram.org/method/account.getChatThemes index 6ccb5c362c..a5d227a10c 100644 --- a/data/corefork.telegram.org/method/account.getChatThemes +++ b/data/core.telegram.org/method/account.getChatThemes @@ -116,9 +116,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -135,7 +135,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/method/account.resetWallPapers b/data/core.telegram.org/method/account.getContactSignUpNotification similarity index 91% rename from data/core.telegram.org/method/account.resetWallPapers rename to data/core.telegram.org/method/account.getContactSignUpNotification index 84dd2f2685..b97b7bfed7 100644 --- a/data/core.telegram.org/method/account.resetWallPapers +++ b/data/core.telegram.org/method/account.getContactSignUpNotification @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>account.resetWallPapers</title> + <title>account.getContactSignUpNotification</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Delete installed wallpapers"> - <meta property="og:title" content="account.resetWallPapers"> + <meta property="description" content="Whether the user will receive notifications when contacts sign up"> + <meta property="og:title" content="account.getContactSignUpNotification"> <meta property="og:image" content=""> - <meta property="og:description" content="Delete installed wallpapers"> + <meta property="og:description" content="Whether the user will receive notifications when contacts sign up"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/account.resetWallPapers" >account.resetWallPapers</a></li></ul></div> - <h1 id="dev_page_title">account.resetWallPapers</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/account.getContactSignUpNotification" >account.getContactSignUpNotification</a></li></ul></div> + <h1 id="dev_page_title">account.getContactSignUpNotification</h1> - <div id="dev_page_content"><p>Delete installed wallpapers</p> + <div id="dev_page_content"><p>Whether the user will receive notifications when contacts sign up</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -55,7 +55,7 @@ <pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; <a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/account.resetWallPapers" class="current_page_link" >account.resetWallPapers</a>#bb3b9804 = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/account.getContactSignUpNotification" class="current_page_link" >account.getContactSignUpNotification</a>#9f07c728 = <a href="/type/Bool" >Bool</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> diff --git a/data/core.telegram.org/method/account.getNotifySettings b/data/core.telegram.org/method/account.getTheme similarity index 82% rename from data/core.telegram.org/method/account.getNotifySettings rename to data/core.telegram.org/method/account.getTheme index a2b9a21f7f..3dc7e0300c 100644 --- a/data/core.telegram.org/method/account.getNotifySettings +++ b/data/core.telegram.org/method/account.getTheme @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>account.getNotifySettings</title> + <title>account.getTheme</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Gets current notification settings for a given user/group, from all users/all groups."> - <meta property="og:title" content="account.getNotifySettings"> + <meta property="description" content="Get theme information"> + <meta property="og:title" content="account.getTheme"> <meta property="og:image" content=""> - <meta property="og:description" content="Gets current notification settings for a given user/group, from all users/all groups."> + <meta property="og:description" content="Get theme information"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/account.getNotifySettings" >account.getNotifySettings</a></li></ul></div> - <h1 id="dev_page_title">account.getNotifySettings</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/account.getTheme" >account.getTheme</a></li></ul></div> + <h1 id="dev_page_title">account.getTheme</h1> - <div id="dev_page_content"><p>Gets current notification settings for a given user/group, from all users/all groups.</p> + <div id="dev_page_content"><p>Get theme information</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,9 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/peerNotifySettings" >peerNotifySettings</a>#af509d20 flags:<a href="/type/%23" >#</a> show_previews:flags.0?<a href="/type/Bool" >Bool</a> silent:flags.1?<a href="/type/Bool" >Bool</a> mute_until:flags.2?<a href="/type/int" >int</a> sound:flags.3?<a href="/type/string" >string</a> = <a href="/type/PeerNotifySettings" >PeerNotifySettings</a>; +<pre class="page_scheme"><code><a href="/constructor/theme" >theme</a>#e802b8dc flags:<a href="/type/%23" >#</a> creator:flags.0?true default:flags.1?true for_chat:flags.5?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> slug:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> document:flags.2?<a href="/type/Document" >Document</a> settings:flags.3?<a href="/type/ThemeSettings" >ThemeSettings</a> installs_count:flags.4?<a href="/type/int" >int</a> = <a href="/type/Theme" >Theme</a>; ---functions--- -<a href="/method/account.getNotifySettings" class="current_page_link" >account.getNotifySettings</a>#12b3ad31 peer:<a href="/type/InputNotifyPeer" >InputNotifyPeer</a> = <a href="/type/PeerNotifySettings" >PeerNotifySettings</a>;</code></pre></p> +<a href="/method/account.getTheme" class="current_page_link" >account.getTheme</a>#8d9d742b format:<a href="/type/string" >string</a> theme:<a href="/type/InputTheme" >InputTheme</a> document_id:<a href="/type/long" >long</a> = <a href="/type/Theme" >Theme</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> @@ -66,14 +66,24 @@ </thead> <tbody> <tr> -<td><strong>peer</strong></td> -<td style="text-align: center;"><a href="/type/InputNotifyPeer">InputNotifyPeer</a></td> -<td>Notification source</td> +<td><strong>format</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Theme format, a string that identifies the theming engines supported by the client</td> +</tr> +<tr> +<td><strong>theme</strong></td> +<td style="text-align: center;"><a href="/type/InputTheme">InputTheme</a></td> +<td>Theme</td> +</tr> +<tr> +<td><strong>document_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Document ID</td> </tr> </tbody> </table> <h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> -<p>Returns a <a href="/type/PeerNotifySettings">PeerNotifySettings</a> object containing current notification settings.</p> +<p><a href="/type/Theme">Theme</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> @@ -86,8 +96,13 @@ <tbody> <tr> <td>400</td> -<td>PEER_ID_INVALID</td> -<td>The provided peer id is invalid.</td> +<td>THEME_FORMAT_INVALID</td> +<td>Invalid theme format provided.</td> +</tr> +<tr> +<td>400</td> +<td>THEME_INVALID</td> +<td>Invalid theme provided.</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/method/account.sendConfirmPhoneCode b/data/core.telegram.org/method/account.sendConfirmPhoneCode new file mode 100644 index 0000000000..5f0a68690e --- /dev/null +++ b/data/core.telegram.org/method/account.sendConfirmPhoneCode @@ -0,0 +1,174 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.sendConfirmPhoneCode</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Send confirmation code to cancel account deletion, for more info click here »"> + <meta property="og:title" content="account.sendConfirmPhoneCode"> + <meta property="og:image" content=""> + <meta property="og:description" content="Send confirmation code to cancel account deletion, for more info click here »"> + <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?215" 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/account.sendConfirmPhoneCode" >account.sendConfirmPhoneCode</a></li></ul></div> + <h1 id="dev_page_title">account.sendConfirmPhoneCode</h1> + + <div id="dev_page_content"><p>Send confirmation code to cancel account deletion, for more info <a href="/api/account-deletion">click here »</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.sentCode" >auth.sentCode</a>#5e002502 flags:<a href="/type/%23" >#</a> type:<a href="/type/auth.SentCodeType" >auth.SentCodeType</a> phone_code_hash:<a href="/type/string" >string</a> next_type:flags.1?<a href="/type/auth.CodeType" >auth.CodeType</a> timeout:flags.2?<a href="/type/int" >int</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>; +---functions--- +<a href="/method/account.sendConfirmPhoneCode" class="current_page_link" >account.sendConfirmPhoneCode</a>#1b3faa88 hash:<a href="/type/string" >string</a> settings:<a href="/type/CodeSettings" >CodeSettings</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>;</code></pre></p> +<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th style="text-align: center;">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>hash</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The hash from the service notification, for more info <a href="/api/account-deletion">click here »</a></td> +</tr> +<tr> +<td><strong>settings</strong></td> +<td style="text-align: center;"><a href="/type/CodeSettings">CodeSettings</a></td> +<td>Phone code settings</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/auth.SentCode">auth.SentCode</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>HASH_INVALID</td> +<td>The provided hash 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="#account-deletion" id="account-deletion" name="account-deletion"><i class="anchor-icon"></i></a><a href="/api/account-deletion">Account deletion</a></h4> +<p>How to reset an account if the 2FA password was forgotten.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/account.saveAutoDownloadSettings b/data/core.telegram.org/method/account.setContentSettings similarity index 86% rename from data/core.telegram.org/method/account.saveAutoDownloadSettings rename to data/core.telegram.org/method/account.setContentSettings index 903b872174..f043bdcdaf 100644 --- a/data/core.telegram.org/method/account.saveAutoDownloadSettings +++ b/data/core.telegram.org/method/account.setContentSettings @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>account.saveAutoDownloadSettings</title> + <title>account.setContentSettings</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Change media autodownload settings"> - <meta property="og:title" content="account.saveAutoDownloadSettings"> + <meta property="description" content="Set sensitive content settings (for viewing or hiding NSFW content)"> + <meta property="og:title" content="account.setContentSettings"> <meta property="og:image" content=""> - <meta property="og:description" content="Change media autodownload settings"> + <meta property="og:description" content="Set sensitive content settings (for viewing or hiding NSFW content)"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/account.saveAutoDownloadSettings" >account.saveAutoDownloadSettings</a></li></ul></div> - <h1 id="dev_page_title">account.saveAutoDownloadSettings</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/account.setContentSettings" >account.setContentSettings</a></li></ul></div> + <h1 id="dev_page_title">account.setContentSettings</h1> - <div id="dev_page_content"><p>Change media autodownload settings</p> + <div id="dev_page_content"><p>Set sensitive content settings (for viewing or hiding NSFW content)</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -55,7 +55,7 @@ <pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; <a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/account.saveAutoDownloadSettings" class="current_page_link" >account.saveAutoDownloadSettings</a>#76f36233 flags:<a href="/type/%23" >#</a> low:flags.0?true high:flags.1?true settings:<a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/account.setContentSettings" class="current_page_link" >account.setContentSettings</a>#b574b16b flags:<a href="/type/%23" >#</a> sensitive_enabled:flags.0?true = <a href="/type/Bool" >Bool</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> @@ -72,24 +72,31 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>low</strong></td> +<td><strong>sensitive_enabled</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 to save settings in the low data usage preset</td> -</tr> -<tr> -<td><strong>high</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>Whether to save settings in the high data usage preset</td> -</tr> -<tr> -<td><strong>settings</strong></td> -<td style="text-align: center;"><a href="/type/AutoDownloadSettings">AutoDownloadSettings</a></td> -<td>Media autodownload settings</td> +<td>Enable NSFW content</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/Bool">Bool</a></p></div> +<p><a href="/type/Bool">Bool</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>403</td> +<td>SENSITIVE_CHANGE_FORBIDDEN</td> +<td>You can't change your sensitive content settings.</td> +</tr> +</tbody> +</table></div> </div> diff --git a/data/core.telegram.org/method/account.verifyPhone b/data/core.telegram.org/method/account.verifyPhone new file mode 100644 index 0000000000..e2c406a197 --- /dev/null +++ b/data/core.telegram.org/method/account.verifyPhone @@ -0,0 +1,191 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.verifyPhone</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Verify a phone number for telegram passport."> + <meta property="og:title" content="account.verifyPhone"> + <meta property="og:image" content=""> + <meta property="og:description" content="Verify a phone number for telegram passport."> + <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?215" 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/account.verifyPhone" >account.verifyPhone</a></li></ul></div> + <h1 id="dev_page_title">account.verifyPhone</h1> + + <div id="dev_page_content"><p>Verify a phone number for telegram <a href="/passport">passport</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/account.verifyPhone" class="current_page_link" >account.verifyPhone</a>#4dd3a7f6 phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> phone_code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</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>phone_number</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Phone number</td> +</tr> +<tr> +<td><strong>phone_code_hash</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Phone code hash received from the call to <a href="/method/account.sendVerifyPhoneCode">account.sendVerifyPhoneCode</a></td> +</tr> +<tr> +<td><strong>phone_code</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Code received after the call to <a href="/method/account.sendVerifyPhoneCode">account.sendVerifyPhoneCode</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/Bool">Bool</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>PHONE_CODE_EMPTY</td> +<td>phone_code is missing.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_CODE_EXPIRED</td> +<td>The phone code you provided has expired, this may happen if it was sent to any chat on telegram (if the code is sent through a telegram chat (not the official account) to avoid it append or prepend to the code some chars).</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_NUMBER_INVALID</td> +<td>The phone number 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="#accountsendverifyphonecode" id="accountsendverifyphonecode" name="accountsendverifyphonecode"><i class="anchor-icon"></i></a><a href="/method/account.sendVerifyPhoneCode">account.sendVerifyPhoneCode</a></h4> +<p>Send the verification phone code for telegram <a href="/passport">passport</a>.</p> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/auth.bindTempAuthKey b/data/core.telegram.org/method/auth.bindTempAuthKey deleted file mode 100644 index 031bd715ed..0000000000 --- a/data/core.telegram.org/method/auth.bindTempAuthKey +++ /dev/null @@ -1,252 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>auth.bindTempAuthKey</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Binds a temporary authorization key temp_auth_key_id to the permanent authorization key perm_auth_key_id. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one."> - <meta property="og:title" content="auth.bindTempAuthKey"> - <meta property="og:image" content=""> - <meta property="og:description" content="Binds a temporary authorization key temp_auth_key_id to the permanent authorization key perm_auth_key_id. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one."> - <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?215" 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/auth.bindTempAuthKey" >auth.bindTempAuthKey</a></li></ul></div> - <h1 id="dev_page_title">auth.bindTempAuthKey</h1> - - <div id="dev_page_content"><p>Binds a temporary authorization key <code>temp_auth_key_id</code> to the permanent authorization key <code>perm_auth_key_id</code>. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one.</p> -<p>For more information, see <a href="/api/pfs">Perfect Forward Secrecy</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; -<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ----functions--- -<a href="/method/auth.bindTempAuthKey" class="current_page_link" >auth.bindTempAuthKey</a>#cdd42a05 perm_auth_key_id:<a href="/type/long" >long</a> nonce:<a href="/type/long" >long</a> expires_at:<a href="/type/int" >int</a> encrypted_message:<a href="/type/bytes" >bytes</a> = <a href="/type/Bool" >Bool</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>perm_auth_key_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Permanent auth_key_id to bind to</td> -</tr> -<tr> -<td><strong>nonce</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Random long from <a href="#binding-message-contents">Binding message contents</a></td> -</tr> -<tr> -<td><strong>expires_at</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Unix timestamp to invalidate temporary key, see <a href="#binding-message-contents">Binding message contents</a></td> -</tr> -<tr> -<td><strong>encrypted_message</strong></td> -<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> -<td>See <a href="#generating-encrypted-message">Generating encrypted_message</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/Bool">Bool</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>ENCRYPTED_MESSAGE_INVALID</td> -<td>Encrypted message is incorrect.</td> -</tr> -<tr> -<td>400</td> -<td>TEMP_AUTH_KEY_ALREADY_BOUND</td> -<td>The passed temporary key is already bound to another <strong>perm_auth_key_id</strong>.</td> -</tr> -<tr> -<td>400</td> -<td>TEMP_AUTH_KEY_EMPTY</td> -<td>The request was not performed with a temporary authorization key.</td> -</tr> -</tbody> -</table> -<h3><a class="anchor" href="#generating-encrypted-message" id="generating-encrypted-message" name="generating-encrypted-message"><i class="anchor-icon"></i></a>Generating encrypted_message</h3> -<p>The client begins by creating a special binding message:</p> -<h3><a class="anchor" href="#binding-message-contents" id="binding-message-contents" name="binding-message-contents"><i class="anchor-icon"></i></a>Binding message contents</h3> -<pre><code>bind_auth_key_inner#75a3f765 nonce:long temp_auth_key_id:long perm_auth_key_id:long temp_session_id:long expires_at:int = BindAuthKeyInner;</code></pre> -<table class="table"> -<thead> -<tr> -<th></th> -<th></th> -<th></th> -</tr> -</thead> -<tbody> -<tr> -<td><strong>nonce</strong></td> -<td><a href="/type/long">long</a></td> -<td>Random long</td> -</tr> -<tr> -<td><strong>temp_auth_key_id</strong></td> -<td><a href="/type/long">long</a></td> -<td>Temporary auth_key_id</td> -</tr> -<tr> -<td><strong>perm_auth_key_id</strong></td> -<td><a href="/type/long">long</a></td> -<td>Permanent auth_key_id to bind to</td> -</tr> -<tr> -<td><strong>temp_session_id</strong></td> -<td><a href="/type/long">long</a></td> -<td>Session id, which will be used to invoke <strong>auth.bindTempAuthKey</strong> method</td> -</tr> -<tr> -<td><strong>expires_at</strong></td> -<td><a href="/type/int">int</a></td> -<td>Unix timestamp to invalidate temporary key</td> -</tr> -</tbody> -</table> -<h3><a class="anchor" href="#encrypting-the-binding-message" id="encrypting-the-binding-message" name="encrypting-the-binding-message"><i class="anchor-icon"></i></a>Encrypting the binding message</h3> -<p>This binding message is encrypted in <a href="/mtproto/description">the usual way, but with MTProto v1</a> using the <code>perm_auth_key</code>. In other words, one has to prepend <code>random:int128</code> (it replaces the customary <code>session_id:long</code> and <code>salt:long</code> that are irrelevant in this case), then append the same <code>msg_id</code> that will be used for the request, a <code>seqno</code> equal to zero, and the correct <code>msg_len</code> (40 bytes in this case); after that, one computes the <code>msg_key:int128</code> as SHA1 of the resulting string, appends padding necessary for a 16-byte alignment, encrypts the resulting string using the key derived from <code>perm_auth_key</code> and <code>msg_key</code>, and prepends <code>perm_auth_key_id</code> and <code>msg_key</code> to the encrypted data as usual.</p> -<h3><a class="anchor" href="#binding" id="binding" name="binding"><i class="anchor-icon"></i></a>Binding</h3> -<p>Once <strong>encrypted_message</strong> is ready, an <strong>auth.bindTempAuthKey</strong> request is sent to the server using <code>temp_auth_key</code> and <code>temp_session_id</code>. Don't forget to <a href="/api/invoking#saving-client-info">rewrite client info</a> using <a href="/method/initConnection">initConnection</a> when the binding is completed.</p> -<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> -<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="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a><a href="/api/pfs">Perfect Forward Secrecy</a></h4> -<p>Binding temporary authorization key to permanent ones.</p> -<h4><a class="anchor" href="#long" id="long" name="long"><i class="anchor-icon"></i></a><a href="/type/long">long</a></h4> -<p>A basic bare type, elements of which correspond to two-element sequences, representing 64-bit signed numbers (little-endian).</p> -<p><a href="/mtproto/serialize">More on basic types »</a></p> -<h4><a class="anchor" href="#int" id="int" name="int"><i class="anchor-icon"></i></a><a href="/type/int">int</a></h4> -<p>A basic bare type, the values of which correspond to single-element sequences, i.e. numbers from -2^31 to 2^31-1 which in this case represent themselves.</p> -<p><a href="/mtproto/serialize">More on basic types »</a></p> -<h4><a class="anchor" href="#mobile-protocol-detailed-description" id="mobile-protocol-detailed-description" name="mobile-protocol-detailed-description"><i class="anchor-icon"></i></a><a href="/mtproto/description">Mobile Protocol: Detailed Description</a></h4> -<h4><a class="anchor" href="#calling-api-methods" id="calling-api-methods" name="calling-api-methods"><i class="anchor-icon"></i></a><a href="/api/invoking">Calling API Methods</a></h4> -<p>Additional options for calling methods.</p> -<h4><a class="anchor" href="#initconnection" id="initconnection" name="initconnection"><i class="anchor-icon"></i></a><a href="/method/initConnection">initConnection</a></h4> -<p>Initialize connection</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/core.telegram.org/method/channels.readHistory b/data/core.telegram.org/method/auth.cancelCode similarity index 85% rename from data/core.telegram.org/method/channels.readHistory rename to data/core.telegram.org/method/auth.cancelCode index 14f36f5ae6..3d60859149 100644 --- a/data/core.telegram.org/method/channels.readHistory +++ b/data/core.telegram.org/method/auth.cancelCode @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>channels.readHistory</title> + <title>auth.cancelCode</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Mark channel/supergroup history as read"> - <meta property="og:title" content="channels.readHistory"> + <meta property="description" content="Cancel the login verification code"> + <meta property="og:title" content="auth.cancelCode"> <meta property="og:image" content=""> - <meta property="og:description" content="Mark channel/supergroup history as read"> + <meta property="og:description" content="Cancel the login verification code"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/channels.readHistory" >channels.readHistory</a></li></ul></div> - <h1 id="dev_page_title">channels.readHistory</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/auth.cancelCode" >auth.cancelCode</a></li></ul></div> + <h1 id="dev_page_title">auth.cancelCode</h1> - <div id="dev_page_content"><p>Mark <a href="/api/channel">channel/supergroup</a> history as read</p> + <div id="dev_page_content"><p>Cancel the login verification code</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -55,7 +55,7 @@ <pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; <a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/channels.readHistory" class="current_page_link" >channels.readHistory</a>#cc104937 channel:<a href="/type/InputChannel" >InputChannel</a> max_id:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/auth.cancelCode" class="current_page_link" >auth.cancelCode</a>#1f040578 phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</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> @@ -67,14 +67,14 @@ </thead> <tbody> <tr> -<td><strong>channel</strong></td> -<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> -<td><a href="/api/channel">Channel/supergroup</a></td> +<td><strong>phone_number</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Phone number</td> </tr> <tr> -<td><strong>max_id</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>ID of message up to which messages should be marked as read</td> +<td><strong>phone_code_hash</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Phone code hash from <a href="/method/auth.sendCode">auth.sendCode</a></td> </tr> </tbody> </table> @@ -92,24 +92,19 @@ <tbody> <tr> <td>400</td> -<td>CHANNEL_INVALID</td> -<td>The provided channel is invalid.</td> +<td>PHONE_CODE_EXPIRED</td> +<td>The phone code you provided has expired, this may happen if it was sent to any chat on telegram (if the code is sent through a telegram chat (not the official account) to avoid it append or prepend to the code some chars).</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> +<td>PHONE_NUMBER_INVALID</td> +<td>The phone number 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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> -<p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> +<h4><a class="anchor" href="#authsendcode" id="authsendcode" name="authsendcode"><i class="anchor-icon"></i></a><a href="/method/auth.sendCode">auth.sendCode</a></h4> +<p>Send the verification code for login</p></div> </div> diff --git a/data/corefork.telegram.org/method/auth.sendCode b/data/core.telegram.org/method/auth.resendCode similarity index 77% rename from data/corefork.telegram.org/method/auth.sendCode rename to data/core.telegram.org/method/auth.resendCode index f72314fbad..852b07fb87 100644 --- a/data/corefork.telegram.org/method/auth.sendCode +++ b/data/core.telegram.org/method/auth.resendCode @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>auth.sendCode</title> + <title>auth.resendCode</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Send the verification code for login"> - <meta property="og:title" content="auth.sendCode"> + <meta property="description" content="Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see login for more info."> + <meta property="og:title" content="auth.resendCode"> <meta property="og:image" content=""> - <meta property="og:description" content="Send the verification code for login"> + <meta property="og:description" content="Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see login for more info."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/auth.sendCode" >auth.sendCode</a></li></ul></div> - <h1 id="dev_page_title">auth.sendCode</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/auth.resendCode" >auth.resendCode</a></li></ul></div> + <h1 id="dev_page_title">auth.resendCode</h1> - <div id="dev_page_content"><p>Send the verification code for login</p> + <div id="dev_page_content"><p>Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see <a href="/api/auth">login</a> for more info.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -54,7 +54,7 @@ </div> <pre class="page_scheme"><code><a href="/constructor/auth.sentCode" >auth.sentCode</a>#5e002502 flags:<a href="/type/%23" >#</a> type:<a href="/type/auth.SentCodeType" >auth.SentCodeType</a> phone_code_hash:<a href="/type/string" >string</a> next_type:flags.1?<a href="/type/auth.CodeType" >auth.CodeType</a> timeout:flags.2?<a href="/type/int" >int</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>; ---functions--- -<a href="/method/auth.sendCode" class="current_page_link" >auth.sendCode</a>#a677244f phone_number:<a href="/type/string" >string</a> api_id:<a href="/type/int" >int</a> api_hash:<a href="/type/string" >string</a> settings:<a href="/type/CodeSettings" >CodeSettings</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>;</code></pre></p> +<a href="/method/auth.resendCode" class="current_page_link" >auth.resendCode</a>#3ef1a9bf phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> = <a href="/type/auth.SentCode" >auth.SentCode</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> @@ -68,27 +68,17 @@ <tr> <td><strong>phone_number</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Phone number in international format</td> +<td>The phone number</td> </tr> <tr> -<td><strong>api_id</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Application identifier (see <a href="/myapp">App configuration</a>)</td> -</tr> -<tr> -<td><strong>api_hash</strong></td> +<td><strong>phone_code_hash</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Application secret hash (see <a href="/myapp">App configuration</a>)</td> -</tr> -<tr> -<td><strong>settings</strong></td> -<td style="text-align: center;"><a href="/type/CodeSettings">CodeSettings</a></td> -<td>Settings for the code type to send</td> +<td>The phone code hash obtained from <a href="/method/auth.sendCode">auth.sendCode</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> -<p>The method returns an <a href="/type/auth.SentCode">auth.SentCode</a> object with information on the message sent.</p> +<p><a href="/type/auth.SentCode">auth.SentCode</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> @@ -101,66 +91,31 @@ <tbody> <tr> <td>400</td> -<td>API_ID_INVALID</td> -<td>API ID invalid.</td> +<td>PHONE_CODE_EXPIRED</td> +<td>The phone code you provided has expired, this may happen if it was sent to any chat on telegram (if the code is sent through a telegram chat (not the official account) to avoid it append or prepend to the code some chars).</td> </tr> <tr> <td>400</td> -<td>API_ID_PUBLISHED_FLOOD</td> -<td>This API id was published somewhere, you can't use it now.</td> -</tr> -<tr> -<td>401</td> -<td>AUTH_KEY_PERM_EMPTY</td> -<td>The temporary auth key must be binded to the permanent auth key to use these methods.</td> -</tr> -<tr> -<td>303</td> -<td>NETWORK_MIGRATE_X</td> -<td>Repeat the query to data-center X.</td> -</tr> -<tr> -<td>303</td> -<td>PHONE_MIGRATE_X</td> -<td>Repeat the query to data-center X.</td> -</tr> -<tr> -<td>400</td> -<td>PHONE_NUMBER_APP_SIGNUP_FORBIDDEN</td> -<td>You can't sign up using this app.</td> -</tr> -<tr> -<td>400</td> -<td>PHONE_NUMBER_BANNED</td> -<td>The provided phone number is banned from telegram.</td> -</tr> -<tr> -<td>400</td> -<td>PHONE_NUMBER_FLOOD</td> -<td>You asked for the code too many times.</td> +<td>PHONE_CODE_HASH_EMPTY</td> +<td>phone_code_hash is missing.</td> </tr> <tr> <td>400</td> <td>PHONE_NUMBER_INVALID</td> -<td>Invalid phone number.</td> +<td>The phone number is invalid.</td> </tr> <tr> <td>406</td> -<td>PHONE_PASSWORD_FLOOD</td> -<td>You have tried logging in too many times.</td> -</tr> -<tr> -<td>400</td> -<td>PHONE_PASSWORD_PROTECTED</td> -<td>This phone is password protected.</td> -</tr> -<tr> -<td>400</td> -<td>SMS_CODE_CREATE_FAILED</td> -<td>An error occurred while creating the SMS code.</td> +<td>SEND_CODE_UNAVAILABLE</td> +<td>Returned when all available options for this type of number were already used (e.g. flash-call, then SMS, then this error might be returned to trigger a second resend).</td> </tr> </tbody> -</table></div> +</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="#authsendcode" id="authsendcode" name="authsendcode"><i class="anchor-icon"></i></a><a href="/method/auth.sendCode">auth.sendCode</a></h4> +<p>Send the verification code for login</p> +<h4><a class="anchor" href="#user-authorization" id="user-authorization" name="user-authorization"><i class="anchor-icon"></i></a><a href="/api/auth">User Authorization</a></h4> +<p>How to register a user's phone to start using the API.</p></div> </div> @@ -199,9 +154,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -218,7 +173,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/method/bots.getBotCommands b/data/core.telegram.org/method/bots.getBotCommands new file mode 100644 index 0000000000..0a19b0ad91 --- /dev/null +++ b/data/core.telegram.org/method/bots.getBotCommands @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>bots.getBotCommands</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Obtain a list of bot commands for the specified bot scope and language code"> + <meta property="og:title" content="bots.getBotCommands"> + <meta property="og:image" content=""> + <meta property="og:description" content="Obtain a list of bot commands for the specified bot scope and language code"> + <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?215" 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/bots.getBotCommands" >bots.getBotCommands</a></li></ul></div> + <h1 id="dev_page_title">bots.getBotCommands</h1> + + <div id="dev_page_content"><p>Obtain a list of bot commands for the specified bot scope and language 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code>---functions--- +<a href="/method/bots.getBotCommands" class="current_page_link" >bots.getBotCommands</a>#e34c0dd6 scope:<a href="/type/BotCommandScope" >BotCommandScope</a> lang_code:<a href="/type/string" >string</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/BotCommand" >BotCommand</a>>;</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>scope</strong></td> +<td style="text-align: center;"><a href="/type/BotCommandScope">BotCommandScope</a></td> +<td>Command scope</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> +</tbody> +</table> +<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/Vector%20t">Vector</a><<a href="/type/BotCommand">BotCommand</a>></p> +<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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.getHistory b/data/core.telegram.org/method/channels.getMessages similarity index 78% rename from data/core.telegram.org/method/messages.getHistory rename to data/core.telegram.org/method/channels.getMessages index 6636a694f7..74c1e497d2 100644 --- a/data/core.telegram.org/method/messages.getHistory +++ b/data/core.telegram.org/method/channels.getMessages @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.getHistory</title> + <title>channels.getMessages</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Gets back the conversation history with one interlocutor / within a chat"> - <meta property="og:title" content="messages.getHistory"> + <meta property="description" content="Get channel/supergroup messages"> + <meta property="og:title" content="channels.getMessages"> <meta property="og:image" content=""> - <meta property="og:description" content="Gets back the conversation history with one interlocutor / within a chat"> + <meta property="og:description" content="Get channel/supergroup messages"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.getHistory" >messages.getHistory</a></li></ul></div> - <h1 id="dev_page_title">messages.getHistory</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/channels.getMessages" >channels.getMessages</a></li></ul></div> + <h1 id="dev_page_title">channels.getMessages</h1> - <div id="dev_page_content"><p>Gets back the conversation history with one interlocutor / within a chat</p> + <div id="dev_page_content"><p>Get <a href="/api/channel">channel/supergroup</a> messages</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -57,7 +57,7 @@ <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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <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.getHistory" class="current_page_link" >messages.getHistory</a>#4423e6c5 peer:<a href="/type/InputPeer" >InputPeer</a> offset_id:<a href="/type/int" >int</a> offset_date:<a href="/type/int" >int</a> add_offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> max_id:<a href="/type/int" >int</a> min_id:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" >messages.Messages</a>;</code></pre></p> +<a href="/method/channels.getMessages" class="current_page_link" >channels.getMessages</a>#ad8c9a23 channel:<a href="/type/InputChannel" >InputChannel</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputMessage" >InputMessage</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> @@ -69,44 +69,14 @@ </thead> <tbody> <tr> -<td><strong>peer</strong></td> -<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td>Target peer</td> +<td><strong>channel</strong></td> +<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> +<td>Channel/supergroup</td> </tr> <tr> -<td><strong>offset_id</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Only return messages starting from the specified message ID</td> -</tr> -<tr> -<td><strong>offset_date</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Only return messages sent before the specified date</td> -</tr> -<tr> -<td><strong>add_offset</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of list elements to be skipped, negative values are also accepted.</td> -</tr> -<tr> -<td><strong>limit</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of results to return</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 IDs less than <strong>max_id</strong></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 IDs more than <strong>min_id</strong></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">Result hash</a></td> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/InputMessage">InputMessage</a>></td> +<td>IDs of messages to get</td> </tr> </tbody> </table> @@ -123,11 +93,6 @@ </thead> <tbody> <tr> -<td>401</td> -<td>AUTH_KEY_PERM_EMPTY</td> -<td>The temporary auth key must be binded to the permanent auth key to use these methods.</td> -</tr> -<tr> <td>400</td> <td>CHANNEL_INVALID</td> <td>The provided channel is invalid.</td> @@ -139,24 +104,20 @@ </tr> <tr> <td>400</td> -<td>CHAT_ID_INVALID</td> -<td>The provided chat id is invalid.</td> +<td>MESSAGE_IDS_EMPTY</td> +<td>No message ids were provided.</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> +<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> <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> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> </div> diff --git a/data/core.telegram.org/method/channels.deleteUserHistory b/data/core.telegram.org/method/channels.getParticipant similarity index 83% rename from data/core.telegram.org/method/channels.deleteUserHistory rename to data/core.telegram.org/method/channels.getParticipant index fdb085b96d..979a90ca5a 100644 --- a/data/core.telegram.org/method/channels.deleteUserHistory +++ b/data/core.telegram.org/method/channels.getParticipant @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>channels.deleteUserHistory</title> + <title>channels.getParticipant</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Delete all messages sent by a certain user in a supergroup"> - <meta property="og:title" content="channels.deleteUserHistory"> + <meta property="description" content="Get info about a channel/supergroup participant"> + <meta property="og:title" content="channels.getParticipant"> <meta property="og:image" content=""> - <meta property="og:description" content="Delete all messages sent by a certain user in a supergroup"> + <meta property="og:description" content="Get info about a channel/supergroup participant"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/channels.deleteUserHistory" >channels.deleteUserHistory</a></li></ul></div> - <h1 id="dev_page_title">channels.deleteUserHistory</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/channels.getParticipant" >channels.getParticipant</a></li></ul></div> + <h1 id="dev_page_title">channels.getParticipant</h1> - <div id="dev_page_content"><p>Delete all messages sent by a certain user in a <a href="/api/channel">supergroup</a></p> + <div id="dev_page_content"><p>Get info about a <a href="/api/channel">channel/supergroup</a> participant</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,9 @@ </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>; +<pre class="page_scheme"><code><a href="/constructor/channels.channelParticipant" >channels.channelParticipant</a>#dfb80317 participant:<a href="/type/ChannelParticipant" >ChannelParticipant</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/channels.ChannelParticipant" >channels.ChannelParticipant</a>; ---functions--- -<a href="/method/channels.deleteUserHistory" class="current_page_link" >channels.deleteUserHistory</a>#d10dd71b channel:<a href="/type/InputChannel" >InputChannel</a> user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/messages.AffectedHistory" >messages.AffectedHistory</a>;</code></pre></p> +<a href="/method/channels.getParticipant" class="current_page_link" >channels.getParticipant</a>#a0ab6cc6 channel:<a href="/type/InputChannel" >InputChannel</a> participant:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/channels.ChannelParticipant" >channels.ChannelParticipant</a>;</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> @@ -68,17 +68,17 @@ <tr> <td><strong>channel</strong></td> <td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> -<td><a href="/api/channel">Supergroup</a></td> +<td>Channel/supergroup</td> </tr> <tr> -<td><strong>user_id</strong></td> -<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> -<td>User whose messages should be deleted</td> +<td><strong>participant</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>Participant to get info about</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> +<p><a href="/type/channels.ChannelParticipant">channels.ChannelParticipant</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> @@ -105,22 +105,28 @@ <td>You must be an admin in this chat to do this.</td> </tr> <tr> -<td>403</td> -<td>CHAT_WRITE_FORBIDDEN</td> -<td>You can't write in this chat.</td> -</tr> -<tr> <td>400</td> <td>MSG_ID_INVALID</td> <td>Invalid message ID provided.</td> </tr> <tr> <td>400</td> +<td>PARTICIPANT_ID_INVALID</td> +<td>The specified participant ID is invalid.</td> +</tr> +<tr> +<td>400</td> <td>USER_ID_INVALID</td> <td>The provided user ID is invalid.</td> </tr> +<tr> +<td>400</td> +<td>USER_NOT_PARTICIPANT</td> +<td>You're not a member of this supergroup/channel.</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> <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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> <p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> diff --git a/data/core.telegram.org/method/channels.viewSponsoredMessage b/data/core.telegram.org/method/channels.getSponsoredMessages similarity index 85% rename from data/core.telegram.org/method/channels.viewSponsoredMessage rename to data/core.telegram.org/method/channels.getSponsoredMessages index 84a47ad738..ddb1b37570 100644 --- a/data/core.telegram.org/method/channels.viewSponsoredMessage +++ b/data/core.telegram.org/method/channels.getSponsoredMessages @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>channels.viewSponsoredMessage</title> + <title>channels.getSponsoredMessages</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Mark a specific sponsored message as read"> - <meta property="og:title" content="channels.viewSponsoredMessage"> + <meta property="description" content="Get a list of sponsored messages"> + <meta property="og:title" content="channels.getSponsoredMessages"> <meta property="og:image" content=""> - <meta property="og:description" content="Mark a specific sponsored message as read"> + <meta property="og:description" content="Get a list of sponsored messages"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/channels.viewSponsoredMessage" >channels.viewSponsoredMessage</a></li></ul></div> - <h1 id="dev_page_title">channels.viewSponsoredMessage</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/channels.getSponsoredMessages" >channels.getSponsoredMessages</a></li></ul></div> + <h1 id="dev_page_title">channels.getSponsoredMessages</h1> - <div id="dev_page_content"><p>Mark a specific sponsored message as read</p> + <div id="dev_page_content"><p>Get a list of sponsored messages</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,10 +52,9 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; -<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +<pre class="page_scheme"><code><a href="/constructor/messages.sponsoredMessages" >messages.sponsoredMessages</a>#65a4c7d5 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SponsoredMessage" >SponsoredMessage</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.SponsoredMessages" >messages.SponsoredMessages</a>; ---functions--- -<a href="/method/channels.viewSponsoredMessage" class="current_page_link" >channels.viewSponsoredMessage</a>#beaedb94 channel:<a href="/type/InputChannel" >InputChannel</a> random_id:<a href="/type/bytes" >bytes</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/channels.getSponsoredMessages" class="current_page_link" >channels.getSponsoredMessages</a>#ec210fbf channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/messages.SponsoredMessages" >messages.SponsoredMessages</a>;</code></pre></p> <h3><a class="anchor" name="parameters" href="#parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -71,32 +70,10 @@ <td align="center"><a href="/type/InputChannel">InputChannel</a></td> <td>Peer</td> </tr> -<tr> -<td><strong>random_id</strong></td> -<td align="center"><a href="/type/bytes">bytes</a></td> -<td>Message ID</td> -</tr> </tbody> </table> <h3><a class="anchor" name="result" href="#result"><i class="anchor-icon"></i></a>Result</h3> -<p><a href="/type/Bool">Bool</a></p> -<h3><a class="anchor" name="possible-errors" href="#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>UNKNOWN_ERROR</td> -<td>Internal error.</td> -</tr> -</tbody> -</table> +<p><a href="/type/messages.SponsoredMessages">messages.SponsoredMessages</a></p> <hr> <h3><a class="anchor" name="related-pages" href="#related-pages"><i class="anchor-icon"></i></a>Related pages</h3> <h4><a class="anchor" name="sponsored-messages" href="#sponsored-messages"><i class="anchor-icon"></i></a><a href="/api/sponsored-messages">Sponsored messages</a></h4> diff --git a/data/core.telegram.org/method/messages.getFavedStickers b/data/core.telegram.org/method/contacts.getContactIDs similarity index 86% rename from data/core.telegram.org/method/messages.getFavedStickers rename to data/core.telegram.org/method/contacts.getContactIDs index 43d2f3b65a..0b2d62f294 100644 --- a/data/core.telegram.org/method/messages.getFavedStickers +++ b/data/core.telegram.org/method/contacts.getContactIDs @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.getFavedStickers</title> + <title>contacts.getContactIDs</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Get faved stickers"> - <meta property="og:title" content="messages.getFavedStickers"> + <meta property="description" content="Get contact by telegram IDs"> + <meta property="og:title" content="contacts.getContactIDs"> <meta property="og:image" content=""> - <meta property="og:description" content="Get faved stickers"> + <meta property="og:description" content="Get contact by telegram IDs"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.getFavedStickers" >messages.getFavedStickers</a></li></ul></div> - <h1 id="dev_page_title">messages.getFavedStickers</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/contacts.getContactIDs" >contacts.getContactIDs</a></li></ul></div> + <h1 id="dev_page_title">contacts.getContactIDs</h1> - <div id="dev_page_content"><p>Get faved stickers</p> + <div id="dev_page_content"><p>Get contact by telegram IDs</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,10 +52,8 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.favedStickersNotModified" >messages.favedStickersNotModified</a>#9e8fa6d3 = <a href="/type/messages.FavedStickers" >messages.FavedStickers</a>; -<a href="/constructor/messages.favedStickers" >messages.favedStickers</a>#2cb51097 hash:<a href="/type/long" >long</a> packs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerPack" >StickerPack</a>> stickers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/messages.FavedStickers" >messages.FavedStickers</a>; ----functions--- -<a href="/method/messages.getFavedStickers" class="current_page_link" >messages.getFavedStickers</a>#4f1aaa9 hash:<a href="/type/long" >long</a> = <a href="/type/messages.FavedStickers" >messages.FavedStickers</a>;</code></pre></p> +<pre class="page_scheme"><code>---functions--- +<a href="/method/contacts.getContactIDs" class="current_page_link" >contacts.getContactIDs</a>#7adc669d hash:<a href="/type/long" >long</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</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> @@ -74,7 +72,7 @@ </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.FavedStickers">messages.FavedStickers</a></p> +<p><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</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="#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> diff --git a/data/core.telegram.org/method/messages.getRecentStickers b/data/core.telegram.org/method/contacts.getContacts similarity index 80% rename from data/core.telegram.org/method/messages.getRecentStickers rename to data/core.telegram.org/method/contacts.getContacts index 4ce9d8ed7c..72e31ea6d7 100644 --- a/data/core.telegram.org/method/messages.getRecentStickers +++ b/data/core.telegram.org/method/contacts.getContacts @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.getRecentStickers</title> + <title>contacts.getContacts</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Get recent stickers"> - <meta property="og:title" content="messages.getRecentStickers"> + <meta property="description" content="Returns the current user's contact list."> + <meta property="og:title" content="contacts.getContacts"> <meta property="og:image" content=""> - <meta property="og:description" content="Get recent stickers"> + <meta property="og:description" content="Returns the current user's contact list."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.getRecentStickers" >messages.getRecentStickers</a></li></ul></div> - <h1 id="dev_page_title">messages.getRecentStickers</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/contacts.getContacts" >contacts.getContacts</a></li></ul></div> + <h1 id="dev_page_title">contacts.getContacts</h1> - <div id="dev_page_content"><p>Get recent stickers</p> + <div id="dev_page_content"><p>Returns the current user's contact list.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,10 +52,10 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.recentStickersNotModified" >messages.recentStickersNotModified</a>#b17f890 = <a href="/type/messages.RecentStickers" >messages.RecentStickers</a>; -<a href="/constructor/messages.recentStickers" >messages.recentStickers</a>#88d37c56 hash:<a href="/type/long" >long</a> packs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerPack" >StickerPack</a>> stickers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> dates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.RecentStickers" >messages.RecentStickers</a>; +<pre class="page_scheme"><code><a href="/constructor/contacts.contactsNotModified" >contacts.contactsNotModified</a>#b74ba9d2 = <a href="/type/contacts.Contacts" >contacts.Contacts</a>; +<a href="/constructor/contacts.contacts" >contacts.contacts</a>#eae87e42 contacts:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Contact" >Contact</a>> saved_count:<a href="/type/int" >int</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.Contacts" >contacts.Contacts</a>; ---functions--- -<a href="/method/messages.getRecentStickers" class="current_page_link" >messages.getRecentStickers</a>#9da9403b flags:<a href="/type/%23" >#</a> attached:flags.0?true hash:<a href="/type/long" >long</a> = <a href="/type/messages.RecentStickers" >messages.RecentStickers</a>;</code></pre></p> +<a href="/method/contacts.getContacts" class="current_page_link" >contacts.getContacts</a>#5dd69e12 hash:<a href="/type/long" >long</a> = <a href="/type/contacts.Contacts" >contacts.Contacts</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> @@ -67,27 +67,19 @@ </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>attached</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>Get stickers recently attached to photo or video files</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> +<td>If there already is a full contact list on the client, a <a href="/api/offsets#hash-generation">hash</a> of a the list of contact IDs in ascending order may be passed in this parameter. If the contact set was not changed, <a href="/constructor/contacts.contactsNotModified">(contacts.contactsNotModified)</a> will be returned.</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.RecentStickers">messages.RecentStickers</a></p> +<p><a href="/type/contacts.Contacts">contacts.Contacts</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="#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> +<p>How to fetch results from large lists of objects.</p> +<h4><a class="anchor" href="#contactscontactsnotmodified" id="contactscontactsnotmodified" name="contactscontactsnotmodified"><i class="anchor-icon"></i></a><a href="/constructor/contacts.contactsNotModified">contacts.contactsNotModified</a></h4> +<p>Contact list on the server is the same as the list on the client.</p></div> </div> diff --git a/data/core.telegram.org/method/contacts.getLocated b/data/core.telegram.org/method/contacts.getLocated new file mode 100644 index 0000000000..a8252e9443 --- /dev/null +++ b/data/core.telegram.org/method/contacts.getLocated @@ -0,0 +1,197 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>contacts.getLocated</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get contacts near you"> + <meta property="og:title" content="contacts.getLocated"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get contacts near you"> + <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?215" 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/contacts.getLocated" >contacts.getLocated</a></li></ul></div> + <h1 id="dev_page_title">contacts.getLocated</h1> + + <div id="dev_page_content"><p>Get contacts near you</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/contacts.getLocated" class="current_page_link" >contacts.getLocated</a>#d348bc44 flags:<a href="/type/%23" >#</a> background:flags.1?true geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> self_expires:flags.0?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</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>background</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>While the geolocation of the current user is public, clients should update it in the background every half-an-hour or so, while setting this flag. <br>Do this only if the new location is more than 1 KM away from the previous one, or if the previous location is unknown.</td> +</tr> +<tr> +<td><strong>geo_point</strong></td> +<td style="text-align: center;"><a href="/type/InputGeoPoint">InputGeoPoint</a></td> +<td>Geolocation</td> +</tr> +<tr> +<td><strong>self_expires</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>If set, the geolocation of the current user will be public for the specified number of seconds; pass 0x7fffffff to disable expiry, 0 to make the current geolocation private; if the flag isn't set, no changes will be applied.</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/Updates">Updates</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>GEO_POINT_INVALID</td> +<td>Invalid geoposition provided.</td> +</tr> +<tr> +<td>406</td> +<td>USERPIC_PRIVACY_REQUIRED</td> +<td>You need to disable privacy settings for your profile picture in order to make your geolocation public.</td> +</tr> +<tr> +<td>406</td> +<td>USERPIC_UPLOAD_REQUIRED</td> +<td>You must have a profile picture to publish your geolocation.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/help.getNearestDc b/data/core.telegram.org/method/contacts.getStatuses similarity index 89% rename from data/core.telegram.org/method/help.getNearestDc rename to data/core.telegram.org/method/contacts.getStatuses index 367abfb21d..5ad7897b45 100644 --- a/data/core.telegram.org/method/help.getNearestDc +++ b/data/core.telegram.org/method/contacts.getStatuses @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>help.getNearestDc</title> + <title>contacts.getStatuses</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Returns info on data centre nearest to the user."> - <meta property="og:title" content="help.getNearestDc"> + <meta property="description" content="Returns the list of contact statuses."> + <meta property="og:title" content="contacts.getStatuses"> <meta property="og:image" content=""> - <meta property="og:description" content="Returns info on data centre nearest to the user."> + <meta property="og:description" content="Returns the list of contact statuses."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/help.getNearestDc" >help.getNearestDc</a></li></ul></div> - <h1 id="dev_page_title">help.getNearestDc</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/contacts.getStatuses" >contacts.getStatuses</a></li></ul></div> + <h1 id="dev_page_title">contacts.getStatuses</h1> - <div id="dev_page_content"><p>Returns info on data centre nearest to the user.</p> + <div id="dev_page_content"><p>Returns the list of contact statuses.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,13 +52,12 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/nearestDc" >nearestDc</a>#8e1a1775 country:<a href="/type/string" >string</a> this_dc:<a href="/type/int" >int</a> nearest_dc:<a href="/type/int" >int</a> = <a href="/type/NearestDc" >NearestDc</a>; ----functions--- -<a href="/method/help.getNearestDc" class="current_page_link" >help.getNearestDc</a>#1fb33026 = <a href="/type/NearestDc" >NearestDc</a>;</code></pre></p> +<pre class="page_scheme"><code>---functions--- +<a href="/method/contacts.getStatuses" class="current_page_link" >contacts.getStatuses</a>#c4a353ee = <a href="/type/Vector%20t" >Vector</a><<a href="/type/ContactStatus" >ContactStatus</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> -<p><a href="/type/NearestDc">NearestDc</a></p></div> +<p><a href="/type/Vector%20t">Vector</a><<a href="/type/ContactStatus">ContactStatus</a>></p></div> </div> diff --git a/data/core.telegram.org/method/contacts.toggleTopPeers b/data/core.telegram.org/method/contacts.toggleTopPeers new file mode 100644 index 0000000000..069a25190b --- /dev/null +++ b/data/core.telegram.org/method/contacts.toggleTopPeers @@ -0,0 +1,153 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>contacts.toggleTopPeers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Enable/disable top peers"> + <meta property="og:title" content="contacts.toggleTopPeers"> + <meta property="og:image" content=""> + <meta property="og:description" content="Enable/disable top peers"> + <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?215" 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/contacts.toggleTopPeers" >contacts.toggleTopPeers</a></li></ul></div> + <h1 id="dev_page_title">contacts.toggleTopPeers</h1> + + <div id="dev_page_content"><p>Enable/disable <a href="/api/top-rating">top peers</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/contacts.toggleTopPeers" class="current_page_link" >contacts.toggleTopPeers</a>#8514bdda enabled:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</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>enabled</strong></td> +<td style="text-align: center;"><a href="/type/Bool">Bool</a></td> +<td>Enable/disable</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/Bool">Bool</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="#top-peer-rating" id="top-peer-rating" name="top-peer-rating"><i class="anchor-icon"></i></a><a href="/api/top-rating">Top peer rating</a></h4> +<p>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).</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/help.getAppConfig b/data/core.telegram.org/method/help.getAppConfig new file mode 100644 index 0000000000..ad032c6809 --- /dev/null +++ b/data/core.telegram.org/method/help.getAppConfig @@ -0,0 +1,142 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getAppConfig</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get app-specific configuration, see client configuration for more info on the result."> + <meta property="og:title" content="help.getAppConfig"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get app-specific configuration, see client configuration for more info on the result."> + <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?215" 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/help.getAppConfig" >help.getAppConfig</a></li></ul></div> + <h1 id="dev_page_title">help.getAppConfig</h1> + + <div id="dev_page_content"><p>Get app-specific configuration, see <a href="/api/config#client-configuration">client configuration</a> for more info on the result.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/jsonNull" >jsonNull</a>#3f6d7b68 = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonBool" >jsonBool</a>#c7345e6a value:<a href="/type/Bool" >Bool</a> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonNumber" >jsonNumber</a>#2be0dfa4 value:<a href="/type/double" >double</a> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonString" >jsonString</a>#b71e767a value:<a href="/type/string" >string</a> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonArray" >jsonArray</a>#f7444763 value:<a href="/type/Vector%20t" >Vector</a><<a href="/type/JSONValue" >JSONValue</a>> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonObject" >jsonObject</a>#99c1d49d value:<a href="/type/Vector%20t" >Vector</a><<a href="/type/JSONObjectValue" >JSONObjectValue</a>> = <a href="/type/JSONValue" >JSONValue</a>; +---functions--- +<a href="/method/help.getAppConfig" class="current_page_link" >help.getAppConfig</a>#98914110 = <a href="/type/JSONValue" >JSONValue</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/JSONValue">JSONValue</a>, see <a href="/api/config#client-configuration">client configuration</a> for more info on the result</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="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/help.getAppUpdate b/data/core.telegram.org/method/help.getAppUpdate new file mode 100644 index 0000000000..27088b0ef5 --- /dev/null +++ b/data/core.telegram.org/method/help.getAppUpdate @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getAppUpdate</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Returns information on update availability for the current application."> + <meta property="og:title" content="help.getAppUpdate"> + <meta property="og:image" content=""> + <meta property="og:description" content="Returns information on update availability for the current application."> + <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?215" 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/help.getAppUpdate" >help.getAppUpdate</a></li></ul></div> + <h1 id="dev_page_title">help.getAppUpdate</h1> + + <div id="dev_page_content"><p>Returns information on update availability for the current application.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.appUpdate" >help.appUpdate</a>#ccbbce30 flags:<a href="/type/%23" >#</a> can_not_skip:flags.0?true id:<a href="/type/int" >int</a> version:<a href="/type/string" >string</a> text:<a href="/type/string" >string</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> document:flags.1?<a href="/type/Document" >Document</a> url:flags.2?<a href="/type/string" >string</a> sticker:flags.3?<a href="/type/Document" >Document</a> = <a href="/type/help.AppUpdate" >help.AppUpdate</a>; +<a href="/constructor/help.noAppUpdate" >help.noAppUpdate</a>#c45a6536 = <a href="/type/help.AppUpdate" >help.AppUpdate</a>; +---functions--- +<a href="/method/help.getAppUpdate" class="current_page_link" >help.getAppUpdate</a>#522d5a7d source:<a href="/type/string" >string</a> = <a href="/type/help.AppUpdate" >help.AppUpdate</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>source</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Source</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/help.AppUpdate">help.AppUpdate</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/invokeWithLayer.html b/data/core.telegram.org/method/invokeWithLayer.html new file mode 100644 index 0000000000..a5e3c1da29 --- /dev/null +++ b/data/core.telegram.org/method/invokeWithLayer.html @@ -0,0 +1,204 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>invokeWithLayer</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Invoke the specified query using the specified API layer"> + <meta property="og:title" content="invokeWithLayer"> + <meta property="og:image" content=""> + <meta property="og:description" content="Invoke the specified query using the specified API layer"> + <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?215" 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/invokeWithLayer" >invokeWithLayer</a></li></ul></div> + <h1 id="dev_page_title">invokeWithLayer</h1> + + <div id="dev_page_content"><p>Invoke the specified query using the specified API <a href="/api/invoking#layers">layer</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code>---functions--- +<a href="/method/invokeWithLayer" class="current_page_link" >invokeWithLayer</a>#da9b0d0d {X:Type} layer:<a href="/type/int" >int</a> query:!X = X;</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>layer</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The layer to use</td> +</tr> +<tr> +<td><strong>query</strong></td> +<td style="text-align: center;">!X</td> +<td>The query</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p>X</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>AUTH_BYTES_INVALID</td> +<td>The provided authorization is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>CDN_METHOD_INVALID</td> +<td>You can't call this method in a CDN DC.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<tr> +<td>400</td> +<td>CONNECTION_API_ID_INVALID</td> +<td>The provided API id is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>CONNECTION_NOT_INITED</td> +<td>Connection not initialized.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_LAYER_INVALID</td> +<td>The provided layer is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>INVITE_HASH_EXPIRED</td> +<td>The invite link has expired.</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> +<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="#calling-api-methods" id="calling-api-methods" name="calling-api-methods"><i class="anchor-icon"></i></a><a href="/api/invoking">Calling API Methods</a></h4> +<p>Additional options for calling methods.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/langpack.getLanguage b/data/core.telegram.org/method/langpack.getLanguage new file mode 100644 index 0000000000..6baac5a624 --- /dev/null +++ b/data/core.telegram.org/method/langpack.getLanguage @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>langpack.getLanguage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get information about a language in a localization pack"> + <meta property="og:title" content="langpack.getLanguage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get information about a language in a localization pack"> + <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?215" 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.getLanguage" >langpack.getLanguage</a></li></ul></div> + <h1 id="dev_page_title">langpack.getLanguage</h1> + + <div id="dev_page_content"><p>Get information about a language in a localization pack</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/langPackLanguage" >langPackLanguage</a>#eeca5ce3 flags:<a href="/type/%23" >#</a> official:flags.0?true rtl:flags.2?true beta:flags.3?true name:<a href="/type/string" >string</a> native_name:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> base_lang_code:flags.1?<a href="/type/string" >string</a> plural_code:<a href="/type/string" >string</a> strings_count:<a href="/type/int" >int</a> translated_count:<a href="/type/int" >int</a> translations_url:<a href="/type/string" >string</a> = <a href="/type/LangPackLanguage" >LangPackLanguage</a>; +---functions--- +<a href="/method/langpack.getLanguage" class="current_page_link" >langpack.getLanguage</a>#6a596502 lang_pack:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> = <a href="/type/LangPackLanguage" >LangPackLanguage</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 name</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> +</tbody> +</table> +<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/LangPackLanguage">LangPackLanguage</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.getDialogUnreadMarks b/data/core.telegram.org/method/messages.getDialogUnreadMarks new file mode 100644 index 0000000000..7cf19f4084 --- /dev/null +++ b/data/core.telegram.org/method/messages.getDialogUnreadMarks @@ -0,0 +1,133 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getDialogUnreadMarks</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get dialogs manually marked as unread"> + <meta property="og:title" content="messages.getDialogUnreadMarks"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get dialogs manually marked as unread"> + <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?215" 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.getDialogUnreadMarks" >messages.getDialogUnreadMarks</a></li></ul></div> + <h1 id="dev_page_title">messages.getDialogUnreadMarks</h1> + + <div id="dev_page_content"><p>Get dialogs manually marked as unread</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code>---functions--- +<a href="/method/messages.getDialogUnreadMarks" class="current_page_link" >messages.getDialogUnreadMarks</a>#22e24e22 = <a href="/type/Vector%20t" >Vector</a><<a href="/type/DialogPeer" >DialogPeer</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/Vector%20t">Vector</a><<a href="/type/DialogPeer">DialogPeer</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.getExportedChatInvite b/data/core.telegram.org/method/messages.getExportedChatInvite new file mode 100644 index 0000000000..26aa13353f --- /dev/null +++ b/data/core.telegram.org/method/messages.getExportedChatInvite @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getExportedChatInvite</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get info about a chat invite"> + <meta property="og:title" content="messages.getExportedChatInvite"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get info about a chat invite"> + <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?215" 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.getExportedChatInvite" >messages.getExportedChatInvite</a></li></ul></div> + <h1 id="dev_page_title">messages.getExportedChatInvite</h1> + + <div id="dev_page_content"><p>Get info about a chat invite</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.exportedChatInvite" >messages.exportedChatInvite</a>#1871be50 invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ExportedChatInvite" >messages.ExportedChatInvite</a>; +<a href="/constructor/messages.exportedChatInviteReplaced" >messages.exportedChatInviteReplaced</a>#222600ef invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> new_invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ExportedChatInvite" >messages.ExportedChatInvite</a>; +---functions--- +<a href="/method/messages.getExportedChatInvite" class="current_page_link" >messages.getExportedChatInvite</a>#73746f5c peer:<a href="/type/InputPeer" >InputPeer</a> link:<a href="/type/string" >string</a> = <a href="/type/messages.ExportedChatInvite" >messages.ExportedChatInvite</a>;</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>Chat</td> +</tr> +<tr> +<td><strong>link</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Invite link</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.ExportedChatInvite">messages.ExportedChatInvite</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.deleteMessages b/data/core.telegram.org/method/messages.getGameHighScores similarity index 81% rename from data/core.telegram.org/method/messages.deleteMessages rename to data/core.telegram.org/method/messages.getGameHighScores index ffeef81e5b..6ba307d512 100644 --- a/data/core.telegram.org/method/messages.deleteMessages +++ b/data/core.telegram.org/method/messages.getGameHighScores @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.deleteMessages</title> + <title>messages.getGameHighScores</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Deletes messages by their identifiers."> - <meta property="og:title" content="messages.deleteMessages"> + <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="Deletes messages by their identifiers."> + <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"> @@ -36,10 +36,10 @@ <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.deleteMessages" >messages.deleteMessages</a></li></ul></div> - <h1 id="dev_page_title">messages.deleteMessages</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/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>Deletes messages by their identifiers.</p> + <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"> @@ -52,9 +52,9 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.affectedMessages" >messages.affectedMessages</a>#84d19185 pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>; +<pre class="page_scheme"><code><a href="/constructor/messages.highScores" >messages.highScores</a>#9a3bfd99 scores:<a href="/type/Vector%20t" >Vector</a><<a href="/type/HighScore" >HighScore</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.HighScores" >messages.HighScores</a>; ---functions--- -<a href="/method/messages.deleteMessages" class="current_page_link" >messages.deleteMessages</a>#e58e95d2 flags:<a href="/type/%23" >#</a> revoke:flags.0?true id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>;</code></pre></p> +<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> @@ -66,24 +66,24 @@ </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>revoke</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 to delete messages for all participants of the chat</td> +<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/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> -<td>Message ID list</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>The method returns the list of successfully deleted messages in <a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>>.</p> +<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> @@ -95,9 +95,19 @@ </thead> <tbody> <tr> -<td>403</td> -<td>MESSAGE_DELETE_FORBIDDEN</td> -<td>You can't delete one of the messages you tried to delete, most likely because it is a service message.</td> +<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> diff --git a/data/core.telegram.org/method/photos.uploadProfilePhoto b/data/core.telegram.org/method/messages.getInlineBotResults similarity index 73% rename from data/core.telegram.org/method/photos.uploadProfilePhoto rename to data/core.telegram.org/method/messages.getInlineBotResults index a0481513af..160d8caa5c 100644 --- a/data/core.telegram.org/method/photos.uploadProfilePhoto +++ b/data/core.telegram.org/method/messages.getInlineBotResults @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>photos.uploadProfilePhoto</title> + <title>messages.getInlineBotResults</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Updates current user profile photo."> - <meta property="og:title" content="photos.uploadProfilePhoto"> + <meta property="description" content="Query an inline bot"> + <meta property="og:title" content="messages.getInlineBotResults"> <meta property="og:image" content=""> - <meta property="og:description" content="Updates current user profile photo."> + <meta property="og:description" content="Query an inline bot"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/photos.uploadProfilePhoto" >photos.uploadProfilePhoto</a></li></ul></div> - <h1 id="dev_page_title">photos.uploadProfilePhoto</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.getInlineBotResults" >messages.getInlineBotResults</a></li></ul></div> + <h1 id="dev_page_title">messages.getInlineBotResults</h1> - <div id="dev_page_content"><p>Updates current user profile photo.</p> + <div id="dev_page_content"><p>Query an inline bot</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,9 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/photos.photo" >photos.photo</a>#20212ca8 photo:<a href="/type/Photo" >Photo</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/photos.Photo" >photos.Photo</a>; +<pre class="page_scheme"><code><a href="/constructor/messages.botResults" >messages.botResults</a>#947ca848 flags:<a href="/type/%23" >#</a> gallery:flags.0?true query_id:<a href="/type/long" >long</a> next_offset:flags.1?<a href="/type/string" >string</a> switch_pm:flags.2?<a href="/type/InlineBotSwitchPM" >InlineBotSwitchPM</a> results:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotInlineResult" >BotInlineResult</a>> cache_time:<a href="/type/int" >int</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.BotResults" >messages.BotResults</a>; ---functions--- -<a href="/method/photos.uploadProfilePhoto" class="current_page_link" >photos.uploadProfilePhoto</a>#89f30f69 flags:<a href="/type/%23" >#</a> file:flags.0?<a href="/type/InputFile" >InputFile</a> video:flags.1?<a href="/type/InputFile" >InputFile</a> video_start_ts:flags.2?<a href="/type/double" >double</a> = <a href="/type/photos.Photo" >photos.Photo</a>;</code></pre></p> +<a href="/method/messages.getInlineBotResults" class="current_page_link" >messages.getInlineBotResults</a>#514e999d flags:<a href="/type/%23" >#</a> bot:<a href="/type/InputUser" >InputUser</a> peer:<a href="/type/InputPeer" >InputPeer</a> geo_point:flags.0?<a href="/type/InputGeoPoint" >InputGeoPoint</a> query:<a href="/type/string" >string</a> offset:<a href="/type/string" >string</a> = <a href="/type/messages.BotResults" >messages.BotResults</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> @@ -71,24 +71,34 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>file</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/InputFile">InputFile</a></td> -<td>File saved in parts by means of <a href="/method/upload.saveFilePart">upload.saveFilePart</a> method</td> +<td><strong>bot</strong></td> +<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> +<td>The bot to query</td> </tr> <tr> -<td><strong>video</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/InputFile">InputFile</a></td> -<td><a href="/api/files#animated-profile-pictures">Animated profile picture</a> video</td> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>The currently opened chat</td> </tr> <tr> -<td><strong>video_start_ts</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/double">double</a></td> -<td>Floating point UNIX timestamp in seconds, indicating the frame of the video that should be used as static preview.</td> +<td><strong>geo_point</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/InputGeoPoint">InputGeoPoint</a></td> +<td>The geolocation, if requested</td> +</tr> +<tr> +<td><strong>query</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The query</td> +</tr> +<tr> +<td><strong>offset</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The offset within the results, will be passed directly as-is to the bot.</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/photos.Photo">photos.Photo</a></p> +<p><a href="/type/messages.BotResults">messages.BotResults</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> @@ -101,51 +111,46 @@ <tbody> <tr> <td>400</td> -<td>ALBUM_PHOTOS_TOO_MANY</td> -<td>Too many .</td> +<td>BOT_INLINE_DISABLED</td> +<td>This bot can't be used in inline mode.</td> </tr> <tr> <td>400</td> -<td>FILE_PARTS_INVALID</td> -<td>The number of file parts is invalid.</td> +<td>BOT_INVALID</td> +<td>This is not a valid bot.</td> </tr> <tr> <td>400</td> -<td>IMAGE_PROCESS_FAILED</td> -<td>Failure while processing image.</td> +<td>BOT_RESPONSE_TIMEOUT</td> +<td>A timeout occurred while fetching data from the bot.</td> </tr> <tr> <td>400</td> -<td>PHOTO_CROP_FILE_MISSING</td> -<td>Photo crop file missing.</td> +<td>CHANNEL_INVALID</td> +<td>The provided channel is invalid.</td> </tr> <tr> <td>400</td> -<td>PHOTO_CROP_SIZE_SMALL</td> -<td>Photo is too small.</td> +<td>CHANNEL_PRIVATE</td> +<td>You haven't joined this channel/supergroup.</td> </tr> <tr> <td>400</td> -<td>PHOTO_EXT_INVALID</td> -<td>The extension of the photo is invalid.</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</td> </tr> <tr> <td>400</td> -<td>PHOTO_FILE_MISSING</td> -<td>Profile photo file missing.</td> +<td>MSG_ID_INVALID</td> +<td>Invalid message ID provided.</td> </tr> <tr> -<td>400</td> -<td>VIDEO_FILE_INVALID</td> -<td>The specified video file is invalid.</td> +<td>-503</td> +<td>Timeout</td> +<td>Timeout while fetching data.</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="#uploadsavefilepart" id="uploadsavefilepart" name="uploadsavefilepart"><i class="anchor-icon"></i></a><a href="/method/upload.saveFilePart">upload.saveFilePart</a></h4> -<p>Saves a part of file for futher sending to one of the methods.</p> -<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></div> +</table></div> </div> diff --git a/data/core.telegram.org/method/messages.getScheduledMessages b/data/core.telegram.org/method/messages.getScheduledMessages new file mode 100644 index 0000000000..361c661224 --- /dev/null +++ b/data/core.telegram.org/method/messages.getScheduledMessages @@ -0,0 +1,179 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getScheduledMessages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get scheduled messages"> + <meta property="og:title" content="messages.getScheduledMessages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get scheduled messages"> + <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?215" 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.getScheduledMessages" >messages.getScheduledMessages</a></li></ul></div> + <h1 id="dev_page_title">messages.getScheduledMessages</h1> + + <div id="dev_page_content"><p>Get scheduled messages</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.messages" >messages.messages</a>#8c718e87 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <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.getScheduledMessages" class="current_page_link" >messages.getScheduledMessages</a>#bdbb0464 peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.Messages" >messages.Messages</a>;</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>id</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> +<td>IDs of scheduled messages</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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.saveDraft b/data/core.telegram.org/method/messages.saveDraft new file mode 100644 index 0000000000..960d382ff7 --- /dev/null +++ b/data/core.telegram.org/method/messages.saveDraft @@ -0,0 +1,202 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.saveDraft</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Save a message draft associated to a chat."> + <meta property="og:title" content="messages.saveDraft"> + <meta property="og:image" content=""> + <meta property="og:description" content="Save a message draft associated to a chat."> + <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?215" 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.saveDraft" >messages.saveDraft</a></li></ul></div> + <h1 id="dev_page_title">messages.saveDraft</h1> + + <div id="dev_page_content"><p>Save a message <a href="/api/drafts">draft</a> associated to a chat.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/messages.saveDraft" class="current_page_link" >messages.saveDraft</a>#bc39e14b flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true reply_to_msg_id:flags.0?<a href="/type/int" >int</a> peer:<a href="/type/InputPeer" >InputPeer</a> message:<a href="/type/string" >string</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/Bool" >Bool</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>no_webpage</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>Disable generation of the webpage preview</td> +</tr> +<tr> +<td><strong>reply_to_msg_id</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>Message ID the message should reply to</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>Destination of the message that should be sent</td> +</tr> +<tr> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The draft</td> +</tr> +<tr> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td>Message <a href="/api/entities">entities</a> for styled text</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/Bool">Bool</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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#message-drafts" id="message-drafts" name="message-drafts"><i class="anchor-icon"></i></a><a href="/api/drafts">Message drafts</a></h4> +<p>How to handle message drafts</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.sendInlineBotResult b/data/core.telegram.org/method/messages.sendInlineBotResult new file mode 100644 index 0000000000..ddd4e5d7f4 --- /dev/null +++ b/data/core.telegram.org/method/messages.sendInlineBotResult @@ -0,0 +1,344 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.sendInlineBotResult</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Send a result obtained using messages.getInlineBotResults."> + <meta property="og:title" content="messages.sendInlineBotResult"> + <meta property="og:image" content=""> + <meta property="og:description" content="Send a result obtained using messages.getInlineBotResults."> + <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?215" 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.sendInlineBotResult" >messages.sendInlineBotResult</a></li></ul></div> + <h1 id="dev_page_title">messages.sendInlineBotResult</h1> + + <div id="dev_page_content"><p>Send a result obtained using <a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.sendInlineBotResult" class="current_page_link" >messages.sendInlineBotResult</a>#220815b0 flags:<a href="/type/%23" >#</a> silent:flags.5?true background:flags.6?true clear_draft:flags.7?true hide_via:flags.11?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> random_id:<a href="/type/long" >long</a> query_id:<a href="/type/long" >long</a> id:<a href="/type/string" >string</a> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</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>silent</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>Whether to send the message silently (no notification will be triggered on the other client)</td> +</tr> +<tr> +<td><strong>background</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>Whether to send the message in background</td> +</tr> +<tr> +<td><strong>clear_draft</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>Whether to clear the <a href="/api/drafts">draft</a></td> +</tr> +<tr> +<td><strong>hide_via</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>Whether to hide the <code>via @botname</code> in the resulting message (only for bot usernames encountered in the <a href="/constructor/config">config</a>)</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>Destination</td> +</tr> +<tr> +<td><strong>reply_to_msg_id</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>ID of the message this message should reply to</td> +</tr> +<tr> +<td><strong>random_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Random ID to avoid resending the same query</td> +</tr> +<tr> +<td><strong>query_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Query ID from <a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a></td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Result ID from <a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a></td> +</tr> +<tr> +<td><strong>schedule_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/int">int</a></td> +<td>Scheduled message date for scheduled messages</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/Updates">Updates</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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_RESTRICTED</td> +<td>You can't send messages in this chat, you were restricted.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_GAME_FORBIDDEN</td> +<td>You can't send a game to this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_GIFS_FORBIDDEN</td> +<td>You can't send gifs in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_INLINE_FORBIDDEN</td> +<td>You can't send inline messages in this group.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_MEDIA_FORBIDDEN</td> +<td>You can't send media in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_STICKERS_FORBIDDEN</td> +<td>You can't send stickers in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<tr> +<td>400</td> +<td>INLINE_RESULT_EXPIRED</td> +<td>The inline query expired.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_EMPTY</td> +<td>The provided media object is invalid.</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> +<tr> +<td>400</td> +<td>QUERY_ID_EMPTY</td> +<td>The query ID is empty.</td> +</tr> +<tr> +<td>400</td> +<td>RESULT_ID_EMPTY</td> +<td>Result ID empty.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_DATE_TOO_LATE</td> +<td>You can't schedule a message this far in the future.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_TOO_MUCH</td> +<td>There are too many scheduled messages.</td> +</tr> +<tr> +<td>420</td> +<td>SLOWMODE_WAIT_X</td> +<td>Slowmode is enabled in this chat: you must wait for the specified number of seconds before sending another message to the chat.</td> +</tr> +<tr> +<td>400</td> +<td>USER_BANNED_IN_CHANNEL</td> +<td>You're banned from sending messages in supergroups/channels.</td> +</tr> +<tr> +<td>400</td> +<td>WEBPAGE_CURL_FAILED</td> +<td>Failure while fetching the webpage with cURL.</td> +</tr> +<tr> +<td>400</td> +<td>WEBPAGE_MEDIA_EMPTY</td> +<td>Webpage media empty.</td> +</tr> +<tr> +<td>400</td> +<td>YOU_BLOCKED_USER</td> +<td>You blocked this user.</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="#message-drafts" id="message-drafts" name="message-drafts"><i class="anchor-icon"></i></a><a href="/api/drafts">Message drafts</a></h4> +<p>How to handle message drafts</p> +<h4><a class="anchor" href="#config" id="config" name="config"><i class="anchor-icon"></i></a><a href="/constructor/config">config</a></h4> +<p>Current configuration</p> +<h4><a class="anchor" href="#messagesgetinlinebotresults" id="messagesgetinlinebotresults" name="messagesgetinlinebotresults"><i class="anchor-icon"></i></a><a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a></h4> +<p>Query an inline bot</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.sendMedia b/data/core.telegram.org/method/messages.sendMedia new file mode 100644 index 0000000000..ca4043c09c --- /dev/null +++ b/data/core.telegram.org/method/messages.sendMedia @@ -0,0 +1,518 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.sendMedia</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Send a media"> + <meta property="og:title" content="messages.sendMedia"> + <meta property="og:image" content=""> + <meta property="og:description" content="Send a media"> + <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?215" 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.sendMedia" >messages.sendMedia</a></li></ul></div> + <h1 id="dev_page_title">messages.sendMedia</h1> + + <div id="dev_page_content"><p>Send a media</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.sendMedia" class="current_page_link" >messages.sendMedia</a>#3491eba9 flags:<a href="/type/%23" >#</a> silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> media:<a href="/type/InputMedia" >InputMedia</a> message:<a href="/type/string" >string</a> random_id:<a href="/type/long" >long</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>;</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>silent</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>Send message silently (no notification should be triggered)</td> +</tr> +<tr> +<td><strong>background</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>Send message in background</td> +</tr> +<tr> +<td><strong>clear_draft</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>Clear the draft</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>Destination</td> +</tr> +<tr> +<td><strong>reply_to_msg_id</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>Message ID to which this message should reply to</td> +</tr> +<tr> +<td><strong>media</strong></td> +<td style="text-align: center;"><a href="/type/InputMedia">InputMedia</a></td> +<td>Attached media</td> +</tr> +<tr> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Caption</td> +</tr> +<tr> +<td><strong>random_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Random ID to avoid resending the same message</td> +</tr> +<tr> +<td><strong>reply_markup</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/ReplyMarkup">ReplyMarkup</a></td> +<td>Reply markup for bot keyboards</td> +</tr> +<tr> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td>Message <a href="/api/entities">entities</a> for styled text</td> +</tr> +<tr> +<td><strong>schedule_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/int">int</a></td> +<td>Scheduled message date for <a href="/api/scheduled-messages">scheduled messages</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/Updates">Updates</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>BOT_PAYMENTS_DISABLED</td> +<td>Please enable bot payments in botfather before calling this method.</td> +</tr> +<tr> +<td>400</td> +<td>BOT_POLLS_DISABLED</td> +<td> </td> +</tr> +<tr> +<td>400</td> +<td>BROADCAST_PUBLIC_VOTERS_FORBIDDEN</td> +<td>You can't forward polls with public voters.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_DATA_INVALID</td> +<td>The data of one or more of the buttons you provided is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_TYPE_INVALID</td> +<td>The type of one or more of the buttons you provided is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_URL_INVALID</td> +<td>Button URL invalid.</td> +</tr> +<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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_RESTRICTED</td> +<td>You can't send messages in this chat, you were restricted.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_GIFS_FORBIDDEN</td> +<td>You can't send gifs in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_MEDIA_FORBIDDEN</td> +<td>You can't send media in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_POLL_FORBIDDEN</td> +<td>You can't send polls in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_STICKERS_FORBIDDEN</td> +<td>You can't send stickers in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<tr> +<td>400</td> +<td>CURRENCY_TOTAL_AMOUNT_INVALID</td> +<td>The total amount of all prices is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>EMOTICON_INVALID</td> +<td>The specified emoji is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>EXTERNAL_URL_INVALID</td> +<td>External URL invalid.</td> +</tr> +<tr> +<td>400</td> +<td>FILE_PARTS_INVALID</td> +<td>The number of file parts is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>FILE_PART_LENGTH_INVALID</td> +<td>The length of a file part is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>FILE_REFERENCE_EMPTY</td> +<td>An empty <a href="https://core.telegram.org/api/file_reference">file reference</a> was specified.</td> +</tr> +<tr> +<td>400</td> +<td>FILE_REFERENCE_EXPIRED</td> +<td>File reference expired, it must be refetched as described in <a href="https://core.telegram.org/api/file_reference">https://core.telegram.org/api/file_reference</a>.</td> +</tr> +<tr> +<td>400</td> +<td>GAME_BOT_INVALID</td> +<td>Bots can't send another bot's game.</td> +</tr> +<tr> +<td>400</td> +<td>IMAGE_PROCESS_FAILED</td> +<td>Failure while processing image.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</td> +</tr> +<tr> +<td>400</td> +<td>MD5_CHECKSUM_INVALID</td> +<td>The MD5 checksums do not match.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_CAPTION_TOO_LONG</td> +<td>The caption is too long.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_EMPTY</td> +<td>The provided media object is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_INVALID</td> +<td>Media invalid.</td> +</tr> +<tr> +<td>400</td> +<td>MSG_ID_INVALID</td> +<td>Invalid message ID provided.</td> +</tr> +<tr> +<td>400</td> +<td>PAYMENT_PROVIDER_INVALID</td> +<td>The specified payment provider 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>PHOTO_EXT_INVALID</td> +<td>The extension of the photo is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>PHOTO_INVALID_DIMENSIONS</td> +<td>The photo dimensions are invalid.</td> +</tr> +<tr> +<td>400</td> +<td>PHOTO_SAVE_FILE_INVALID</td> +<td>Internal issues, try again later.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_ANSWERS_INVALID</td> +<td>Invalid poll answers were provided.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_ANSWER_INVALID</td> +<td>One of the poll answers is not acceptable.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_OPTION_DUPLICATE</td> +<td>Duplicate poll options provided.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_OPTION_INVALID</td> +<td>Invalid poll option provided.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_QUESTION_INVALID</td> +<td>One of the poll questions is not acceptable.</td> +</tr> +<tr> +<td>400</td> +<td>QUIZ_CORRECT_ANSWERS_EMPTY</td> +<td>No correct quiz answer was specified.</td> +</tr> +<tr> +<td>400</td> +<td>QUIZ_CORRECT_ANSWERS_TOO_MUCH</td> +<td>You specified too many correct answers in a quiz, quizes can only have one right answer!</td> +</tr> +<tr> +<td>400</td> +<td>QUIZ_CORRECT_ANSWER_INVALID</td> +<td>An invalid value was provided to the correct_answers field.</td> +</tr> +<tr> +<td>400</td> +<td>QUIZ_MULTIPLE_INVALID</td> +<td>Quizes can't have the multiple_choice flag set!</td> +</tr> +<tr> +<td>400</td> +<td>REPLY_MARKUP_BUY_EMPTY</td> +<td>Reply markup for buy button empty.</td> +</tr> +<tr> +<td>400</td> +<td>REPLY_MARKUP_INVALID</td> +<td>The provided reply markup is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_BOT_NOT_ALLOWED</td> +<td>Bots cannot schedule messages.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_DATE_TOO_LATE</td> +<td>You can't schedule a message this far in the future.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_TOO_MUCH</td> +<td>There are too many scheduled messages.</td> +</tr> +<tr> +<td>420</td> +<td>SLOWMODE_WAIT_X</td> +<td>Slowmode is enabled in this chat: you must wait for the specified number of seconds before sending another message to the chat.</td> +</tr> +<tr> +<td>400</td> +<td>TTL_MEDIA_INVALID</td> +<td>Invalid media Time To Live was provided.</td> +</tr> +<tr> +<td>400</td> +<td>USER_BANNED_IN_CHANNEL</td> +<td>You're banned from sending messages in supergroups/channels.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BLOCKED</td> +<td>You were blocked by this user.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BOT</td> +<td>Bots can't send messages to other bots.</td> +</tr> +<tr> +<td>400</td> +<td>VIDEO_CONTENT_TYPE_INVALID</td> +<td>The video's content type is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>WEBPAGE_CURL_FAILED</td> +<td>Failure while fetching the webpage with cURL.</td> +</tr> +<tr> +<td>400</td> +<td>WEBPAGE_MEDIA_EMPTY</td> +<td>Webpage media empty.</td> +</tr> +<tr> +<td>400</td> +<td>YOU_BLOCKED_USER</td> +<td>You blocked this user.</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> +<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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.sendMessage b/data/core.telegram.org/method/messages.sendMessage new file mode 100644 index 0000000000..04af62058d --- /dev/null +++ b/data/core.telegram.org/method/messages.sendMessage @@ -0,0 +1,398 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.sendMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Sends a message to a chat"> + <meta property="og:title" content="messages.sendMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Sends a message to a chat"> + <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?215" 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.sendMessage" >messages.sendMessage</a></li></ul></div> + <h1 id="dev_page_title">messages.sendMessage</h1> + + <div id="dev_page_content"><p>Sends a message to a chat</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.sendMessage" class="current_page_link" >messages.sendMessage</a>#520c3870 flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> random_id:<a href="/type/long" >long</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>;</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>no_webpage</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>Set this flag to disable generation of the webpage preview</td> +</tr> +<tr> +<td><strong>silent</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>Send this message silently (no notifications for the receivers)</td> +</tr> +<tr> +<td><strong>background</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>Send this message as background message</td> +</tr> +<tr> +<td><strong>clear_draft</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>Clear the draft field</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>The destination where the message will be sent</td> +</tr> +<tr> +<td><strong>reply_to_msg_id</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 message ID to which this message will reply to</td> +</tr> +<tr> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The message</td> +</tr> +<tr> +<td><strong>random_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Unique client message ID required to prevent message resending</td> +</tr> +<tr> +<td><strong>reply_markup</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/ReplyMarkup">ReplyMarkup</a></td> +<td>Reply markup for sending bot buttons</td> +</tr> +<tr> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td>Message <a href="/api/entities">entities</a> for sending styled text</td> +</tr> +<tr> +<td><strong>schedule_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/int">int</a></td> +<td>Scheduled message date for <a href="/api/scheduled-messages">scheduled messages</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/Updates">Updates</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>401</td> +<td>AUTH_KEY_PERM_EMPTY</td> +<td>The temporary auth key must be binded to the permanent auth key to use these methods.</td> +</tr> +<tr> +<td>400</td> +<td>BOT_DOMAIN_INVALID</td> +<td>Bot domain invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BOT_INVALID</td> +<td>This is not a valid bot.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_DATA_INVALID</td> +<td>The data of one or more of the buttons you provided is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_TYPE_INVALID</td> +<td>The type of one or more of the buttons you provided is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_URL_INVALID</td> +<td>Button URL invalid.</td> +</tr> +<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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_ID_INVALID</td> +<td>The provided chat id is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_RESTRICTED</td> +<td>You can't send messages in this chat, you were restricted.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<tr> +<td>400</td> +<td>ENCRYPTION_DECLINED</td> +<td>The secret chat was declined.</td> +</tr> +<tr> +<td>400</td> +<td>ENTITIES_TOO_LONG</td> +<td>You provided too many styled message entities.</td> +</tr> +<tr> +<td>400</td> +<td>ENTITY_MENTION_USER_INVALID</td> +<td>You mentioned an invalid user.</td> +</tr> +<tr> +<td>400</td> +<td>FROM_MESSAGE_BOT_DISABLED</td> +<td>Bots can't use fromMessage min constructors.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</td> +</tr> +<tr> +<td>400</td> +<td>MESSAGE_EMPTY</td> +<td>The provided message is empty.</td> +</tr> +<tr> +<td>400</td> +<td>MESSAGE_TOO_LONG</td> +<td>The provided message is too long.</td> +</tr> +<tr> +<td>400</td> +<td>MSG_ID_INVALID</td> +<td>Provided reply_to_msg_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>PINNED_DIALOGS_TOO_MUCH</td> +<td>Too many pinned dialogs.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_OPTION_INVALID</td> +<td>Invalid poll option provided.</td> +</tr> +<tr> +<td>400</td> +<td>REPLY_MARKUP_INVALID</td> +<td>The provided reply markup is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>REPLY_MARKUP_TOO_LONG</td> +<td>The specified reply_markup is too long.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_BOT_NOT_ALLOWED</td> +<td>Bots cannot schedule messages.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_DATE_TOO_LATE</td> +<td>You can't schedule a message this far in the future.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_STATUS_PRIVATE</td> +<td>Can't schedule until user is online, if the user's last seen timestamp is hidden by their privacy settings.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_TOO_MUCH</td> +<td>There are too many scheduled messages.</td> +</tr> +<tr> +<td>420</td> +<td>SLOWMODE_WAIT_X</td> +<td>Slowmode is enabled in this chat: you must wait for the specified number of seconds before sending another message to the chat.</td> +</tr> +<tr> +<td>400</td> +<td>USER_BANNED_IN_CHANNEL</td> +<td>You're banned from sending messages in supergroups/channels.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BLOCKED</td> +<td>You were blocked by this user.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BOT</td> +<td>Bots can't send messages to other bots.</td> +</tr> +<tr> +<td>400</td> +<td>YOU_BLOCKED_USER</td> +<td>You blocked this user.</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> +<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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.sendMultiMedia b/data/core.telegram.org/method/messages.sendMultiMedia new file mode 100644 index 0000000000..cfa150bdf1 --- /dev/null +++ b/data/core.telegram.org/method/messages.sendMultiMedia @@ -0,0 +1,263 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.sendMultiMedia</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Send an album or grouped media"> + <meta property="og:title" content="messages.sendMultiMedia"> + <meta property="og:image" content=""> + <meta property="og:description" content="Send an album or grouped media"> + <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?215" 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.sendMultiMedia" >messages.sendMultiMedia</a></li></ul></div> + <h1 id="dev_page_title">messages.sendMultiMedia</h1> + + <div id="dev_page_content"><p>Send an <a href="/api/files#albums-grouped-media">album or grouped media</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.sendMultiMedia" class="current_page_link" >messages.sendMultiMedia</a>#cc0110cb flags:<a href="/type/%23" >#</a> silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> multi_media:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputSingleMedia" >InputSingleMedia</a>> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</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>silent</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>Whether to send the album silently (no notification triggered)</td> +</tr> +<tr> +<td><strong>background</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>Send in background?</td> +</tr> +<tr> +<td><strong>clear_draft</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>Whether to clear <a href="/api/drafts">drafts</a></td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>The destination chat</td> +</tr> +<tr> +<td><strong>reply_to_msg_id</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 message to reply to</td> +</tr> +<tr> +<td><strong>multi_media</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/InputSingleMedia">InputSingleMedia</a>></td> +<td>The medias to send</td> +</tr> +<tr> +<td><strong>schedule_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/int">int</a></td> +<td>Scheduled message date for scheduled messages</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/Updates">Updates</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_PRIVATE</td> +<td>You haven't joined this channel/supergroup.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_CAPTION_TOO_LONG</td> +<td>The caption is too long.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_EMPTY</td> +<td>The provided media object is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_INVALID</td> +<td>Media invalid.</td> +</tr> +<tr> +<td>400</td> +<td>MULTI_MEDIA_TOO_LONG</td> +<td>Too many media files for album.</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>RANDOM_ID_EMPTY</td> +<td>Random ID empty.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_DATE_TOO_LATE</td> +<td>You can't schedule a message this far in the future.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_TOO_MUCH</td> +<td>There are too many scheduled messages.</td> +</tr> +<tr> +<td>420</td> +<td>SLOWMODE_WAIT_X</td> +<td>Slowmode is enabled in this chat: wait X seconds before sending another message to this chat.</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> +<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="#message-drafts" id="message-drafts" name="message-drafts"><i class="anchor-icon"></i></a><a href="/api/drafts">Message drafts</a></h4> +<p>How to handle message drafts</p> +<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></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/phone.confirmCall b/data/core.telegram.org/method/phone.confirmCall new file mode 100644 index 0000000000..26f29bbc5d --- /dev/null +++ b/data/core.telegram.org/method/phone.confirmCall @@ -0,0 +1,188 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>phone.confirmCall</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Complete phone call E2E encryption key exchange »"> + <meta property="og:title" content="phone.confirmCall"> + <meta property="og:image" content=""> + <meta property="og:description" content="Complete phone call E2E encryption key exchange »"> + <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?215" 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/phone.confirmCall" >phone.confirmCall</a></li></ul></div> + <h1 id="dev_page_title">phone.confirmCall</h1> + + <div id="dev_page_content"><p><a href="/api/end-to-end/voice-calls">Complete phone call E2E encryption key exchange »</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/phone.phoneCall" >phone.phoneCall</a>#ec82e140 phone_call:<a href="/type/PhoneCall" >PhoneCall</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/phone.PhoneCall" >phone.PhoneCall</a>; +---functions--- +<a href="/method/phone.confirmCall" class="current_page_link" >phone.confirmCall</a>#2efe1722 peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> g_a:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/phone.PhoneCall" >phone.PhoneCall</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/InputPhoneCall">InputPhoneCall</a></td> +<td>The phone call</td> +</tr> +<tr> +<td><strong>g_a</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td><a href="/api/end-to-end/voice-calls">Parameter for E2E encryption key exchange »</a></td> +</tr> +<tr> +<td><strong>key_fingerprint</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Key fingerprint</td> +</tr> +<tr> +<td><strong>protocol</strong></td> +<td style="text-align: center;"><a href="/type/PhoneCallProtocol">PhoneCallProtocol</a></td> +<td>Phone call settings</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/phone.PhoneCall">phone.PhoneCall</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>CALL_ALREADY_DECLINED</td> +<td>The call was already declined.</td> +</tr> +<tr> +<td>400</td> +<td>CALL_PEER_INVALID</td> +<td>The provided call peer object 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="#end-to-end-encrypted-voice-calls" id="end-to-end-encrypted-voice-calls" name="end-to-end-encrypted-voice-calls"><i class="anchor-icon"></i></a><a href="/api/end-to-end/voice-calls">End-to-End Encrypted Voice Calls</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/phone.discardGroupCall b/data/core.telegram.org/method/phone.editGroupCallTitle similarity index 92% rename from data/core.telegram.org/method/phone.discardGroupCall rename to data/core.telegram.org/method/phone.editGroupCallTitle index fa87075be8..16bf81792b 100644 --- a/data/core.telegram.org/method/phone.discardGroupCall +++ b/data/core.telegram.org/method/phone.editGroupCallTitle @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>phone.discardGroupCall</title> + <title>phone.editGroupCallTitle</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Terminate a group call"> - <meta property="og:title" content="phone.discardGroupCall"> + <meta property="description" content="Edit the title of a group call or livestream"> + <meta property="og:title" content="phone.editGroupCallTitle"> <meta property="og:image" content=""> - <meta property="og:description" content="Terminate a group call"> + <meta property="og:description" content="Edit the title of a group call or livestream"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/phone.discardGroupCall" >phone.discardGroupCall</a></li></ul></div> - <h1 id="dev_page_title">phone.discardGroupCall</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/phone.editGroupCallTitle" >phone.editGroupCallTitle</a></li></ul></div> + <h1 id="dev_page_title">phone.editGroupCallTitle</h1> - <div id="dev_page_content"><p>Terminate a group call</p> + <div id="dev_page_content"><p>Edit the title of a group call or livestream</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -60,7 +60,7 @@ <a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; <a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; ---functions--- -<a href="/method/phone.discardGroupCall" class="current_page_link" >phone.discardGroupCall</a>#7a777135 call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/Updates" >Updates</a>;</code></pre></p> +<a href="/method/phone.editGroupCallTitle" class="current_page_link" >phone.editGroupCallTitle</a>#1ca6ac0a call:<a href="/type/InputGroupCall" >InputGroupCall</a> title:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</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> @@ -74,7 +74,12 @@ <tr> <td><strong>call</strong></td> <td style="text-align: center;"><a href="/type/InputGroupCall">InputGroupCall</a></td> -<td>The group call to terminate</td> +<td>Group call</td> +</tr> +<tr> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>New title</td> </tr> </tbody> </table> diff --git a/data/core.telegram.org/method/invokeWithMessagesRange.html b/data/core.telegram.org/method/photos.deletePhotos similarity index 88% rename from data/core.telegram.org/method/invokeWithMessagesRange.html rename to data/core.telegram.org/method/photos.deletePhotos index 85494a609f..03ca8188b5 100644 --- a/data/core.telegram.org/method/invokeWithMessagesRange.html +++ b/data/core.telegram.org/method/photos.deletePhotos @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>invokeWithMessagesRange</title> + <title>photos.deletePhotos</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Invoke with the given message range"> - <meta property="og:title" content="invokeWithMessagesRange"> + <meta property="description" content="Deletes profile photos."> + <meta property="og:title" content="photos.deletePhotos"> <meta property="og:image" content=""> - <meta property="og:description" content="Invoke with the given message range"> + <meta property="og:description" content="Deletes profile photos."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/invokeWithMessagesRange" >invokeWithMessagesRange</a></li></ul></div> - <h1 id="dev_page_title">invokeWithMessagesRange</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/photos.deletePhotos" >photos.deletePhotos</a></li></ul></div> + <h1 id="dev_page_title">photos.deletePhotos</h1> - <div id="dev_page_content"><p>Invoke with the given message range</p> + <div id="dev_page_content"><p>Deletes profile photos.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -53,7 +53,7 @@ </ul> </div> <pre class="page_scheme"><code>---functions--- -<a href="/method/invokeWithMessagesRange" class="current_page_link" >invokeWithMessagesRange</a>#365275f2 {X:Type} range:<a href="/type/MessageRange" >MessageRange</a> query:!X = X;</code></pre></p> +<a href="/method/photos.deletePhotos" class="current_page_link" >photos.deletePhotos</a>#87cf7f2f id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPhoto" >InputPhoto</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</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> @@ -65,20 +65,14 @@ </thead> <tbody> <tr> -<td><strong>range</strong></td> -<td style="text-align: center;"><a href="/type/MessageRange">MessageRange</a></td> -<td>Message range</td> -</tr> -<tr> -<td><strong>query</strong></td> -<td style="text-align: center;">!X</td> -<td>Query</td> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/InputPhoto">InputPhoto</a>></td> +<td>Input photos to delete</td> </tr> </tbody> </table> <h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> -<p>X</p> -<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> +<p>Method returns a list of successfully deleted photos in <a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>></p></div> </div> diff --git a/data/core.telegram.org/method/channels.deleteMessages b/data/core.telegram.org/method/photos.getUserPhotos similarity index 79% rename from data/core.telegram.org/method/channels.deleteMessages rename to data/core.telegram.org/method/photos.getUserPhotos index 5777636044..210930d62c 100644 --- a/data/core.telegram.org/method/channels.deleteMessages +++ b/data/core.telegram.org/method/photos.getUserPhotos @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>channels.deleteMessages</title> + <title>photos.getUserPhotos</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Delete messages in a channel/supergroup"> - <meta property="og:title" content="channels.deleteMessages"> + <meta property="description" content="Returns the list of user photos."> + <meta property="og:title" content="photos.getUserPhotos"> <meta property="og:image" content=""> - <meta property="og:description" content="Delete messages in a channel/supergroup"> + <meta property="og:description" content="Returns the list of user photos."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/channels.deleteMessages" >channels.deleteMessages</a></li></ul></div> - <h1 id="dev_page_title">channels.deleteMessages</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/photos.getUserPhotos" >photos.getUserPhotos</a></li></ul></div> + <h1 id="dev_page_title">photos.getUserPhotos</h1> - <div id="dev_page_content"><p>Delete messages in a <a href="/api/channel">channel/supergroup</a></p> + <div id="dev_page_content"><p>Returns the list of user photos.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,10 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.affectedMessages" >messages.affectedMessages</a>#84d19185 pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>; +<pre class="page_scheme"><code><a href="/constructor/photos.photos" >photos.photos</a>#8dca6aa5 photos:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Photo" >Photo</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/photos.Photos" >photos.Photos</a>; +<a href="/constructor/photos.photosSlice" >photos.photosSlice</a>#15051f54 count:<a href="/type/int" >int</a> photos:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Photo" >Photo</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/photos.Photos" >photos.Photos</a>; ---functions--- -<a href="/method/channels.deleteMessages" class="current_page_link" >channels.deleteMessages</a>#84c1fd4e channel:<a href="/type/InputChannel" >InputChannel</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>;</code></pre></p> +<a href="/method/photos.getUserPhotos" class="current_page_link" >photos.getUserPhotos</a>#91cd32a8 user_id:<a href="/type/InputUser" >InputUser</a> offset:<a href="/type/int" >int</a> max_id:<a href="/type/long" >long</a> limit:<a href="/type/int" >int</a> = <a href="/type/photos.Photos" >photos.Photos</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> @@ -66,19 +67,29 @@ </thead> <tbody> <tr> -<td><strong>channel</strong></td> -<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> -<td><a href="/api/channel">Channel/supergroup</a></td> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> +<td>User ID</td> </tr> <tr> -<td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> -<td>IDs of messages to delete</td> +<td><strong>offset</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of list elements to be skipped</td> +</tr> +<tr> +<td><strong>max_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>If a positive value was transferred, the method will return only photos with IDs less than the set one</td> +</tr> +<tr> +<td><strong>limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Number of list elements to be returned</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.AffectedMessages">messages.AffectedMessages</a></p> +<p><a href="/type/photos.Photos">photos.Photos</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> @@ -91,30 +102,22 @@ <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>403</td> -<td>MESSAGE_DELETE_FORBIDDEN</td> -<td>You can't delete one of the messages you tried to delete, most likely because it is a service message.</td> +<td>MAX_ID_INVALID</td> +<td>The provided max ID is invalid.</td> </tr> <tr> <td>400</td> <td>MSG_ID_INVALID</td> <td>Invalid message ID provided.</td> </tr> +<tr> +<td>400</td> +<td>USER_ID_INVALID</td> +<td>The provided user ID is invalid.</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> -<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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> -<p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> +<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> diff --git a/data/core.telegram.org/method/stats.getBroadcastStats b/data/core.telegram.org/method/stats.getBroadcastStats new file mode 100644 index 0000000000..069ce9bb0f --- /dev/null +++ b/data/core.telegram.org/method/stats.getBroadcastStats @@ -0,0 +1,194 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>stats.getBroadcastStats</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get channel statistics"> + <meta property="og:title" content="stats.getBroadcastStats"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get channel statistics"> + <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?215" 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/stats.getBroadcastStats" >stats.getBroadcastStats</a></li></ul></div> + <h1 id="dev_page_title">stats.getBroadcastStats</h1> + + <div id="dev_page_content"><p>Get <a href="/api/stats">channel statistics</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/stats.broadcastStats" >stats.broadcastStats</a>#bdf78394 period:<a href="/type/StatsDateRangeDays" >StatsDateRangeDays</a> followers:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> views_per_post:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> shares_per_post:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> enabled_notifications:<a href="/type/StatsPercentValue" >StatsPercentValue</a> growth_graph:<a href="/type/StatsGraph" >StatsGraph</a> followers_graph:<a href="/type/StatsGraph" >StatsGraph</a> mute_graph:<a href="/type/StatsGraph" >StatsGraph</a> top_hours_graph:<a href="/type/StatsGraph" >StatsGraph</a> interactions_graph:<a href="/type/StatsGraph" >StatsGraph</a> iv_interactions_graph:<a href="/type/StatsGraph" >StatsGraph</a> views_by_source_graph:<a href="/type/StatsGraph" >StatsGraph</a> new_followers_by_source_graph:<a href="/type/StatsGraph" >StatsGraph</a> languages_graph:<a href="/type/StatsGraph" >StatsGraph</a> recent_message_interactions:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageInteractionCounters" >MessageInteractionCounters</a>> = <a href="/type/stats.BroadcastStats" >stats.BroadcastStats</a>; +---functions--- +<a href="/method/stats.getBroadcastStats" class="current_page_link" >stats.getBroadcastStats</a>#ab42441a flags:<a href="/type/%23" >#</a> dark:flags.0?true channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/stats.BroadcastStats" >stats.BroadcastStats</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>dark</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 to enable dark theme for graph colors</td> +</tr> +<tr> +<td><strong>channel</strong></td> +<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> +<td>The channel</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/stats.BroadcastStats">stats.BroadcastStats</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>BROADCAST_REQUIRED</td> +<td>This method can only be called on a channel, please use stats.getMegagroupStats for supergroups.</td> +</tr> +<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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</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="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> +<p>Telegram offers detailed channel statistics for channels and supergroups.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/stats.loadAsyncGraph b/data/core.telegram.org/method/stats.loadAsyncGraph new file mode 100644 index 0000000000..e73034a5ea --- /dev/null +++ b/data/core.telegram.org/method/stats.loadAsyncGraph @@ -0,0 +1,193 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>stats.loadAsyncGraph</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Load channel statistics graph asynchronously"> + <meta property="og:title" content="stats.loadAsyncGraph"> + <meta property="og:image" content=""> + <meta property="og:description" content="Load channel statistics graph asynchronously"> + <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?215" 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/stats.loadAsyncGraph" >stats.loadAsyncGraph</a></li></ul></div> + <h1 id="dev_page_title">stats.loadAsyncGraph</h1> + + <div id="dev_page_content"><p>Load <a href="/api/stats">channel statistics graph</a> asynchronously</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/statsGraphAsync" >statsGraphAsync</a>#4a27eb2d token:<a href="/type/string" >string</a> = <a href="/type/StatsGraph" >StatsGraph</a>; +<a href="/constructor/statsGraphError" >statsGraphError</a>#bedc9822 error:<a href="/type/string" >string</a> = <a href="/type/StatsGraph" >StatsGraph</a>; +<a href="/constructor/statsGraph" >statsGraph</a>#8ea464b6 flags:<a href="/type/%23" >#</a> json:<a href="/type/DataJSON" >DataJSON</a> zoom_token:flags.0?<a href="/type/string" >string</a> = <a href="/type/StatsGraph" >StatsGraph</a>; +---functions--- +<a href="/method/stats.loadAsyncGraph" class="current_page_link" >stats.loadAsyncGraph</a>#621d5fa0 flags:<a href="/type/%23" >#</a> token:<a href="/type/string" >string</a> x:flags.0?<a href="/type/long" >long</a> = <a href="/type/StatsGraph" >StatsGraph</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>token</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Graph token from <a href="/constructor/statsGraphAsync">statsGraphAsync</a> constructor</td> +</tr> +<tr> +<td><strong>x</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/long">long</a></td> +<td>Zoom value, if required</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/StatsGraph">StatsGraph</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>GRAPH_EXPIRED_RELOAD</td> +<td>This graph has expired, please obtain a new graph token.</td> +</tr> +<tr> +<td>400</td> +<td>GRAPH_INVALID_RELOAD</td> +<td>Invalid graph token provided, please reload the stats and provide the updated token.</td> +</tr> +<tr> +<td>400</td> +<td>GRAPH_OUTDATED_RELOAD</td> +<td>The graph is outdated, please get a new async token using stats.getBroadcastStats.</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="#statsgraphasync" id="statsgraphasync" name="statsgraphasync"><i class="anchor-icon"></i></a><a href="/constructor/statsGraphAsync">statsGraphAsync</a></h4> +<p>This <a href="/api/stats">channel statistics graph</a> must be generated asynchronously using <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a> to reduce server load</p> +<h4><a class="anchor" href="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> +<p>Telegram offers detailed channel statistics for channels and supergroups.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/stickers.createStickerSet b/data/core.telegram.org/method/stickers.createStickerSet deleted file mode 100644 index 49dedfb447..0000000000 --- a/data/core.telegram.org/method/stickers.createStickerSet +++ /dev/null @@ -1,282 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>stickers.createStickerSet</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Create a stickerset, bots only."> - <meta property="og:title" content="stickers.createStickerSet"> - <meta property="og:image" content=""> - <meta property="og:description" content="Create a stickerset, bots only."> - <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?215" 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/stickers.createStickerSet" >stickers.createStickerSet</a></li></ul></div> - <h1 id="dev_page_title">stickers.createStickerSet</h1> - - <div id="dev_page_content"><p>Create a stickerset, bots only.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/messages.stickerSet" >messages.stickerSet</a>#b60a24a6 set:<a href="/type/StickerSet" >StickerSet</a> packs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerPack" >StickerPack</a>> documents:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>; ----functions--- -<a href="/method/stickers.createStickerSet" class="current_page_link" >stickers.createStickerSet</a>#9021ab67 flags:<a href="/type/%23" >#</a> masks:flags.0?true animated:flags.1?true videos:flags.4?true user_id:<a href="/type/InputUser" >InputUser</a> title:<a href="/type/string" >string</a> short_name:<a href="/type/string" >string</a> thumb:flags.2?<a href="/type/InputDocument" >InputDocument</a> stickers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputStickerSetItem" >InputStickerSetItem</a>> software:flags.3?<a href="/type/string" >string</a> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>;</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>masks</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 this is a mask stickerset</td> -</tr> -<tr> -<td><strong>animated</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>Whether this is an animated stickerset</td> -</tr> -<tr> -<td><strong>user_id</strong></td> -<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> -<td>Stickerset owner</td> -</tr> -<tr> -<td><strong>title</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Stickerset name, <code>1-64</code> chars</td> -</tr> -<tr> -<td><strong>short_name</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Sticker set name. Can contain only English letters, digits and underscores. Must end with <em>"</em>by<em><bot username="">"</bot></em> (<em><bot_username></bot_username></em> is case insensitive); 1-64 characters</td> -</tr> -<tr> -<td><strong>thumb</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/InputDocument">InputDocument</a></td> -<td>Thumbnail</td> -</tr> -<tr> -<td><strong>stickers</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/InputStickerSetItem">InputStickerSetItem</a>></td> -<td>Stickers</td> -</tr> -<tr> -<td><strong>software</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td> -<td>Used when <a href="/import-stickers">importing stickers using the sticker import SDKs</a>, specifies the name of the software that created the stickers</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.StickerSet">messages.StickerSet</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>BOT_MISSING</td> -<td>This method can only be run by a bot.</td> -</tr> -<tr> -<td>400</td> -<td>PACK_SHORT_NAME_INVALID</td> -<td>Short pack name invalid.</td> -</tr> -<tr> -<td>400</td> -<td>PACK_SHORT_NAME_OCCUPIED</td> -<td>A stickerpack with this name already exists.</td> -</tr> -<tr> -<td>400</td> -<td>PACK_TITLE_INVALID</td> -<td>The stickerpack title 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>SHORTNAME_OCCUPY_FAILED</td> -<td>An internal error occurred.</td> -</tr> -<tr> -<td>400</td> -<td>STICKERS_EMPTY</td> -<td>No sticker provided.</td> -</tr> -<tr> -<td>400</td> -<td>STICKER_EMOJI_INVALID</td> -<td>Sticker emoji invalid.</td> -</tr> -<tr> -<td>400</td> -<td>STICKER_FILE_INVALID</td> -<td>Sticker file invalid.</td> -</tr> -<tr> -<td>400</td> -<td>STICKER_PNG_DIMENSIONS</td> -<td>Sticker png dimensions invalid.</td> -</tr> -<tr> -<td>400</td> -<td>STICKER_PNG_NOPNG</td> -<td>One of the specified stickers is not a valid PNG file.</td> -</tr> -<tr> -<td>400</td> -<td>STICKER_TGS_NODOC</td> -<td>Incorrect document type for sticker.</td> -</tr> -<tr> -<td>400</td> -<td>STICKER_TGS_NOTGS</td> -<td>Invalid TGS sticker provided.</td> -</tr> -<tr> -<td>400</td> -<td>STICKER_THUMB_PNG_NOPNG</td> -<td>Incorrect stickerset thumb file provided, PNG / WEBP expected.</td> -</tr> -<tr> -<td>400</td> -<td>STICKER_THUMB_TGS_NOTGS</td> -<td>Incorrect stickerset TGS thumb file provided.</td> -</tr> -<tr> -<td>400</td> -<td>USER_ID_INVALID</td> -<td>The provided user ID is invalid.</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/core.telegram.org/method/upload.saveFilePart b/data/core.telegram.org/method/upload.saveFilePart new file mode 100644 index 0000000000..f70f3ead83 --- /dev/null +++ b/data/core.telegram.org/method/upload.saveFilePart @@ -0,0 +1,183 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>upload.saveFilePart</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Saves a part of file for futher sending to one of the methods."> + <meta property="og:title" content="upload.saveFilePart"> + <meta property="og:image" content=""> + <meta property="og:description" content="Saves a part of file for futher sending to one of the methods."> + <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?215" 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/upload.saveFilePart" >upload.saveFilePart</a></li></ul></div> + <h1 id="dev_page_title">upload.saveFilePart</h1> + + <div id="dev_page_content"><p>Saves a part of file for futher sending to one of the methods.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/upload.saveFilePart" class="current_page_link" >upload.saveFilePart</a>#b304a621 file_id:<a href="/type/long" >long</a> file_part:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/Bool" >Bool</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>file_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Random file identifier created by the client</td> +</tr> +<tr> +<td><strong>file_part</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Numerical order of a part</td> +</tr> +<tr> +<td><strong>bytes</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Binary data, contend of a part</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/Bool">Bool</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>FILE_PART_EMPTY</td> +<td>The provided file part is empty.</td> +</tr> +<tr> +<td>400</td> +<td>FILE_PART_INVALID</td> +<td>The file part number is invalid.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/users.getFullUser b/data/core.telegram.org/method/users.getFullUser similarity index 98% rename from data/corefork.telegram.org/method/users.getFullUser rename to data/core.telegram.org/method/users.getFullUser index d176af7f69..2c49abe91b 100644 --- a/data/corefork.telegram.org/method/users.getFullUser +++ b/data/core.telegram.org/method/users.getFullUser @@ -140,9 +140,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -159,7 +159,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/methods.html b/data/core.telegram.org/methods.html new file mode 100644 index 0000000000..1b0c6e7f5a --- /dev/null +++ b/data/core.telegram.org/methods.html @@ -0,0 +1,2306 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Methods</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Full list of MTProto API methods"> + <meta property="og:title" content="Methods"> + <meta property="og:image" content=""> + <meta property="og:description" content="Full list of MTProto API methods"> + <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?215" 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" >Methods</a></li></ul></div> + <h1 id="dev_page_title">Methods</h1> + + <div id="dev_page_content"><h3><a class="anchor" name="accepting-the-terms-of-service" href="#accepting-the-terms-of-service"><i class="anchor-icon"></i></a>Accepting the <a href="https://telegram.org/tos">Terms of Service</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/help.getTermsOfServiceUpdate">help.getTermsOfServiceUpdate</a></td> +<td>Look for updates of telegram's terms of service</td> +</tr> +<tr> +<td><a href="/method/help.acceptTermsOfService">help.acceptTermsOfService</a></td> +<td>Accept the new terms of service</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="dealing-with-spam-and-tos-violations" href="#dealing-with-spam-and-tos-violations"><i class="anchor-icon"></i></a>Dealing with spam and ToS violations</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.reportPeer">account.reportPeer</a></td> +<td>Report a peer for violation of telegram's Terms of Service</td> +</tr> +<tr> +<td><a href="/method/account.reportProfilePhoto">account.reportProfilePhoto</a></td> +<td>Report a profile photo of a dialog</td> +</tr> +<tr> +<td><a href="/method/channels.reportSpam">channels.reportSpam</a></td> +<td>Reports some messages from a user in a supergroup as spam; requires administrator rights in the supergroup</td> +</tr> +<tr> +<td><a href="/method/messages.report">messages.report</a></td> +<td>Report a message in a chat for violation of telegram's Terms of Service</td> +</tr> +<tr> +<td><a href="/method/messages.reportSpam">messages.reportSpam</a></td> +<td>Report a new incoming chat for spam, if the <a href="/constructor/peerSettings">peer settings</a> of the chat allow us to do that</td> +</tr> +<tr> +<td><a href="/method/messages.reportEncryptedSpam">messages.reportEncryptedSpam</a></td> +<td>Report a secret chat for spam</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="fetching-configuration" href="#fetching-configuration"><i class="anchor-icon"></i></a>Fetching <a href="/api/config">configuration</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/help.getAppChangelog">help.getAppChangelog</a></td> +<td>Get changelog of current app.<br>Typically, an <a href="/constructor/updates">updates</a> constructor will be returned, containing one or more <a href="/constructor/updateServiceNotification">updateServiceNotification</a> updates with app-specific changelogs.</td> +</tr> +<tr> +<td><a href="/method/help.getAppConfig">help.getAppConfig</a></td> +<td>Get app-specific configuration, see <a href="/api/config#client-configuration">client configuration</a> for more info on the result.</td> +</tr> +<tr> +<td><a href="/method/help.getAppUpdate">help.getAppUpdate</a></td> +<td>Returns information on update availability for the current application.</td> +</tr> +<tr> +<td><a href="/method/help.getConfig">help.getConfig</a></td> +<td>Returns current configuration, including data center configuration.</td> +</tr> +<tr> +<td><a href="/method/help.getInviteText">help.getInviteText</a></td> +<td>Returns localized text of a text message with an invitation.</td> +</tr> +<tr> +<td><a href="/method/help.getNearestDc">help.getNearestDc</a></td> +<td>Returns info on data centre nearest to the user.</td> +</tr> +<tr> +<td><a href="/method/help.getSupport">help.getSupport</a></td> +<td>Returns the support user for the 'ask a question' feature.</td> +</tr> +<tr> +<td><a href="/method/help.getSupportName">help.getSupportName</a></td> +<td>Get localized name of the telegram support user</td> +</tr> +<tr> +<td><a href="/method/help.getCountriesList">help.getCountriesList</a></td> +<td>Get name, ISO code, localized name and phone codes/patterns of all available countries</td> +</tr> +<tr> +<td><a href="/method/help.dismissSuggestion">help.dismissSuggestion</a></td> +<td>Dismiss a <a href="/api/config#suggestions">suggestion, see here for more info »</a>.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="login-via-qr-code" href="#login-via-qr-code"><i class="anchor-icon"></i></a>Login via <a href="/api/qr-login">QR code</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/auth.exportLoginToken">auth.exportLoginToken</a></td> +<td>Generate a login token, for <a href="/api/qr-login">login via QR code</a>.<br>The generated login token should be encoded using base64url, then shown as a <code>tg://login?token=base64encodedtoken</code> URL in the QR code.<br><br>For more info, see <a href="/api/qr-login">login via QR code</a>.</td> +</tr> +<tr> +<td><a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</a></td> +<td>Accept QR code login token, logging in the app that generated it.<br><br>Returns info about the new session.<br><br>For more info, see <a href="/api/qr-login">login via QR code</a>.</td> +</tr> +<tr> +<td><a href="/method/auth.importLoginToken">auth.importLoginToken</a></td> +<td>Login using a redirected login token, generated in case of DC mismatch during <a href="/api/qr-login">QR code login</a>.<br><br>For more info, see <a href="/api/qr-login">login via QR code</a>.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="miscellaneous" href="#miscellaneous"><i class="anchor-icon"></i></a>Miscellaneous</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/help.saveAppLog">help.saveAppLog</a></td> +<td>Saves logs of application on the server.</td> +</tr> +<tr> +<td><a href="/method/initConnection">initConnection</a></td> +<td>Initialize connection</td> +</tr> +<tr> +<td><a href="/method/invokeAfterMsg">invokeAfterMsg</a></td> +<td>Invokes a query after successfull completion of one of the previous queries.</td> +</tr> +<tr> +<td><a href="/method/invokeAfterMsgs">invokeAfterMsgs</a></td> +<td>Invokes a query after a successfull completion of previous queries</td> +</tr> +<tr> +<td><a href="/method/invokeWithLayer">invokeWithLayer</a></td> +<td>Invoke the specified query using the specified API <a href="/api/invoking#layers">layer</a></td> +</tr> +<tr> +<td><a href="/method/invokeWithoutUpdates">invokeWithoutUpdates</a></td> +<td>Invoke a request without subscribing the used connection for <a href="/api/updates">updates</a> (this is enabled by default for <a href="/api/files">file queries</a>).</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="registration-authorization" href="#registration-authorization"><i class="anchor-icon"></i></a>Registration/Authorization</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/auth.bindTempAuthKey">auth.bindTempAuthKey</a></td> +<td>Binds a temporary authorization key <code>temp_auth_key_id</code> to the permanent authorization key <code>perm_auth_key_id</code>. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one.<br><br>For more information, see <a href="/api/pfs">Perfect Forward Secrecy</a>.</td> +</tr> +<tr> +<td><a href="/method/auth.cancelCode">auth.cancelCode</a></td> +<td>Cancel the login verification code</td> +</tr> +<tr> +<td><a href="/method/auth.checkPassword">auth.checkPassword</a></td> +<td>Try logging to an account protected by a <a href="/api/srp">2FA password</a>.</td> +</tr> +<tr> +<td><a href="/method/account.resetPassword">account.resetPassword</a></td> +<td>Initiate a 2FA password reset: can only be used if the user is already logged-in, <a href="/api/srp#password-reset">see here for more info »</a></td> +</tr> +<tr> +<td><a href="/method/auth.checkRecoveryPassword">auth.checkRecoveryPassword</a></td> +<td>Check if the <a href="/api/srp">2FA recovery code</a> sent using <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a> is valid, before passing it to <a href="/method/auth.recoverPassword">auth.recoverPassword</a>.</td> +</tr> +<tr> +<td><a href="/method/auth.dropTempAuthKeys">auth.dropTempAuthKeys</a></td> +<td>Delete all temporary authorization keys <strong>except for</strong> the ones specified</td> +</tr> +<tr> +<td><a href="/method/auth.exportAuthorization">auth.exportAuthorization</a></td> +<td>Returns data for copying authorization to another data-centre.</td> +</tr> +<tr> +<td><a href="/method/auth.importAuthorization">auth.importAuthorization</a></td> +<td>Logs in a user using a key transmitted from his native data-centre.</td> +</tr> +<tr> +<td><a href="/method/auth.importBotAuthorization">auth.importBotAuthorization</a></td> +<td>Login as a bot</td> +</tr> +<tr> +<td><a href="/method/auth.logOut">auth.logOut</a></td> +<td>Logs out the user.</td> +</tr> +<tr> +<td><a href="/method/auth.recoverPassword">auth.recoverPassword</a></td> +<td>Reset the <a href="/api/srp">2FA password</a> using the recovery code sent using <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a>.</td> +</tr> +<tr> +<td><a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a></td> +<td>Request recovery code of a <a href="/api/srp">2FA password</a>, only for accounts with a <a href="/api/srp#email-verification">recovery email configured</a>.</td> +</tr> +<tr> +<td><a href="/method/auth.resendCode">auth.resendCode</a></td> +<td>Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see <a href="/api/auth">login</a> for more info.</td> +</tr> +<tr> +<td><a href="/method/auth.resetAuthorizations">auth.resetAuthorizations</a></td> +<td>Terminates all user's authorized sessions except for the current one.<br><br>After calling this method it is necessary to reregister the current device using the method <a href="/method/account.registerDevice">account.registerDevice</a></td> +</tr> +<tr> +<td><a href="/method/auth.sendCode">auth.sendCode</a></td> +<td>Send the verification code for login</td> +</tr> +<tr> +<td><a href="/method/auth.signIn">auth.signIn</a></td> +<td>Signs in a user with a validated phone number.</td> +</tr> +<tr> +<td><a href="/method/auth.signUp">auth.signUp</a></td> +<td>Registers a validated phone number in the system.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-gdpr-export" href="#working-with-gdpr-export"><i class="anchor-icon"></i></a>Working with GDPR export</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.initTakeoutSession">account.initTakeoutSession</a></td> +<td>Initialize account takeout session</td> +</tr> +<tr> +<td><a href="/method/account.finishTakeoutSession">account.finishTakeoutSession</a></td> +<td>Finish account takeout session</td> +</tr> +<tr> +<td><a href="/method/messages.getSplitRanges">messages.getSplitRanges</a></td> +<td>Get message ranges for saving the user's chat history</td> +</tr> +<tr> +<td><a href="/method/channels.getLeftChannels">channels.getLeftChannels</a></td> +<td>Get a list of <a href="/api/channel">channels/supergroups</a> we left</td> +</tr> +<tr> +<td><a href="/method/invokeWithMessagesRange">invokeWithMessagesRange</a></td> +<td>Invoke with the given message range</td> +</tr> +<tr> +<td><a href="/method/invokeWithTakeout">invokeWithTakeout</a></td> +<td>Invoke a method within a takeout session</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-gifs-actually-mpeg4-gifs" href="#working-with-gifs-actually-mpeg4-gifs"><i class="anchor-icon"></i></a>Working with GIFs (actually MPEG4 GIFs)</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getSavedGifs">messages.getSavedGifs</a></td> +<td>Get saved GIFs</td> +</tr> +<tr> +<td><a href="/method/messages.saveGif">messages.saveGif</a></td> +<td>Add GIF to saved gifs list</td> +</tr> +<tr> +<td><a href="/method/messages.searchGifs">messages.searchGifs</a></td> +<td>Search for GIFs</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-public-service-announcement-and-mtproxy-channels" href="#working-with-public-service-announcement-and-mtproxy-channels"><i class="anchor-icon"></i></a>Working with Public Service Announcement and MTProxy channels</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/help.hidePromoData">help.hidePromoData</a></td> +<td>Hide MTProxy/Public Service Announcement information</td> +</tr> +<tr> +<td><a href="/method/help.getPromoData">help.getPromoData</a></td> +<td>Get MTProxy/Public Service Announcement information</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-tsf-internal-use-only" href="#working-with-tsf-internal-use-only"><i class="anchor-icon"></i></a>Working with TSF (internal use only)</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/help.editUserInfo">help.editUserInfo</a></td> +<td>Internal use</td> +</tr> +<tr> +<td><a href="/method/help.getUserInfo">help.getUserInfo</a></td> +<td>Internal use</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-2fa-login" href="#working-with-2fa-login"><i class="anchor-icon"></i></a>Working with <a href="/api/srp">2FA login</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.confirmPasswordEmail">account.confirmPasswordEmail</a></td> +<td>Verify an email to use as <a href="/api/srp">2FA recovery method</a>.</td> +</tr> +<tr> +<td><a href="/method/account.resendPasswordEmail">account.resendPasswordEmail</a></td> +<td>Resend the code to verify an email to use as <a href="/api/srp">2FA recovery method</a>.</td> +</tr> +<tr> +<td><a href="/method/account.cancelPasswordEmail">account.cancelPasswordEmail</a></td> +<td>Cancel the code that was sent to verify an email to use as <a href="/api/srp">2FA recovery method</a>.</td> +</tr> +<tr> +<td><a href="/method/account.getPassword">account.getPassword</a></td> +<td>Obtain configuration for two-factor authorization with password</td> +</tr> +<tr> +<td><a href="/method/account.getPasswordSettings">account.getPasswordSettings</a></td> +<td>Get private info associated to the password info (recovery email, telegram <a href="/passport">passport</a> info & so on)</td> +</tr> +<tr> +<td><a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a></td> +<td>Set a new 2FA password</td> +</tr> +<tr> +<td><a href="/method/account.declinePasswordReset">account.declinePasswordReset</a></td> +<td>Abort a pending 2FA password reset, <a href="/api/srp#password-reset">see here for more info »</a></td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-seamless-telegram-login" href="#working-with-seamless-telegram-login"><i class="anchor-icon"></i></a>Working with <a href="/api/url-authorization">Seamless Telegram Login</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a></td> +<td>Get more info about a Seamless Telegram Login authorization request, for more info <a href="/api/url-authorization">click here »</a></td> +</tr> +<tr> +<td><a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a></td> +<td>Use this to accept a Seamless Telegram Login authorization request, for more info <a href="/api/url-authorization">click here »</a></td> +</tr> +<tr> +<td><a href="/method/account.getWebAuthorizations">account.getWebAuthorizations</a></td> +<td>Get web <a href="/widgets/login">login widget</a> authorizations</td> +</tr> +<tr> +<td><a href="/method/account.resetWebAuthorization">account.resetWebAuthorization</a></td> +<td>Log out an active web <a href="/widgets/login">telegram login</a> session</td> +</tr> +<tr> +<td><a href="/method/account.resetWebAuthorizations">account.resetWebAuthorizations</a></td> +<td>Reset all active web <a href="/widgets/login">telegram login</a> sessions</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-voip-calls" href="#working-with-voip-calls"><i class="anchor-icon"></i></a>Working with <a href="/api/end-to-end/voice-calls">VoIP calls</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/phone.acceptCall">phone.acceptCall</a></td> +<td>Accept incoming call</td> +</tr> +<tr> +<td><a href="/method/phone.confirmCall">phone.confirmCall</a></td> +<td><a href="/api/end-to-end/voice-calls">Complete phone call E2E encryption key exchange »</a></td> +</tr> +<tr> +<td><a href="/method/phone.discardCall">phone.discardCall</a></td> +<td>Refuse or end running call</td> +</tr> +<tr> +<td><a href="/method/phone.getCallConfig">phone.getCallConfig</a></td> +<td>Get phone call configuration to be passed to libtgvoip's shared config</td> +</tr> +<tr> +<td><a href="/method/phone.receivedCall">phone.receivedCall</a></td> +<td>Optional: notify the server that the user is currently busy in a call: this will automatically refuse all incoming phone calls until the current phone call is ended.</td> +</tr> +<tr> +<td><a href="/method/phone.requestCall">phone.requestCall</a></td> +<td>Start a telegram phone call</td> +</tr> +<tr> +<td><a href="/method/phone.saveCallDebug">phone.saveCallDebug</a></td> +<td>Send phone call debug data to server</td> +</tr> +<tr> +<td><a href="/method/phone.sendSignalingData">phone.sendSignalingData</a></td> +<td>Send VoIP signaling data</td> +</tr> +<tr> +<td><a href="/method/phone.setCallRating">phone.setCallRating</a></td> +<td>Rate a call</td> +</tr> +<tr> +<td><a href="/method/messages.deletePhoneCallHistory">messages.deletePhoneCallHistory</a></td> +<td>Delete the entire phone call history.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-channels-supergroups-geogroups" href="#working-with-channels-supergroups-geogroups"><i class="anchor-icon"></i></a>Working with <a href="/api/channel">channels/supergroups/geogroups</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/channels.createChannel">channels.createChannel</a></td> +<td>Create a <a href="/api/channel">supergroup/channel</a>.</td> +</tr> +<tr> +<td><a href="/method/channels.getInactiveChannels">channels.getInactiveChannels</a></td> +<td>Get inactive channels and supergroups</td> +</tr> +<tr> +<td><a href="/method/channels.deleteChannel">channels.deleteChannel</a></td> +<td>Delete a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.deleteHistory">channels.deleteHistory</a></td> +<td>Delete the history of a <a href="/api/channel">supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.deleteMessages">channels.deleteMessages</a></td> +<td>Delete messages in a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.deleteUserHistory">channels.deleteUserHistory</a></td> +<td>Delete all messages sent by a certain user in a <a href="/api/channel">supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.editAdmin">channels.editAdmin</a></td> +<td>Modify the admin rights of a user in a <a href="/api/channel">supergroup/channel</a>.</td> +</tr> +<tr> +<td><a href="/method/channels.editBanned">channels.editBanned</a></td> +<td>Ban/unban/kick a user in a <a href="/api/channel">supergroup/channel</a>.</td> +</tr> +<tr> +<td><a href="/method/channels.editCreator">channels.editCreator</a></td> +<td>Transfer channel ownership</td> +</tr> +<tr> +<td><a href="/method/channels.editLocation">channels.editLocation</a></td> +<td>Edit location of geogroup</td> +</tr> +<tr> +<td><a href="/method/channels.editPhoto">channels.editPhoto</a></td> +<td>Change the photo of a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.editTitle">channels.editTitle</a></td> +<td>Edit the name of a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.exportMessageLink">channels.exportMessageLink</a></td> +<td>Get link and embed info of a message in a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.getAdminLog">channels.getAdminLog</a></td> +<td>Get the admin log of a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.getAdminedPublicChannels">channels.getAdminedPublicChannels</a></td> +<td>Get <a href="/api/channel">channels/supergroups/geogroups</a> we're admin in. Usually called when the user exceeds the <a href="/constructor/config">limit</a> for owned public <a href="/api/channel">channels/supergroups/geogroups</a>, and the user is given the choice to remove one of his channels/supergroups/geogroups.</td> +</tr> +<tr> +<td><a href="/method/channels.getChannels">channels.getChannels</a></td> +<td>Get info about <a href="/api/channel">channels/supergroups</a></td> +</tr> +<tr> +<td><a href="/method/channels.getFullChannel">channels.getFullChannel</a></td> +<td>Get full info about a channel</td> +</tr> +<tr> +<td><a href="/method/channels.getGroupsForDiscussion">channels.getGroupsForDiscussion</a></td> +<td>Get all groups that can be used as <a href="/api/discussion">discussion groups</a>.<br><br>Returned <a href="/api/channel">legacy group chats</a> must be first upgraded to <a href="/api/channel">supergroups</a> before they can be set as a discussion group.<br>To set a returned supergroup as a discussion group, access to its old messages must be enabled using <a href="/method/channels.togglePreHistoryHidden">channels.togglePreHistoryHidden</a>, first.</td> +</tr> +<tr> +<td><a href="/method/channels.getMessages">channels.getMessages</a></td> +<td>Get <a href="/api/channel">channel/supergroup</a> messages</td> +</tr> +<tr> +<td><a href="/method/channels.getParticipant">channels.getParticipant</a></td> +<td>Get info about a <a href="/api/channel">channel/supergroup</a> participant</td> +</tr> +<tr> +<td><a href="/method/channels.getParticipants">channels.getParticipants</a></td> +<td>Get the participants of a <a href="/api/channel">supergroup/channel</a></td> +</tr> +<tr> +<td><a href="/method/channels.inviteToChannel">channels.inviteToChannel</a></td> +<td>Invite users to a channel/supergroup</td> +</tr> +<tr> +<td><a href="/method/channels.joinChannel">channels.joinChannel</a></td> +<td>Join a channel/supergroup</td> +</tr> +<tr> +<td><a href="/method/channels.leaveChannel">channels.leaveChannel</a></td> +<td>Leave a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.readHistory">channels.readHistory</a></td> +<td>Mark <a href="/api/channel">channel/supergroup</a> history as read</td> +</tr> +<tr> +<td><a href="/method/channels.readMessageContents">channels.readMessageContents</a></td> +<td>Mark <a href="/api/channel">channel/supergroup</a> message contents as read</td> +</tr> +<tr> +<td><a href="/method/channels.setDiscussionGroup">channels.setDiscussionGroup</a></td> +<td>Associate a group to a channel as <a href="/api/discussion">discussion group</a> for that channel</td> +</tr> +<tr> +<td><a href="/method/channels.setStickers">channels.setStickers</a></td> +<td>Associate a stickerset to the supergroup</td> +</tr> +<tr> +<td><a href="/method/channels.togglePreHistoryHidden">channels.togglePreHistoryHidden</a></td> +<td>Hide/unhide message history for new channel/supergroup users</td> +</tr> +<tr> +<td><a href="/method/channels.toggleSignatures">channels.toggleSignatures</a></td> +<td>Enable/disable message signatures in channels</td> +</tr> +<tr> +<td><a href="/method/channels.toggleSlowMode">channels.toggleSlowMode</a></td> +<td>Toggle supergroup slow mode: if enabled, users will only be able to send one message every <code>seconds</code> seconds</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-chats-supergroups-channels" href="#working-with-chats-supergroups-channels"><i class="anchor-icon"></i></a>Working with <a href="/api/channel">chats/supergroups/channels</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getMessageReadParticipants">messages.getMessageReadParticipants</a></td> +<td>Get which users read a specific message: only available for groups and supergroups with less than <code>chat_read_mark_size_threshold</code> members, read receipts will be stored for <code>chat_read_mark_expire_period</code> seconds after the message was sent, see <a href="/api/config#client-configuration">client configuration for more info »</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.addChatUser">messages.addChatUser</a></td> +<td>Adds a user to a chat and sends a service message on it.</td> +</tr> +<tr> +<td><a href="/method/messages.checkChatInvite">messages.checkChatInvite</a></td> +<td>Check the validity of a chat invite link and get basic info about it</td> +</tr> +<tr> +<td><a href="/method/messages.createChat">messages.createChat</a></td> +<td>Creates a new chat.</td> +</tr> +<tr> +<td><a href="/method/messages.deleteChatUser">messages.deleteChatUser</a></td> +<td>Deletes a user from a chat and sends a service message on it.</td> +</tr> +<tr> +<td><a href="/method/messages.editChatAbout">messages.editChatAbout</a></td> +<td>Edit the description of a <a href="/api/channel">group/supergroup/channel</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.editChatAdmin">messages.editChatAdmin</a></td> +<td>Make a user admin in a <a href="/api/channel">legacy group</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.editChatDefaultBannedRights">messages.editChatDefaultBannedRights</a></td> +<td>Edit the default banned rights of a <a href="/api/channel">channel/supergroup/group</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.editChatPhoto">messages.editChatPhoto</a></td> +<td>Changes chat photo and sends a service message on it</td> +</tr> +<tr> +<td><a href="/method/messages.editChatTitle">messages.editChatTitle</a></td> +<td>Chanages chat name and sends a service message on it.</td> +</tr> +<tr> +<td><a href="/method/messages.exportChatInvite">messages.exportChatInvite</a></td> +<td>Export an invite link for a chat</td> +</tr> +<tr> +<td><a href="/method/messages.getAllChats">messages.getAllChats</a></td> +<td>Get all chats, channels and supergroups</td> +</tr> +<tr> +<td><a href="/method/messages.getChats">messages.getChats</a></td> +<td>Returns chat basic info on their IDs.</td> +</tr> +<tr> +<td><a href="/method/messages.getAdminsWithInvites">messages.getAdminsWithInvites</a></td> +<td>Get info about chat invites generated by admins.</td> +</tr> +<tr> +<td><a href="/method/messages.deleteExportedChatInvite">messages.deleteExportedChatInvite</a></td> +<td>Delete a chat invite</td> +</tr> +<tr> +<td><a href="/method/messages.getChatInviteImporters">messages.getChatInviteImporters</a></td> +<td>Get info about the users that joined the chat using a specific chat invite</td> +</tr> +<tr> +<td><a href="/method/messages.deleteRevokedExportedChatInvites">messages.deleteRevokedExportedChatInvites</a></td> +<td>Delete all revoked chat invites</td> +</tr> +<tr> +<td><a href="/method/messages.deleteChat">messages.deleteChat</a></td> +<td>Delete a <a href="/api/channel">chat</a></td> +</tr> +<tr> +<td><a href="/method/messages.getCommonChats">messages.getCommonChats</a></td> +<td>Get chats in common with a user</td> +</tr> +<tr> +<td><a href="/method/messages.getFullChat">messages.getFullChat</a></td> +<td>Returns full chat info according to its ID.</td> +</tr> +<tr> +<td><a href="/method/messages.importChatInvite">messages.importChatInvite</a></td> +<td>Import a chat invite and join a private chat/supergroup/channel</td> +</tr> +<tr> +<td><a href="/method/messages.getExportedChatInvite">messages.getExportedChatInvite</a></td> +<td>Get info about a chat invite</td> +</tr> +<tr> +<td><a href="/method/messages.editExportedChatInvite">messages.editExportedChatInvite</a></td> +<td>Edit an exported chat invite</td> +</tr> +<tr> +<td><a href="/method/messages.getExportedChatInvites">messages.getExportedChatInvites</a></td> +<td>Get info about the chat invites of a specific chat</td> +</tr> +<tr> +<td><a href="/method/messages.migrateChat">messages.migrateChat</a></td> +<td>Turn a <a href="/api/channel">legacy group into a supergroup</a></td> +</tr> +<tr> +<td><a href="/method/channels.convertToGigagroup">channels.convertToGigagroup</a></td> +<td>Convert a <a href="/api/channel">supergroup</a> to a <a href="/api/channel">gigagroup</a>, when requested by <a href="/api/config#channel-suggestions">channel suggestions</a>.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-deep-links" href="#working-with-deep-links"><i class="anchor-icon"></i></a>Working with <a href="/bots#deep-linking">deep links</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.startBot">messages.startBot</a></td> +<td>Start a conversation with a bot using a <a href="/bots#deep-linking">deep linking parameter</a></td> +</tr> +<tr> +<td><a href="/method/help.getDeepLinkInfo">help.getDeepLinkInfo</a></td> +<td>Get info about a <code>t.me</code> link</td> +</tr> +<tr> +<td><a href="/method/help.getRecentMeUrls">help.getRecentMeUrls</a></td> +<td>Get recently used <code>t.me</code> links</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-files" href="#working-with-files"><i class="anchor-icon"></i></a>Working with <a href="/api/files">files</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/help.getCdnConfig">help.getCdnConfig</a></td> +<td>Get configuration for <a href="/cdn">CDN</a> file downloads.</td> +</tr> +<tr> +<td><a href="/method/upload.getCdnFile">upload.getCdnFile</a></td> +<td>Download a <a href="/cdn">CDN</a> file.</td> +</tr> +<tr> +<td><a href="/method/upload.getCdnFileHashes">upload.getCdnFileHashes</a></td> +<td>Get SHA256 hashes for verifying downloaded <a href="/cdn">CDN</a> files</td> +</tr> +<tr> +<td><a href="/method/upload.reuploadCdnFile">upload.reuploadCdnFile</a></td> +<td>Request a reupload of a certain file to a <a href="/cdn">CDN DC</a>.</td> +</tr> +<tr> +<td><a href="/method/upload.getFile">upload.getFile</a></td> +<td>Returns content of a whole file or its part.</td> +</tr> +<tr> +<td><a href="/method/upload.getFileHashes">upload.getFileHashes</a></td> +<td>Get SHA256 hashes for verifying downloaded files</td> +</tr> +<tr> +<td><a href="/method/upload.getWebFile">upload.getWebFile</a></td> +<td>Returns content of an HTTP file or a part, by proxying the request through telegram.</td> +</tr> +<tr> +<td><a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a></td> +<td>Saves a part of a large file (over 10Mb in size) to be later passed to one of the methods.</td> +</tr> +<tr> +<td><a href="/method/upload.saveFilePart">upload.saveFilePart</a></td> +<td>Saves a part of file for futher sending to one of the methods.</td> +</tr> +<tr> +<td><a href="/method/messages.uploadEncryptedFile">messages.uploadEncryptedFile</a></td> +<td>Upload encrypted file and associate it to a secret chat</td> +</tr> +<tr> +<td><a href="/method/messages.uploadMedia">messages.uploadMedia</a></td> +<td>Upload a file and associate it to a chat (without actually sending it to the chat)</td> +</tr> +<tr> +<td><a href="/method/messages.getDocumentByHash">messages.getDocumentByHash</a></td> +<td>Get a document by its SHA256 hash, mainly used for gifs</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-instant-view-pages" href="#working-with-instant-view-pages"><i class="anchor-icon"></i></a>Working with <a href="https://instantview.telegram.org">instant view pages</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getWebPage">messages.getWebPage</a></td> +<td>Get <a href="https://instantview.telegram.org">instant view</a> page</td> +</tr> +<tr> +<td><a href="/method/messages.getWebPagePreview">messages.getWebPagePreview</a></td> +<td>Get preview of webpage</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-secret-chats" href="#working-with-secret-chats"><i class="anchor-icon"></i></a>Working with <a href="/api/end-to-end">secret chats</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.setEncryptedTyping">messages.setEncryptedTyping</a></td> +<td>Send typing event by the current user to a secret chat.</td> +</tr> +<tr> +<td><a href="/method/messages.readEncryptedHistory">messages.readEncryptedHistory</a></td> +<td>Marks message history within a secret chat as read.</td> +</tr> +<tr> +<td><a href="/method/messages.acceptEncryption">messages.acceptEncryption</a></td> +<td>Confirms creation of a secret chat</td> +</tr> +<tr> +<td><a href="/method/messages.discardEncryption">messages.discardEncryption</a></td> +<td>Cancels a request for creation and/or delete info on secret chat.</td> +</tr> +<tr> +<td><a href="/method/messages.requestEncryption">messages.requestEncryption</a></td> +<td>Sends a request to start a secret chat to the user.</td> +</tr> +<tr> +<td><a href="/method/messages.sendEncrypted">messages.sendEncrypted</a></td> +<td>Sends a text message to a secret chat.</td> +</tr> +<tr> +<td><a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a></td> +<td>Sends a message with a file attachment to a secret chat</td> +</tr> +<tr> +<td><a href="/method/messages.sendEncryptedService">messages.sendEncryptedService</a></td> +<td>Sends a service message to a secret chat.</td> +</tr> +<tr> +<td><a href="/method/messages.getDhConfig">messages.getDhConfig</a></td> +<td>Returns configuration parameters for Diffie-Hellman key generation. Can also return a random sequence of bytes of required length.</td> +</tr> +<tr> +<td><a href="/method/messages.receivedQueue">messages.receivedQueue</a></td> +<td>Confirms receipt of messages in a secret chat by client, cancels push notifications.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-telegram-passport" href="#working-with-telegram-passport"><i class="anchor-icon"></i></a>Working with <a href="/passport">telegram passport</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.sendVerifyEmailCode">account.sendVerifyEmailCode</a></td> +<td>Send the verification email code for telegram <a href="/passport">passport</a>.</td> +</tr> +<tr> +<td><a href="/method/account.verifyEmail">account.verifyEmail</a></td> +<td>Verify an email address for telegram <a href="/passport">passport</a>.</td> +</tr> +<tr> +<td><a href="/method/account.sendVerifyPhoneCode">account.sendVerifyPhoneCode</a></td> +<td>Send the verification phone code for telegram <a href="/passport">passport</a>.</td> +</tr> +<tr> +<td><a href="/method/account.verifyPhone">account.verifyPhone</a></td> +<td>Verify a phone number for telegram <a href="/passport">passport</a>.</td> +</tr> +<tr> +<td><a href="/method/account.acceptAuthorization">account.acceptAuthorization</a></td> +<td>Sends a Telegram Passport authorization form, effectively sharing data with the service</td> +</tr> +<tr> +<td><a href="/method/account.getAuthorizationForm">account.getAuthorizationForm</a></td> +<td>Returns a Telegram Passport authorization form for sharing data with a service</td> +</tr> +<tr> +<td><a href="/method/account.getAuthorizations">account.getAuthorizations</a></td> +<td>Get logged-in sessions</td> +</tr> +<tr> +<td><a href="/method/account.deleteSecureValue">account.deleteSecureValue</a></td> +<td>Delete stored <a href="/passport">Telegram Passport</a> documents, <a href="/passport/encryption#encryption">for more info see the passport docs »</a></td> +</tr> +<tr> +<td><a href="/method/account.getAllSecureValues">account.getAllSecureValues</a></td> +<td>Get all saved <a href="/passport">Telegram Passport</a> documents, <a href="/passport/encryption#encryption">for more info see the passport docs »</a></td> +</tr> +<tr> +<td><a href="/method/account.getSecureValue">account.getSecureValue</a></td> +<td>Get saved <a href="/passport">Telegram Passport</a> document, <a href="/passport/encryption#encryption">for more info see the passport docs »</a></td> +</tr> +<tr> +<td><a href="/method/account.saveSecureValue">account.saveSecureValue</a></td> +<td>Securely save <a href="/passport">Telegram Passport</a> document, <a href="/passport/encryption#encryption">for more info see the passport docs »</a></td> +</tr> +<tr> +<td><a href="/method/help.getPassportConfig">help.getPassportConfig</a></td> +<td>Get <a href="/passport">passport</a> configuration</td> +</tr> +<tr> +<td><a href="/method/users.setSecureValueErrors">users.setSecureValueErrors</a></td> +<td>Notify the user that the sent <a href="/passport">passport</a> data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change).<br><br>Use this if the data submitted by the user doesn't satisfy the standards your service requires for any reason. For example, if a birthday date seems invalid, a submitted document is blurry, a scan shows evidence of tampering, etc. Supply some details in the error message to make sure the user knows how to correct the issues.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-updates" href="#working-with-updates"><i class="anchor-icon"></i></a>Working with <a href="/api/updates">updates</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/updates.getChannelDifference">updates.getChannelDifference</a></td> +<td>Returns the difference between the current state of updates of a certain channel and transmitted.</td> +</tr> +<tr> +<td><a href="/method/updates.getDifference">updates.getDifference</a></td> +<td>Get new <a href="/api/updates">updates</a>.</td> +</tr> +<tr> +<td><a href="/method/updates.getState">updates.getState</a></td> +<td>Returns a current state of updates.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-bot-inline-queries-and-callback-buttons" href="#working-with-bot-inline-queries-and-callback-buttons"><i class="anchor-icon"></i></a>Working with bot inline queries and callback buttons</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a></td> +<td>Query an inline bot</td> +</tr> +<tr> +<td><a href="/method/messages.setInlineBotResults">messages.setInlineBotResults</a></td> +<td>Answer an inline query, for bots only</td> +</tr> +<tr> +<td><a href="/method/messages.sendInlineBotResult">messages.sendInlineBotResult</a></td> +<td>Send a result obtained using <a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a></td> +<td>Press an inline callback button and get a callback answer from the bot</td> +</tr> +<tr> +<td><a href="/method/messages.setBotCallbackAnswer">messages.setBotCallbackAnswer</a></td> +<td>Set the callback answer to a user button press (bots only)</td> +</tr> +<tr> +<td><a href="/method/messages.editInlineBotMessage">messages.editInlineBotMessage</a></td> +<td>Edit an inline bot message</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-bots" href="#working-with-bots"><i class="anchor-icon"></i></a>Working with bots</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/bots.resetBotCommands">bots.resetBotCommands</a></td> +<td>Clear bot commands for the specified bot scope and language code</td> +</tr> +<tr> +<td><a href="/method/bots.getBotCommands">bots.getBotCommands</a></td> +<td>Obtain a list of bot commands for the specified bot scope and language code</td> +</tr> +<tr> +<td><a href="/method/bots.setBotCommands">bots.setBotCommands</a></td> +<td>Set bot command list</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-bots-internal-bot-api-use" href="#working-with-bots-internal-bot-api-use"><i class="anchor-icon"></i></a>Working with bots (internal bot API use)</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/bots.answerWebhookJSONQuery">bots.answerWebhookJSONQuery</a></td> +<td>Answers a custom query; for bots only</td> +</tr> +<tr> +<td><a href="/method/bots.sendCustomRequest">bots.sendCustomRequest</a></td> +<td>Sends a custom request; for bots only</td> +</tr> +<tr> +<td><a href="/method/help.setBotUpdatesStatus">help.setBotUpdatesStatus</a></td> +<td>Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-cloud-themes" href="#working-with-cloud-themes"><i class="anchor-icon"></i></a>Working with cloud themes</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.updateTheme">account.updateTheme</a></td> +<td>Update theme</td> +</tr> +<tr> +<td><a href="/method/account.uploadTheme">account.uploadTheme</a></td> +<td>Upload theme</td> +</tr> +<tr> +<td><a href="/method/account.getThemes">account.getThemes</a></td> +<td>Get installed themes</td> +</tr> +<tr> +<td><a href="/method/account.createTheme">account.createTheme</a></td> +<td>Create a theme</td> +</tr> +<tr> +<td><a href="/method/account.installTheme">account.installTheme</a></td> +<td>Install a theme</td> +</tr> +<tr> +<td><a href="/method/account.saveTheme">account.saveTheme</a></td> +<td>Save a theme</td> +</tr> +<tr> +<td><a href="/method/account.getTheme">account.getTheme</a></td> +<td>Get theme information</td> +</tr> +<tr> +<td><a href="/method/account.getChatThemes">account.getChatThemes</a></td> +<td>Get all available chat themes</td> +</tr> +<tr> +<td><a href="/method/messages.setChatTheme">messages.setChatTheme</a></td> +<td>Change the chat theme of a certain chat</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-contacts-and-top-peers" href="#working-with-contacts-and-top-peers"><i class="anchor-icon"></i></a>Working with contacts and <a href="/api/top-rating">top peers</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.getContactSignUpNotification">account.getContactSignUpNotification</a></td> +<td>Whether the user will receive notifications when contacts sign up</td> +</tr> +<tr> +<td><a href="/method/account.setContactSignUpNotification">account.setContactSignUpNotification</a></td> +<td>Toggle contact sign up notifications</td> +</tr> +<tr> +<td><a href="/method/contacts.acceptContact">contacts.acceptContact</a></td> +<td>If the <a href="/constructor/peerSettings">peer settings</a> of a new user allow us to add him as contact, add that user as contact</td> +</tr> +<tr> +<td><a href="/method/contacts.addContact">contacts.addContact</a></td> +<td>Add an existing telegram user as contact.<br><br>Use <a href="/method/contacts.importContacts">contacts.importContacts</a> to add contacts by phone number, without knowing their Telegram ID.</td> +</tr> +<tr> +<td><a href="/method/contacts.block">contacts.block</a></td> +<td>Adds the user to the blacklist.</td> +</tr> +<tr> +<td><a href="/method/contacts.deleteByPhones">contacts.deleteByPhones</a></td> +<td>Delete contacts by phone number</td> +</tr> +<tr> +<td><a href="/method/contacts.deleteContacts">contacts.deleteContacts</a></td> +<td>Deletes several contacts from the list.</td> +</tr> +<tr> +<td><a href="/method/contacts.getBlocked">contacts.getBlocked</a></td> +<td>Returns the list of blocked users.</td> +</tr> +<tr> +<td><a href="/method/contacts.getContactIDs">contacts.getContactIDs</a></td> +<td>Get contact by telegram IDs</td> +</tr> +<tr> +<td><a href="/method/contacts.getContacts">contacts.getContacts</a></td> +<td>Returns the current user's contact list.</td> +</tr> +<tr> +<td><a href="/method/contacts.getLocated">contacts.getLocated</a></td> +<td>Get contacts near you</td> +</tr> +<tr> +<td><a href="/method/contacts.getSaved">contacts.getSaved</a></td> +<td>Get all contacts</td> +</tr> +<tr> +<td><a href="/method/contacts.getStatuses">contacts.getStatuses</a></td> +<td>Returns the list of contact statuses.</td> +</tr> +<tr> +<td><a href="/method/contacts.getTopPeers">contacts.getTopPeers</a></td> +<td>Get most used peers</td> +</tr> +<tr> +<td><a href="/method/contacts.importContacts">contacts.importContacts</a></td> +<td>Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info.<br><br>Use <a href="/method/contacts.addContact">contacts.addContact</a> to add Telegram contacts without actually using their phone number.</td> +</tr> +<tr> +<td><a href="/method/contacts.resetSaved">contacts.resetSaved</a></td> +<td>Delete saved contacts</td> +</tr> +<tr> +<td><a href="/method/contacts.resetTopPeerRating">contacts.resetTopPeerRating</a></td> +<td>Reset <a href="/api/top-rating">rating</a> of top peer</td> +</tr> +<tr> +<td><a href="/method/contacts.search">contacts.search</a></td> +<td>Returns users found by username substring.</td> +</tr> +<tr> +<td><a href="/method/contacts.toggleTopPeers">contacts.toggleTopPeers</a></td> +<td>Enable/disable <a href="/api/top-rating">top peers</a></td> +</tr> +<tr> +<td><a href="/method/contacts.unblock">contacts.unblock</a></td> +<td>Deletes the user from the blacklist.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-credit-cards" href="#working-with-credit-cards"><i class="anchor-icon"></i></a>Working with credit cards</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/payments.getBankCardData">payments.getBankCardData</a></td> +<td>Get info about a credit card</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-dialogs" href="#working-with-dialogs"><i class="anchor-icon"></i></a>Working with dialogs</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getDialogs">messages.getDialogs</a></td> +<td>Returns the current user dialog list.</td> +</tr> +<tr> +<td><a href="/method/messages.getPeerDialogs">messages.getPeerDialogs</a></td> +<td>Get dialog info of specified peers</td> +</tr> +<tr> +<td><a href="/method/messages.getPinnedDialogs">messages.getPinnedDialogs</a></td> +<td>Get pinned dialogs</td> +</tr> +<tr> +<td><a href="/method/messages.toggleDialogPin">messages.toggleDialogPin</a></td> +<td>Pin/unpin a dialog</td> +</tr> +<tr> +<td><a href="/method/messages.reorderPinnedDialogs">messages.reorderPinnedDialogs</a></td> +<td>Reorder pinned dialogs</td> +</tr> +<tr> +<td><a href="/method/messages.getDialogUnreadMarks">messages.getDialogUnreadMarks</a></td> +<td>Get dialogs manually marked as unread</td> +</tr> +<tr> +<td><a href="/method/messages.markDialogUnread">messages.markDialogUnread</a></td> +<td>Manually mark dialog as unread</td> +</tr> +<tr> +<td><a href="/method/messages.getPeerSettings">messages.getPeerSettings</a></td> +<td>Get peer settings</td> +</tr> +<tr> +<td><a href="/method/messages.hidePeerSettingsBar">messages.hidePeerSettingsBar</a></td> +<td>Should be called after the user hides the report spam/add as contact bar of a new chat, effectively prevents the user from executing the actions specified in the <a href="/constructor/peerSettings">peer's settings</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.getOnlines">messages.getOnlines</a></td> +<td>Get count of online users in a chat</td> +</tr> +<tr> +<td><a href="/method/messages.sendScreenshotNotification">messages.sendScreenshotNotification</a></td> +<td>Notify the other user in a private chat that a screenshot of the chat was taken</td> +</tr> +<tr> +<td><a href="/method/messages.setTyping">messages.setTyping</a></td> +<td>Sends a current user typing event (see <a href="/type/SendMessageAction">SendMessageAction</a> for all event types) to a conversation partner or group.</td> +</tr> +<tr> +<td><a href="/method/messages.setHistoryTTL">messages.setHistoryTTL</a></td> +<td>Set maximum Time-To-Live of all messages in the specified chat</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-drafts" href="#working-with-drafts"><i class="anchor-icon"></i></a>Working with drafts</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.clearAllDrafts">messages.clearAllDrafts</a></td> +<td>Clear all <a href="/api/drafts">drafts</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.getAllDrafts">messages.getAllDrafts</a></td> +<td>Save get all message <a href="/api/drafts">drafts</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.saveDraft">messages.saveDraft</a></td> +<td>Save a message <a href="/api/drafts">draft</a> associated to a chat.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-emoji-keywords" href="#working-with-emoji-keywords"><i class="anchor-icon"></i></a>Working with emoji keywords</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getEmojiKeywords">messages.getEmojiKeywords</a></td> +<td>Get localized emoji keywords</td> +</tr> +<tr> +<td><a href="/method/messages.getEmojiKeywordsDifference">messages.getEmojiKeywordsDifference</a></td> +<td>Get changed emoji keywords</td> +</tr> +<tr> +<td><a href="/method/messages.getEmojiKeywordsLanguages">messages.getEmojiKeywordsLanguages</a></td> +<td>Get info about an emoji keyword localization</td> +</tr> +<tr> +<td><a href="/method/messages.getEmojiURL">messages.getEmojiURL</a></td> +<td>Returns an HTTP URL which can be used to automatically log in into translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-folders" href="#working-with-folders"><i class="anchor-icon"></i></a>Working with folders</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.updateDialogFiltersOrder">messages.updateDialogFiltersOrder</a></td> +<td>Reorder <a href="/api/folders">folders</a></td> +</tr> +<tr> +<td><a href="/method/messages.getDialogFilters">messages.getDialogFilters</a></td> +<td>Get <a href="/api/folders">folders</a></td> +</tr> +<tr> +<td><a href="/method/messages.getSuggestedDialogFilters">messages.getSuggestedDialogFilters</a></td> +<td>Get <a href="/api/folders">suggested folders</a></td> +</tr> +<tr> +<td><a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a></td> +<td>Update <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><a href="/method/folders.deleteFolder">folders.deleteFolder</a></td> +<td>Delete a <a href="/api/folders#peer-folders">peer folder</a></td> +</tr> +<tr> +<td><a href="/method/folders.editPeerFolders">folders.editPeerFolders</a></td> +<td>Edit peers in <a href="/api/folders#peer-folders">peer folder</a></td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-games" href="#working-with-games"><i class="anchor-icon"></i></a>Working with games</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getGameHighScores">messages.getGameHighScores</a></td> +<td>Get highscores of a game</td> +</tr> +<tr> +<td><a href="/method/messages.getInlineGameHighScores">messages.getInlineGameHighScores</a></td> +<td>Get highscores of a game sent using an inline bot</td> +</tr> +<tr> +<td><a href="/method/messages.setGameScore">messages.setGameScore</a></td> +<td>Use this method to set the score of the specified user in a game sent as a normal message (bots only).</td> +</tr> +<tr> +<td><a href="/method/messages.setInlineGameScore">messages.setInlineGameScore</a></td> +<td>Use this method to set the score of the specified user in a game sent as an inline message (bots only).</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-group-calls-amp-live-streaming" href="#working-with-group-calls-amp-live-streaming"><i class="anchor-icon"></i></a>Working with group calls & live streaming</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/phone.exportGroupCallInvite">phone.exportGroupCallInvite</a></td> +<td>Get an invite link for a group call or livestream</td> +</tr> +<tr> +<td><a href="/method/phone.getGroupCallJoinAs">phone.getGroupCallJoinAs</a></td> +<td>Get a list of peers that can be used to join a group call, presenting yourself as a specific user/channel.</td> +</tr> +<tr> +<td><a href="/method/phone.editGroupCallParticipant">phone.editGroupCallParticipant</a></td> +<td>Edit information about a given group call participant<br><br>Note: <a href="/mtproto/TL-combinators#conditional-fields">flags</a>.N?<a href="/type/Bool">Bool</a> parameters can have three possible values:<br><br>- If the <a href="/mtproto/TL-combinators#conditional-fields">TL flag</a> is not set, the previous value will not be changed.<br>- If the <a href="/mtproto/TL-combinators#conditional-fields">TL flag</a> is set and contains a <a href="/constructor/boolTrue">boolTrue</a>, the previous value will be overwritten to <code>true</code>.<br>- If the <a href="/mtproto/TL-combinators#conditional-fields">TL flag</a> is set and contains a <a href="/constructor/boolFalse">boolFalse</a>, the previous value will be overwritten to <code>false</code>.</td> +</tr> +<tr> +<td><a href="/method/phone.toggleGroupCallRecord">phone.toggleGroupCallRecord</a></td> +<td>Start or stop recording a group call: the recorded audio and video streams will be automatically sent to <code>Saved messages</code> (the chat with ourselves).</td> +</tr> +<tr> +<td><a href="/method/phone.editGroupCallTitle">phone.editGroupCallTitle</a></td> +<td>Edit the title of a group call or livestream</td> +</tr> +<tr> +<td><a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a></td> +<td>Get group call participants</td> +</tr> +<tr> +<td><a href="/method/phone.checkGroupCall">phone.checkGroupCall</a></td> +<td>Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs</td> +</tr> +<tr> +<td><a href="/method/phone.createGroupCall">phone.createGroupCall</a></td> +<td>Create a group call or livestream</td> +</tr> +<tr> +<td><a href="/method/phone.toggleGroupCallStartSubscription">phone.toggleGroupCallStartSubscription</a></td> +<td>Subscribe or unsubscribe to a scheduled group call</td> +</tr> +<tr> +<td><a href="/method/phone.leaveGroupCall">phone.leaveGroupCall</a></td> +<td>Leave a group call</td> +</tr> +<tr> +<td><a href="/method/phone.toggleGroupCallSettings">phone.toggleGroupCallSettings</a></td> +<td>Change group call settings</td> +</tr> +<tr> +<td><a href="/method/phone.inviteToGroupCall">phone.inviteToGroupCall</a></td> +<td>Invite a set of users to a group call.</td> +</tr> +<tr> +<td><a href="/method/phone.getGroupCall">phone.getGroupCall</a></td> +<td>Get info about a group call</td> +</tr> +<tr> +<td><a href="/method/phone.joinGroupCall">phone.joinGroupCall</a></td> +<td>Join a group call</td> +</tr> +<tr> +<td><a href="/method/phone.leaveGroupCallPresentation">phone.leaveGroupCallPresentation</a></td> +<td>Stop screen sharing in a group call</td> +</tr> +<tr> +<td><a href="/method/phone.discardGroupCall">phone.discardGroupCall</a></td> +<td>Terminate a group call</td> +</tr> +<tr> +<td><a href="/method/phone.joinGroupCallPresentation">phone.joinGroupCallPresentation</a></td> +<td>Start screen sharing in a call</td> +</tr> +<tr> +<td><a href="/method/phone.startScheduledGroupCall">phone.startScheduledGroupCall</a></td> +<td>Start a scheduled group call.</td> +</tr> +<tr> +<td><a href="/method/phone.saveDefaultGroupCallJoinAs">phone.saveDefaultGroupCallJoinAs</a></td> +<td>Set the default peer that will be used to join a group call in a specific dialog.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-imported-chats" href="#working-with-imported-chats"><i class="anchor-icon"></i></a>Working with imported chats</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a></td> +<td>Upload a media file associated with an <a href="/api/import">imported chat, click here for more info »</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.startHistoryImport">messages.startHistoryImport</a></td> +<td>Complete the <a href="/api/import">history import process</a>, importing all messages into the chat.<br>To be called only after initializing the import with <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a> and uploading all files using <a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.checkHistoryImportPeer">messages.checkHistoryImportPeer</a></td> +<td>Check whether chat history exported from another chat app can be <a href="/api/import">imported into a specific Telegram chat, click here for more info »</a>.<br><br>If the check succeeds, and no RPC errors are returned, a <a href="/type/messages.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</a> constructor will be returned, with a confirmation text to be shown to the user, before actually initializing the import.</td> +</tr> +<tr> +<td><a href="/method/messages.checkHistoryImport">messages.checkHistoryImport</a></td> +<td>Obtains information about a chat export file, generated by a foreign chat app, <a href="/api/import">click here for more info about imported chats »</a>.</td> +</tr> +<tr> +<td><a href="/method/messages.initHistoryImport">messages.initHistoryImport</a></td> +<td>Import chat history from a foreign chat app into a specific Telegram chat, <a href="/api/import">click here for more info about imported chats »</a>.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-localization-packs" href="#working-with-localization-packs"><i class="anchor-icon"></i></a>Working with localization packs</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/langpack.getDifference">langpack.getDifference</a></td> +<td>Get new strings in languagepack</td> +</tr> +<tr> +<td><a href="/method/langpack.getLangPack">langpack.getLangPack</a></td> +<td>Get localization pack strings</td> +</tr> +<tr> +<td><a href="/method/langpack.getLanguage">langpack.getLanguage</a></td> +<td>Get information about a language in a localization pack</td> +</tr> +<tr> +<td><a href="/method/langpack.getLanguages">langpack.getLanguages</a></td> +<td>Get information about all languages in a localization pack</td> +</tr> +<tr> +<td><a href="/method/langpack.getStrings">langpack.getStrings</a></td> +<td>Get strings from a language pack</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-media-autodownload-settings" href="#working-with-media-autodownload-settings"><i class="anchor-icon"></i></a>Working with media autodownload settings</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.getAutoDownloadSettings">account.getAutoDownloadSettings</a></td> +<td>Get media autodownload settings</td> +</tr> +<tr> +<td><a href="/method/account.saveAutoDownloadSettings">account.saveAutoDownloadSettings</a></td> +<td>Change media autodownload settings</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-message-threads" href="#working-with-message-threads"><i class="anchor-icon"></i></a>Working with message <a href="/api/threads">threads</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getReplies">messages.getReplies</a></td> +<td>Get messages in a reply thread</td> +</tr> +<tr> +<td><a href="/method/contacts.blockFromReplies">contacts.blockFromReplies</a></td> +<td>Stop getting notifications about <a href="/api/threads">thread replies</a> of a certain user in <code>@replies</code></td> +</tr> +<tr> +<td><a href="/method/messages.getDiscussionMessage">messages.getDiscussionMessage</a></td> +<td>Get <a href="/api/threads">discussion message</a> from the <a href="/api/discussion">associated discussion group</a> of a channel to show it on top of the comment section, without actually joining the group</td> +</tr> +<tr> +<td><a href="/method/messages.readDiscussion">messages.readDiscussion</a></td> +<td>Mark a <a href="/api/threads">thread</a> as read</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-message-reactions" href="#working-with-message-reactions"><i class="anchor-icon"></i></a>Working with message reactions</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getMessagesReactions">messages.getMessagesReactions</a></td> +<td>Get message reactions</td> +</tr> +<tr> +<td><a href="/method/messages.sendReaction">messages.sendReaction</a></td> +<td>Send reaction to message</td> +</tr> +<tr> +<td><a href="/method/messages.getMessageReactionsList">messages.getMessageReactionsList</a></td> +<td>Get full message reaction list</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-messages" href="#working-with-messages"><i class="anchor-icon"></i></a>Working with messages</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.deleteHistory">messages.deleteHistory</a></td> +<td>Deletes communication history.</td> +</tr> +<tr> +<td><a href="/method/messages.deleteMessages">messages.deleteMessages</a></td> +<td>Deletes messages by their identifiers.</td> +</tr> +<tr> +<td><a href="/method/messages.editMessage">messages.editMessage</a></td> +<td>Edit message</td> +</tr> +<tr> +<td><a href="/method/messages.forwardMessages">messages.forwardMessages</a></td> +<td>Forwards messages by their IDs.</td> +</tr> +<tr> +<td><a href="/method/messages.getHistory">messages.getHistory</a></td> +<td>Gets back the conversation history with one interlocutor / within a chat</td> +</tr> +<tr> +<td><a href="/method/messages.getMessageEditData">messages.getMessageEditData</a></td> +<td>Find out if a media message's caption can be edited</td> +</tr> +<tr> +<td><a href="/method/messages.getMessages">messages.getMessages</a></td> +<td>Returns the list of messages by their IDs.</td> +</tr> +<tr> +<td><a href="/method/messages.getMessagesViews">messages.getMessagesViews</a></td> +<td>Get and increase the view counter of a message sent or forwarded from a <a href="/api/channel">channel</a></td> +</tr> +<tr> +<td><a href="/method/messages.getRecentLocations">messages.getRecentLocations</a></td> +<td>Get live location history of a certain user</td> +</tr> +<tr> +<td><a href="/method/messages.getSearchCounters">messages.getSearchCounters</a></td> +<td>Get the number of results that would be found by a <a href="/method/messages.search">messages.search</a> call with the same parameters</td> +</tr> +<tr> +<td><a href="/method/messages.getUnreadMentions">messages.getUnreadMentions</a></td> +<td>Get unread messages where we were mentioned</td> +</tr> +<tr> +<td><a href="/method/messages.readHistory">messages.readHistory</a></td> +<td>Marks message history as read.</td> +</tr> +<tr> +<td><a href="/method/messages.readMentions">messages.readMentions</a></td> +<td>Mark mentions as read</td> +</tr> +<tr> +<td><a href="/method/messages.readMessageContents">messages.readMessageContents</a></td> +<td>Notifies the sender about the recipient having listened a voice message or watched a video.</td> +</tr> +<tr> +<td><a href="/method/messages.receivedMessages">messages.receivedMessages</a></td> +<td>Confirms receipt of messages by a client, cancels PUSH-notification sending.</td> +</tr> +<tr> +<td><a href="/method/messages.search">messages.search</a></td> +<td>Gets back found messages</td> +</tr> +<tr> +<td><a href="/method/messages.searchGlobal">messages.searchGlobal</a></td> +<td>Search for messages and peers globally</td> +</tr> +<tr> +<td><a href="/method/messages.sendMedia">messages.sendMedia</a></td> +<td>Send a media</td> +</tr> +<tr> +<td><a href="/method/messages.sendMessage">messages.sendMessage</a></td> +<td>Sends a message to a chat</td> +</tr> +<tr> +<td><a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a></td> +<td>Send an <a href="/api/files#albums-grouped-media">album or grouped media</a></td> +</tr> +<tr> +<td><a href="/method/messages.updatePinnedMessage">messages.updatePinnedMessage</a></td> +<td>Pin a message</td> +</tr> +<tr> +<td><a href="/method/messages.unpinAllMessages">messages.unpinAllMessages</a></td> +<td><a href="/api/pin">Unpin</a> all pinned messages</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-notification-settings" href="#working-with-notification-settings"><i class="anchor-icon"></i></a>Working with notification settings</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.registerDevice">account.registerDevice</a></td> +<td>Register device to receive <a href="/api/push-updates">PUSH notifications</a></td> +</tr> +<tr> +<td><a href="/method/account.unregisterDevice">account.unregisterDevice</a></td> +<td>Deletes a device by its token, stops sending PUSH-notifications to it.</td> +</tr> +<tr> +<td><a href="/method/account.updateDeviceLocked">account.updateDeviceLocked</a></td> +<td>When client-side passcode lock feature is enabled, will not show message texts in incoming <a href="/api/push-updates">PUSH notifications</a>.</td> +</tr> +<tr> +<td><a href="/method/account.getNotifyExceptions">account.getNotifyExceptions</a></td> +<td>Returns list of chats with non-default notification settings</td> +</tr> +<tr> +<td><a href="/method/account.getNotifySettings">account.getNotifySettings</a></td> +<td>Gets current notification settings for a given user/group, from all users/all groups.</td> +</tr> +<tr> +<td><a href="/method/account.updateNotifySettings">account.updateNotifySettings</a></td> +<td>Edits notification settings from a given user/group, from all users/all groups.</td> +</tr> +<tr> +<td><a href="/method/account.resetNotifySettings">account.resetNotifySettings</a></td> +<td>Resets all notification settings from users and groups.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-other-users" href="#working-with-other-users"><i class="anchor-icon"></i></a>Working with other users</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/users.getFullUser">users.getFullUser</a></td> +<td>Returns extended user info by ID.</td> +</tr> +<tr> +<td><a href="/method/users.getUsers">users.getUsers</a></td> +<td>Returns basic user info according to their identifiers.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-payments" href="#working-with-payments"><i class="anchor-icon"></i></a>Working with payments</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/payments.getSavedInfo">payments.getSavedInfo</a></td> +<td>Get saved payment information</td> +</tr> +<tr> +<td><a href="/method/payments.clearSavedInfo">payments.clearSavedInfo</a></td> +<td>Clear saved payment information</td> +</tr> +<tr> +<td><a href="/method/payments.getPaymentForm">payments.getPaymentForm</a></td> +<td>Get a payment form</td> +</tr> +<tr> +<td><a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a></td> +<td>Submit requested order information for validation</td> +</tr> +<tr> +<td><a href="/method/messages.setBotShippingResults">messages.setBotShippingResults</a></td> +<td>If you sent an invoice requesting a shipping address and the parameter is_flexible was specified, the bot will receive an <a href="/constructor/updateBotShippingQuery">updateBotShippingQuery</a> update. Use this method to reply to shipping queries.</td> +</tr> +<tr> +<td><a href="/method/account.getTmpPassword">account.getTmpPassword</a></td> +<td>Get temporary payment password</td> +</tr> +<tr> +<td><a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a></td> +<td>Send compiled payment form</td> +</tr> +<tr> +<td><a href="/method/messages.setBotPrecheckoutResults">messages.setBotPrecheckoutResults</a></td> +<td>Once the user has confirmed their payment and shipping details, the bot receives an <a href="/constructor/updateBotPrecheckoutQuery">updateBotPrecheckoutQuery</a> update.<br>Use this method to respond to such pre-checkout queries.<br><strong>Note</strong>: Telegram must receive an answer within 10 seconds after the pre-checkout query was sent.</td> +</tr> +<tr> +<td><a href="/method/payments.getPaymentReceipt">payments.getPaymentReceipt</a></td> +<td>Get payment receipt</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-polls" href="#working-with-polls"><i class="anchor-icon"></i></a>Working with polls</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getPollResults">messages.getPollResults</a></td> +<td>Get poll results</td> +</tr> +<tr> +<td><a href="/method/messages.getPollVotes">messages.getPollVotes</a></td> +<td>Get poll results for non-anonymous polls</td> +</tr> +<tr> +<td><a href="/method/messages.sendVote">messages.sendVote</a></td> +<td>Vote in a <a href="/constructor/poll">poll</a></td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-scheduled-messages" href="#working-with-scheduled-messages"><i class="anchor-icon"></i></a>Working with scheduled messages</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.sendScheduledMessages">messages.sendScheduledMessages</a></td> +<td>Send scheduled messages right away</td> +</tr> +<tr> +<td><a href="/method/messages.getScheduledHistory">messages.getScheduledHistory</a></td> +<td>Get scheduled messages</td> +</tr> +<tr> +<td><a href="/method/messages.deleteScheduledMessages">messages.deleteScheduledMessages</a></td> +<td>Delete scheduled messages</td> +</tr> +<tr> +<td><a href="/method/messages.getScheduledMessages">messages.getScheduledMessages</a></td> +<td>Get scheduled messages</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-sensitive-content-nsfw" href="#working-with-sensitive-content-nsfw"><i class="anchor-icon"></i></a>Working with sensitive content (NSFW)</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.getContentSettings">account.getContentSettings</a></td> +<td>Get sensitive content settings</td> +</tr> +<tr> +<td><a href="/method/account.setContentSettings">account.setContentSettings</a></td> +<td>Set sensitive content settings (for viewing or hiding NSFW content)</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-sponsored-messages" href="#working-with-sponsored-messages"><i class="anchor-icon"></i></a>Working with <a href="/api/sponsored-messages">sponsored messages</a></h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/channels.getSponsoredMessages">channels.getSponsoredMessages</a></td> +<td>Get a list of sponsored messages</td> +</tr> +<tr> +<td><a href="/method/channels.viewSponsoredMessage">channels.viewSponsoredMessage</a></td> +<td>Mark a specific sponsored message as read</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-sponsored-proxies" href="#working-with-sponsored-proxies"><i class="anchor-icon"></i></a>Working with sponsored proxies</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/help.getProxyData">help.getProxyData</a></td> +<td>Get promotion info of the currently-used MTProxy</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-statistics" href="#working-with-statistics"><i class="anchor-icon"></i></a>Working with statistics</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a></td> +<td>Load <a href="/api/stats">channel statistics graph</a> asynchronously</td> +</tr> +<tr> +<td><a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a></td> +<td>Get <a href="/api/stats">channel statistics</a></td> +</tr> +<tr> +<td><a href="/method/stats.getMessagePublicForwards">stats.getMessagePublicForwards</a></td> +<td>Obtains a list of messages, indicating to which other public channels was a channel message forwarded.<br>Will return a list of <a href="/constructor/message">messages</a> with <code>peer_id</code> equal to the public channel to which this message was forwarded.</td> +</tr> +<tr> +<td><a href="/method/stats.getMegagroupStats">stats.getMegagroupStats</a></td> +<td>Get <a href="/api/stats">supergroup statistics</a></td> +</tr> +<tr> +<td><a href="/method/stats.getMessageStats">stats.getMessageStats</a></td> +<td>Get <a href="/api/stats">message statistics</a></td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-stickers" href="#working-with-stickers"><i class="anchor-icon"></i></a>Working with stickers</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getOldFeaturedStickers">messages.getOldFeaturedStickers</a></td> +<td>Method for fetching previously featured stickers</td> +</tr> +<tr> +<td><a href="/method/messages.toggleStickerSets">messages.toggleStickerSets</a></td> +<td>Apply changes to multiple stickersets</td> +</tr> +<tr> +<td><a href="/method/stickers.suggestShortName">stickers.suggestShortName</a></td> +<td>Suggests a short name for a given stickerpack name</td> +</tr> +<tr> +<td><a href="/method/stickers.checkShortName">stickers.checkShortName</a></td> +<td>Check whether the given short name is available</td> +</tr> +<tr> +<td><a href="/method/stickers.setStickerSetThumb">stickers.setStickerSetThumb</a></td> +<td>Set stickerset thumbnail</td> +</tr> +<tr> +<td><a href="/method/stickers.addStickerToSet">stickers.addStickerToSet</a></td> +<td>Add a sticker to a stickerset, bots only. The sticker set must have been created by the bot.</td> +</tr> +<tr> +<td><a href="/method/stickers.changeStickerPosition">stickers.changeStickerPosition</a></td> +<td>Changes the absolute position of a sticker in the set to which it belongs; for bots only. The sticker set must have been created by the bot</td> +</tr> +<tr> +<td><a href="/method/stickers.createStickerSet">stickers.createStickerSet</a></td> +<td>Create a stickerset, bots only.</td> +</tr> +<tr> +<td><a href="/method/stickers.removeStickerFromSet">stickers.removeStickerFromSet</a></td> +<td>Remove a sticker from the set where it belongs, bots only. The sticker set must have been created by the bot.</td> +</tr> +<tr> +<td><a href="/method/messages.clearRecentStickers">messages.clearRecentStickers</a></td> +<td>Clear recent stickers</td> +</tr> +<tr> +<td><a href="/method/messages.faveSticker">messages.faveSticker</a></td> +<td>Mark a sticker as favorite</td> +</tr> +<tr> +<td><a href="/method/messages.getAllStickers">messages.getAllStickers</a></td> +<td>Get all installed stickers</td> +</tr> +<tr> +<td><a href="/method/messages.getArchivedStickers">messages.getArchivedStickers</a></td> +<td>Get all archived stickers</td> +</tr> +<tr> +<td><a href="/method/messages.getAttachedStickers">messages.getAttachedStickers</a></td> +<td>Get stickers attached to a photo or video</td> +</tr> +<tr> +<td><a href="/method/messages.getFavedStickers">messages.getFavedStickers</a></td> +<td>Get faved stickers</td> +</tr> +<tr> +<td><a href="/method/messages.getFeaturedStickers">messages.getFeaturedStickers</a></td> +<td>Get featured stickers</td> +</tr> +<tr> +<td><a href="/method/messages.getMaskStickers">messages.getMaskStickers</a></td> +<td>Get installed mask stickers</td> +</tr> +<tr> +<td><a href="/method/messages.getRecentStickers">messages.getRecentStickers</a></td> +<td>Get recent stickers</td> +</tr> +<tr> +<td><a href="/method/messages.getStickerSet">messages.getStickerSet</a></td> +<td>Get info about a stickerset</td> +</tr> +<tr> +<td><a href="/method/messages.getStickers">messages.getStickers</a></td> +<td>Get stickers by emoji</td> +</tr> +<tr> +<td><a href="/method/messages.saveRecentSticker">messages.saveRecentSticker</a></td> +<td>Add/remove sticker from recent stickers list</td> +</tr> +<tr> +<td><a href="/method/messages.installStickerSet">messages.installStickerSet</a></td> +<td>Install a stickerset</td> +</tr> +<tr> +<td><a href="/method/messages.readFeaturedStickers">messages.readFeaturedStickers</a></td> +<td>Mark new featured stickers as read</td> +</tr> +<tr> +<td><a href="/method/messages.reorderStickerSets">messages.reorderStickerSets</a></td> +<td>Reorder installed stickersets</td> +</tr> +<tr> +<td><a href="/method/messages.searchStickerSets">messages.searchStickerSets</a></td> +<td>Search for stickersets</td> +</tr> +<tr> +<td><a href="/method/messages.uninstallStickerSet">messages.uninstallStickerSet</a></td> +<td>Uninstall a stickerset</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-the-user-39s-account" href="#working-with-the-user-39s-account"><i class="anchor-icon"></i></a>Working with the user's account</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.changePhone">account.changePhone</a></td> +<td>Change the phone number of the current account</td> +</tr> +<tr> +<td><a href="/method/account.confirmPhone">account.confirmPhone</a></td> +<td>Confirm a phone number to cancel account deletion, for more info <a href="/api/account-deletion">click here »</a></td> +</tr> +<tr> +<td><a href="/method/account.deleteAccount">account.deleteAccount</a></td> +<td>Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the <a href="/api/srp">2FA password and no recovery method is configured</a>.</td> +</tr> +<tr> +<td><a href="/method/account.getAccountTTL">account.getAccountTTL</a></td> +<td>Get days to live of account</td> +</tr> +<tr> +<td><a href="/method/account.getPrivacy">account.getPrivacy</a></td> +<td>Get privacy settings of current account</td> +</tr> +<tr> +<td><a href="/method/account.resetAuthorization">account.resetAuthorization</a></td> +<td>Log out an active <a href="/api/auth">authorized session</a> by its hash</td> +</tr> +<tr> +<td><a href="/method/account.sendChangePhoneCode">account.sendChangePhoneCode</a></td> +<td>Verify a new phone number to associate to the current account</td> +</tr> +<tr> +<td><a href="/method/account.sendConfirmPhoneCode">account.sendConfirmPhoneCode</a></td> +<td>Send confirmation code to cancel account deletion, for more info <a href="/api/account-deletion">click here »</a></td> +</tr> +<tr> +<td><a href="/method/account.setAccountTTL">account.setAccountTTL</a></td> +<td>Set account self-destruction period</td> +</tr> +<tr> +<td><a href="/method/account.setPrivacy">account.setPrivacy</a></td> +<td>Change privacy settings of current account</td> +</tr> +<tr> +<td><a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a></td> +<td>Set global privacy settings</td> +</tr> +<tr> +<td><a href="/method/account.getGlobalPrivacySettings">account.getGlobalPrivacySettings</a></td> +<td>Get global privacy settings</td> +</tr> +<tr> +<td><a href="/method/account.updateProfile">account.updateProfile</a></td> +<td>Updates user profile.</td> +</tr> +<tr> +<td><a href="/method/account.updateStatus">account.updateStatus</a></td> +<td>Updates online user status.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-user-profile-pictures" href="#working-with-user-profile-pictures"><i class="anchor-icon"></i></a>Working with user profile pictures</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/photos.deletePhotos">photos.deletePhotos</a></td> +<td>Deletes profile photos.</td> +</tr> +<tr> +<td><a href="/method/photos.getUserPhotos">photos.getUserPhotos</a></td> +<td>Returns the list of user photos.</td> +</tr> +<tr> +<td><a href="/method/photos.updateProfilePhoto">photos.updateProfilePhoto</a></td> +<td>Installs a previously uploaded photo as a profile photo.</td> +</tr> +<tr> +<td><a href="/method/photos.uploadProfilePhoto">photos.uploadProfilePhoto</a></td> +<td>Updates current user profile photo.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-usernames" href="#working-with-usernames"><i class="anchor-icon"></i></a>Working with usernames</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/channels.checkUsername">channels.checkUsername</a></td> +<td>Check if a username is free and can be assigned to a channel/supergroup</td> +</tr> +<tr> +<td><a href="/method/channels.updateUsername">channels.updateUsername</a></td> +<td>Change the username of a supergroup/channel</td> +</tr> +<tr> +<td><a href="/method/account.updateUsername">account.updateUsername</a></td> +<td>Changes username for the current user.</td> +</tr> +<tr> +<td><a href="/method/account.checkUsername">account.checkUsername</a></td> +<td>Validates a username and checks availability.</td> +</tr> +<tr> +<td><a href="/method/contacts.resolveUsername">contacts.resolveUsername</a></td> +<td>Resolve a @username to get peer info</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="working-with-wallpapers" href="#working-with-wallpapers"><i class="anchor-icon"></i></a>Working with wallpapers</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/account.getMultiWallPapers">account.getMultiWallPapers</a></td> +<td>Get info about multiple wallpapers</td> +</tr> +<tr> +<td><a href="/method/account.getWallPaper">account.getWallPaper</a></td> +<td>Get info about a certain wallpaper</td> +</tr> +<tr> +<td><a href="/method/account.getWallPapers">account.getWallPapers</a></td> +<td>Returns a list of available wallpapers.</td> +</tr> +<tr> +<td><a href="/method/account.installWallPaper">account.installWallPaper</a></td> +<td>Install wallpaper</td> +</tr> +<tr> +<td><a href="/method/account.resetWallPapers">account.resetWallPapers</a></td> +<td>Delete installed wallpapers</td> +</tr> +<tr> +<td><a href="/method/account.saveWallPaper">account.saveWallPaper</a></td> +<td>Install/uninstall wallpaper</td> +</tr> +<tr> +<td><a href="/method/account.uploadWallPaper">account.uploadWallPaper</a></td> +<td>Create and upload a new wallpaper</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/mtproto.html b/data/core.telegram.org/mtproto.html new file mode 100644 index 0000000000..fc52d378d4 --- /dev/null +++ b/data/core.telegram.org/mtproto.html @@ -0,0 +1,260 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>MTProto Mobile Protocol</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Please feel free to check out our FAQ for the Technically Inclined. +Client developers are required to comply with the Security…"> + <meta property="og:title" content="MTProto Mobile Protocol"> + <meta property="og:image" content="58401119934796773c"> + <meta property="og:description" content="Please feel free to check out our FAQ for the Technically Inclined. +Client developers are required to comply with the Security…"> + <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?215" 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"></div> + <h1 id="dev_page_title">MTProto Mobile Protocol</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<blockquote> +<p>Please feel free to check out our <a href="http://core.telegram.org/techfaq">FAQ for the Technically Inclined</a>. +Client developers are required to comply with the <a href="/mtproto/security_guidelines">Security Guidelines</a>.</p> +</blockquote> +<h3><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h3> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li> +<p><a href="/mtproto/description">Mobile Protocol: Detailed Description</a></p> +</li> +<li> +<p><a href="/mtproto/auth_key">Creating an Authorization Key</a></p> +</li> +<li> +<p><a href="/mtproto/samples-auth_key">Creating an Authorization Key: Example</a></p> +</li> +<li> +<p><a href="/mtproto/service_messages">Mobile Protocol: Service Messages</a></p> +</li> +<li> +<p><a href="/mtproto/service_messages_about_messages">Mobile Protocol: Service Messages about Messages</a></p> +</li> +<li> +<p><a href="/mtproto/serialize">Binary Data Serialization</a></p> +</li> +<li> +<p><a href="/mtproto/TL">TL Language</a></p> +</li> +<li> +<p><a href="/schema/mtproto">MTProto TL-schema</a></p> +</li> +<li> +<p><a href="/api/end-to-end">End-to-end encryption, Secret Chats</a></p> +</li> +<li> +<p><a href="/schema/end-to-end">End-to-end TL-schema</a></p> +</li> +<li> +<p><a href="/mtproto/security_guidelines">Security Guidelines for Client Software Developers</a></p> +</li> +</ul> +<p></div></p> +<hr> +<p>This page deals with the basic layer of MTProto encryption used for Cloud chats (server-client encryption). See also:</p> +<ul> +<li><a href="/api/end-to-end">Secret Chats, end-to-end-encryption</a></li> +<li><a href="/api/end-to-end/voice-calls">End-to-end encrypted Voice Calls</a></li> +</ul> +<h3><a class="anchor" href="#general-description" id="general-description" name="general-description"><i class="anchor-icon"></i></a>General Description</h3> +<p>The protocol is designed for access to a server API from applications running on mobile devices. It must be emphasized that a web browser is not such an application.</p> +<p>The protocol is subdivided into three virtually independent components:</p> +<ul> +<li>High-level component (API query language): defines the method whereby API queries and responses are converted to binary <em>messages</em>.</li> +<li>Cryptographic (authorization) layer: defines the method by which messages are encrypted prior to being transmitted through the transport protocol.</li> +<li>Transport component: defines the method for the client and the server to transmit messages over some other existing network protocol (such as HTTP, HTTPS, WS (plain websockets), WSS (websockets over HTTPS), TCP, UDP).</li> +</ul> +<div><a href="/file/811140746/2/CzMyJPVnPo8.81605/c2310d6ede1a5e220f"> + <img src="/file/811140746/2/CzMyJPVnPo8.81605/c2310d6ede1a5e220f" alt="MTProto 2.0, server-client encryption, cloud chats" class="dev_page_image" style="max-width: 600px;"> +</a></div> +<blockquote> +<p>As of version 4.6, major Telegram clients are using <strong>MTProto 2.0</strong>, described in this article. +MTProto v1.0 (<a href="/mtproto_v1">described here</a> for reference) is deprecated and is currently being phased out. </p> +</blockquote> +<h3><a class="anchor" href="#brief-component-summary" id="brief-component-summary" name="brief-component-summary"><i class="anchor-icon"></i></a>Brief Component Summary</h3> +<h4><a class="anchor" href="#high-level-component-rpc-query-languageapi" id="high-level-component-rpc-query-languageapi" name="high-level-component-rpc-query-languageapi"><i class="anchor-icon"></i></a>High-Level Component (RPC Query Language/API)</h4> +<p>From the standpoint of the high-level component, the client and the server exchange <em>messages</em> inside a <em>session</em>. The session is attached to the client device (the application, to be more exact) rather than a specific websocket/http/https/tcp connection. In addition, each session is attached to a <em>user key ID</em> by which authorization is actually accomplished.</p> +<p>Several connections to a server may be open; messages may be sent in either direction through any of the connections (a response to a query is not necessarily returned through the same connection that carried the original query, although most often, that is the case; however, in no case can a message be returned through a connection belonging to a different session). When the UDP protocol is used, a response might be returned by a different IP address than the one to which the query had been sent.</p> +<p>There are several types of messages:</p> +<ul> +<li>RPC calls (client to server): calls to API methods</li> +<li>RPC responses (server to client): results of RPC calls</li> +<li>Message received acknowledgment (or rather, notification of status of a set of messages)</li> +<li>Message status query</li> +<li><em>Multipart message</em> or <em>container</em> (a container that holds several messages; needed to send several RPC calls at once over an HTTP connection, for example; also, a container may support gzip).</li> +</ul> +<p>From the standpoint of lower level protocols, a message is a binary data stream aligned along a 4 or 16-byte boundary. The first several fields in the message are fixed and are used by the cryptographic/authorization system.</p> +<p>Each message, either individual or inside a container, consists of a <em>message identifier</em> (64 bits, see below), a <em>message sequence number within a session</em> (32 bits), the <em>length</em> (of the message body in bytes; 32 bits), and a <em>body</em> (any size which is a multiple of 4 bytes). In addition, when a container or a single message is sent, an <em>internal header</em> is added at the top (see below), then the entire message is encrypted, and an <em>external header</em> is placed at the top of the message (a 64-bit <em>key identifier</em> and a 128-bit <em>message key</em>).</p> +<p>A <em>message body</em> normally consists of a 32-bit <em>message type</em> followed by type-dependent <em>parameters</em>. In particular, each RPC function has a corresponding message type. For more detail, see <a href="/mtproto/serialize">Binary Data Serialization</a>, <a href="/mtproto/service_messages">Mobile Protocol: Service Messages</a>.</p> +<p>All numbers are written as little endian. However, very large numbers (2048-bit) used in RSA and DH are written in the big endian format because that is how the OpenSSL library does it.</p> +<h4><a class="anchor" href="#authorization-and-encryption" id="authorization-and-encryption" name="authorization-and-encryption"><i class="anchor-icon"></i></a>Authorization and Encryption</h4> +<p>Prior to a message (or a multipart message) being transmitted over a network using a transport protocol, it is encrypted in a certain way, and an <em>external header</em> is added at the top of the message which is: a 64-bit <em>key identifier</em> (that uniquely identifies an <em>authorization key</em> for the server as well as the <em>user</em>) and a 128-bit <em>message key</em>. A user key together with the message key defines an actual 256-bit key which is what encrypts the message using AES-256 encryption. Note that the initial part of the message to be encrypted contains variable data (session, message ID, sequence number, server salt) that obviously influences the message key (and thus the AES key and iv). The message key is defined as the 128 middle bits of the SHA256 of the message body (including session, message ID, etc.), including the padding bytes, prepended by 32 bytes taken from the authorization key. Multipart messages are encrypted as a single message.</p> +<blockquote> +<p>For a technical specification, see <a href="/mtproto/description">Mobile Protocol: Detailed Description</a></p> +</blockquote> +<p>The first thing a client application must do is <a href="/mtproto/auth_key">create an authorization key</a> which is normally generated when it is first run and almost never changes.</p> +<p>The protocol’s principal drawback is that an intruder passively intercepting messages and then somehow appropriating the authorization key (for example, by stealing a device) will be able to decrypt all the intercepted messages <em>post factum</em>. This probably is not too much of a problem (by stealing a device, one could also gain access to all the information cached on the device without decrypting anything); however, the following steps could be taken to overcome this weakness:</p> +<ul> +<li><em>Session keys</em> generated using the Diffie-Hellman protocol and used in conjunction with the authorization and the message keys to select AES parameters. To create these, the first thing a client must do after creating a new session is send a special RPC query to the server (“generate session key”) to which the server will respond, whereupon all subsequent messages within the session are encrypted using the session key as well.</li> +<li>Protecting the key stored on the client device with a (text) password; this password is never stored in memory and is entered by a user when starting the application or more frequently (depending on application settings).</li> +<li>Data stored (cached) on the user device can also be protected by encryption using an authorization key which, in turn, is to be password-protected. Then, a password will be required to gain access even to that data.</li> +</ul> +<h4><a class="anchor" href="#time-synchronization" id="time-synchronization" name="time-synchronization"><i class="anchor-icon"></i></a>Time Synchronization</h4> +<p>If client time diverges widely from server time, a server may start ignoring client messages, or vice versa, because of an invalid message identifier (which is closely related to creation time). Under these circumstances, the server will send the client a special message containing the correct time and a certain 128-bit salt (either explicitly provided by the client in a special RPC synchronization request or equal to the key of the latest message received from the client during the current session). This message could be the first one in a container that includes other messages (if the time discrepancy is significant but does not as yet result in the client’s messages being ignored).</p> +<p>Having received such a message or a container holding it, the client first performs a time synchronization (in effect, simply storing the difference between the server’s time and its own to be able to compute the “correct” time in the future) and then verifies that the message identifiers for correctness.</p> +<p>Where a correction has been neglected, the client will have to generate a new session to assure the monotonicity of message identifiers.</p> +<h3><a class="anchor" href="#mtproto-transport" id="mtproto-transport" name="mtproto-transport"><i class="anchor-icon"></i></a>MTProto transport</h3> +<p>Before being sent using the selected transport protocol, the payload has to be wrapped in a secondary protocol header, defined by the appropriate MTProto transport protocol. </p> +<ul> +<li><a href="mtproto/mtproto-transports#abridged">Abridged</a></li> +<li><a href="mtproto/mtproto-transports#intermediate">Intermediate</a></li> +<li><a href="mtproto/mtproto-transports#padded-intermediate">Padded intermediate</a></li> +<li><a href="mtproto/mtproto-transports#full">Full</a></li> +</ul> +<p>The server recognizes these different protocols (and distinguishes them from HTTP, too) by the header. +Additionally, the following transport features can be used: </p> +<ul> +<li><a href="mtproto/mtproto-transports#quick-ack">Quick ack</a></li> +<li><a href="mtproto/mtproto-transports#transport-errors">Transport errors</a></li> +<li><a href="mtproto/mtproto-transports#transport-obfuscation">Transport obfuscation</a></li> +</ul> +<p>Example implementations for these protocols can be seen in <a href="https://github.com/tdlib/td/blob/master/td/mtproto/TcpTransport.cpp">tdlib</a> and <a href="https://github.com/danog/MadelineProto/tree/master/src/danog/MadelineProto/Stream/MTProtoTransport">MadelineProto</a>.</p> +<h3><a class="anchor" href="#transport" id="transport" name="transport"><i class="anchor-icon"></i></a>Transport</h3> +<p>Enables the delivery of encrypted containers together with the external header (hereinafter, <em>Payload</em>) from client to server and back. +Multiple transport protocols are defined:</p> +<ul> +<li><a href="/mtproto/transports#tcp">TCP</a></li> +<li><a href="/mtproto/transports#websocket">Websocket</a></li> +<li><a href="/mtproto/transports#websocket-over-https">Websocket over HTTPS</a></li> +<li><a href="/mtproto/transports#http">HTTP</a></li> +<li><a href="/mtproto/transports#https">HTTPS</a></li> +<li>UDP</li> +</ul> +<p>(We shall examine only the first five types.)</p> +<h3><a class="anchor" href="#recap" id="recap" name="recap"><i class="anchor-icon"></i></a>Recap</h3> +<p>To recap, using the <a href="https://en.wikipedia.org/wiki/OSI_model#Layer_architecture">ISO/OSI stack as comparison</a>: </p> +<ul> +<li>Layer 7 (Application): <a href="#high-level-component-rpc-query-languageapi">High-level RPC API</a></li> +<li>Layer 6 (Presentation): <a href="/mtproto/TL">Type Language</a></li> +<li>Layer 5 (Session): <a href="#high-level-component-rpc-query-languageapi">MTProto session</a></li> +<li>Layer 4 (Transport):<ul> +<li>4.3: <a href="#mtproto-transport">MTProto transport protocol</a></li> +<li>4.2: <a href="/mtproto/mtproto-transports#transport-obfuscation">MTProto obfuscation (optional)</a></li> +<li>4.1: <a href="#transport">Transport protocol</a></li> +</ul> +</li> +<li>Layer 3 (Network): IP</li> +<li>Layer 2 (Data link): MAC/LLC</li> +<li>Layer 1 (Physical): IEEE 802.3, IEEE 802.11, etc...</li> +</ul></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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/mtproto/security_guidelines.html b/data/core.telegram.org/mtproto/security_guidelines.html new file mode 100644 index 0000000000..180cb6991a --- /dev/null +++ b/data/core.telegram.org/mtproto/security_guidelines.html @@ -0,0 +1,177 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Security Guidelines for Client Developers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Important checks required in your client application."> + <meta property="og:title" content="Security Guidelines for Client Developers"> + <meta property="og:image" content="2d1fe58b932e5bef0d"> + <meta property="og:description" content="Important checks required in your client application."> + <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?215" 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/security_guidelines" >Security Guidelines for Client Developers</a></li></ul></div> + <h1 id="dev_page_title">Security Guidelines for Client Developers</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><strong>See also:</strong></p> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="/api/pfs">Perfect Forward Secrecy</a></li> +<li><a href="/api/end-to-end">Secret chats, end-to-end encryption</a></li> +<li><a href="/api/end-to-end/pfs">Perfect Forward Secrecy in Secret Chats</a></li> +<li><a href="/mtproto/description">MTProto 2.0, Detailed Description</a> +</div></li> +</ul> +<p>While <a href="/mtproto">MTProto</a> is designed to be a reasonably fast and secure protocol, its advantages can be easily negated by careless implementation. We collected some security guidelines for client software developers on this page. All Telegram clients are required to comply.</p> +<blockquote> +<p>Note that as of version 4.6, major Telegram clients are using <strong>MTProto 2.0</strong>. +MTProto v.1.0 is deprecated and is currently being phased out.</p> +</blockquote> +<h3><a class="anchor" href="#diffie-hellman-key-exchange" id="diffie-hellman-key-exchange" name="diffie-hellman-key-exchange"><i class="anchor-icon"></i></a>Diffie-Hellman key exchange</h3> +<p>We use DH key exchange in two cases:</p> +<ul> +<li><a href="/mtproto/auth_key">Creating an authorization key</a></li> +<li><a href="/api/end-to-end">Establishing Secret Chats with end-to-end encryption</a></li> +</ul> +<p>In both cases, there are some verifications to be done whenever DH is used:</p> +<h4><a class="anchor" href="#validation-of-dh-parameters" id="validation-of-dh-parameters" name="validation-of-dh-parameters"><i class="anchor-icon"></i></a>Validation of DH parameters</h4> +<p>Client is expected to check whether <strong>p = dh_prime</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that 2^2047 < p < 2^2048), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> -- namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as not to repeat lengthy computations in future.</p> +<p>If the verification takes too long (which is the case for older mobile devices), one might initially run only 15 Miller--Rabin iterations (use parameter 30 in Java) for verifying primeness of <strong>p</strong> and <strong>(p - 1)/2</strong> with error probability not exceeding one billionth, and do more iterations in the background later.</p> +<p>Another way to optimize this is to embed into the client application code a small table with some known "good" couples <strong>(g,p)</strong> (or just known safe primes <strong>p</strong>, since the condition on <strong>g</strong> is easily verified during execution), checked during code generation phase, so as to avoid doing such verification during runtime altogether. The server rarely changes these values, thus one usually needs to put the current value of server's <strong>dh_prime</strong> into such a table. For example, the current value of <strong>dh_prime</strong> equals (in big-endian byte order)</p> +<pre><code>C7 1C AE B9 C6 B1 C9 04 8E 6C 52 2F 70 F1 3F 73 98 0D 40 23 8E 3E 21 C1 49 34 D0 37 56 3D 93 0F 48 19 8A 0A A7 C1 40 58 22 94 93 D2 25 30 F4 DB FA 33 6F 6E 0A C9 25 13 95 43 AE D4 4C CE 7C 37 20 FD 51 F6 94 58 70 5A C6 8C D4 FE 6B 6B 13 AB DC 97 46 51 29 69 32 84 54 F1 8F AF 8C 59 5F 64 24 77 FE 96 BB 2A 94 1D 5B CD 1D 4A C8 CC 49 88 07 08 FA 9B 37 8E 3C 4F 3A 90 60 BE E6 7C F9 A4 A4 A6 95 81 10 51 90 7E 16 27 53 B5 6B 0F 6B 41 0D BA 74 D8 A8 4B 2A 14 B3 14 4E 0E F1 28 47 54 FD 17 ED 95 0D 59 65 B4 B9 DD 46 58 2D B1 17 8D 16 9C 6B C4 65 B0 D6 FF 9C A3 92 8F EF 5B 9A E4 E4 18 FC 15 E8 3E BE A0 F8 7F A9 FF 5E ED 70 05 0D ED 28 49 F4 7B F9 59 D9 56 85 0C E9 29 85 1F 0D 81 15 F6 35 B1 05 EE 2E 4E 15 D0 4B 24 54 BF 6F 4F AD F0 34 B1 04 03 11 9C D8 E3 B9 2F CC 5B</code></pre> +<h4><a class="anchor" href="#g-a-and-g-b-validation" id="g-a-and-g-b-validation" name="g-a-and-g-b-validation"><i class="anchor-icon"></i></a>g_a and g_b validation</h4> +<p>Apart from the conditions on the Diffie-Hellman prime <strong>dh_prime</strong> and generator <strong>g</strong>, both sides are to check that <strong>g</strong>, <strong>g_a</strong> and <strong>g_b</strong> are greater than <strong>1</strong> and less than <strong>dh_prime - 1</strong>. We recommend checking that <strong>g_a</strong> and <strong>g_b</strong> are between <strong>2^{2048-64}</strong> and <strong>dh_prime - 2^{2048-64}</strong> as well.</p> +<h4><a class="anchor" href="#checking-sha1-hash-values-during-key-generation" id="checking-sha1-hash-values-during-key-generation" name="checking-sha1-hash-values-during-key-generation"><i class="anchor-icon"></i></a>Checking SHA1 hash values during key generation</h4> +<p>Once the client receives a <code>server_DH_params_ok</code> answer in step 5) of the Authorization Key generation protocol and decrypts it obtaining <code>answer_with_hash</code>, it MUST check that </p> +<pre><code>answer_with_hash := SHA1(answer) + answer + (0-15 random bytes)</code></pre> +<p>In other words, the first 20 bytes of <code>answer_with_hash</code> must be equal to SHA1 of the remainder of the decrypted message without the padding random bytes.</p> +<h4><a class="anchor" href="#checking-nonce-server-nonce-and-new-nonce-fields" id="checking-nonce-server-nonce-and-new-nonce-fields" name="checking-nonce-server-nonce-and-new-nonce-fields"><i class="anchor-icon"></i></a>Checking nonce, server_nonce and new_nonce fields</h4> +<p>When the client receives and/or decrypts server messages during creation of Authorization Key, and these messages contain some nonce fields already known to the client from messages previously obtained during the same run of the protocol, the client is to check that these fields indeed contain the values previosly known.</p> +<h4><a class="anchor" href="#using-secure-pseudorandom-number-generator-to-create-dh-secret-parameters-a-and-b" id="using-secure-pseudorandom-number-generator-to-create-dh-secret-parameters-a-and-b" name="using-secure-pseudorandom-number-generator-to-create-dh-secret-parameters-a-and-b"><i class="anchor-icon"></i></a>Using secure pseudorandom number generator to create DH secret parameters <code>a</code> and <code>b</code></h4> +<p>Client must use a cryptographically secure PRNG to generate secret exponents <code>a</code> or <code>b</code> for DH key exchange. For secret chats, the client might request some entropy (random bytes) from the server while invoking <a href="/method/messages.getDhConfig">messages.getDhConfig</a> and feed these random bytes into its PRNG (for example, by <code>PRNG_seed</code> if OpenSSL library is used), but never using these "random" bytes by themselves or replacing by them the local PRNG seed. One should mix bytes received from server into local PRNG seed.</p> +<h3><a class="anchor" href="#mtproto-encrypted-messages" id="mtproto-encrypted-messages" name="mtproto-encrypted-messages"><i class="anchor-icon"></i></a>MTProto Encrypted Messages</h3> +<p>Some important checks are to be done while sending and especially receiving <a href="/mtproto/description">encrypted MTProto messages</a>.</p> +<h4><a class="anchor" href="#checking-sha256-hash-value-of-msg-key" id="checking-sha256-hash-value-of-msg-key" name="checking-sha256-hash-value-of-msg-key"><i class="anchor-icon"></i></a>Checking SHA256 hash value of msg_key</h4> +<p><code>msg_key</code> is used not only to compute the AES key and IV to decrypt the received message. After decryption, the client <strong>MUST</strong> check that <code>msg_key</code> is indeed equal to SHA256 of the plaintext obtained as the result of decryption (including the final 12...1024 padding bytes), prepended with 32 bytes taken from the <code>auth_key</code>, as explained in <a href="/mtproto/description#defining-aes-key-and-initialization-vector">MTProto 2.0 Description</a>.</p> +<p>If an error is encountered before this check could be performed, the client <strong>must</strong> perform the <code>msg_key</code> check anyway before returning any result. Note that the response to any error encountered before the <code>msg_key</code> check <strong>must</strong> be the same as the response to a failed <code>msg_key</code> check.</p> +<h4><a class="anchor" href="#checking-message-length" id="checking-message-length" name="checking-message-length"><i class="anchor-icon"></i></a>Checking message length</h4> +<p>The client <strong>must</strong> check that the length of the message or container obtained from the decrypted message (computed from its <code>length</code> field) does not exceed the total size of the plaintext, and that the difference (i.e. the length of the random padding) lies in the range from 12 to 1024 bytes.</p> +<p>The length should be always divisible by 4 and non-negative. On no account the client is to access data past the end of the decryption buffer containing the plaintext message.</p> +<h4><a class="anchor" href="#checking-session-id" id="checking-session-id" name="checking-session-id"><i class="anchor-icon"></i></a>Checking session_id</h4> +<p>The client is to check that the <code>session_id</code> field in the decrypted message indeed equals to that of an active session created by the client.</p> +<h4><a class="anchor" href="#checking-msg-id" id="checking-msg-id" name="checking-msg-id"><i class="anchor-icon"></i></a>Checking msg_id</h4> +<p>The client must check that <code>msg_id</code> has even parity for messages from client to server, and odd parity for messages from server to client.</p> +<p>In addition, the identifiers (msg_id) of the last N messages received from the other side must be stored, and if a message comes in with an msg_id lower than all or equal to any of the stored values, that message is to be ignored. Otherwise, the new message msg_id is added to the set, and, if the number of stored msg_id values is greater than N, the oldest (i. e. the lowest) is discarded.</p> +<p>In addition, msg_id values that belong over 30 seconds in the future or over 300 seconds in the past are to be ignored (recall that <code>msg_id</code> approximately equals unixtime * 2^32). This is especially important for the server. The client would also find this useful (to protect from a replay attack), but only if it is certain of its time (for example, if its time has been synchronized with that of the server).</p> +<p>Certain client-to-server service messages containing data sent by the client to the server (for example, <code>msg_id</code> of a recent client query) may, nonetheless, be processed on the client even if the time appears to be “incorrect”. This is especially true of messages to change server_salt and notifications about invalid time on the client. See <a href="/mtproto/service_messages">Mobile Protocol: Service Messages</a>.</p> +<h2><a class="anchor" href="#behavior-in-case-of-mismatch" id="behavior-in-case-of-mismatch" name="behavior-in-case-of-mismatch"><i class="anchor-icon"></i></a>Behavior in case of mismatch</h2> +<p>If one of the checks listed above fails, the client is to completely discard the message obtained from server. We also recommend closing and reestablishing the TCP connection to the server, then retrying the operation or the whole key generation protocol.</p> +<p>No information from incorrect messages can be used. Even if the application throws an exception and dies, this is much better than continuing with invalid data.</p> +<p>Notice that invalid messages will infrequently appear during normal work even if no malicious tampering is being done. This is due to network transmission errors. We recommend ignoring the invalid message and closing the TCP connection, then creating a new TCP connection to the server and retrying the original query.</p> +<blockquote> +<p>The previous version of security recommendations relevant for MTProto 1.0 clients is available <a href="/mtproto/security_guidelines_v1">here</a>.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/passport.html b/data/core.telegram.org/passport.html new file mode 100644 index 0000000000..2a175b5ae2 --- /dev/null +++ b/data/core.telegram.org/passport.html @@ -0,0 +1,690 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Passport Manual</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram Passport is a unified authorization method for services that require personal identification. Users can upload…"> + <meta property="og:title" content="Telegram Passport Manual"> + <meta property="og:image" content="390b421982e22447ad"> + <meta property="og:description" content="Telegram Passport is a unified authorization method for services that require personal identification. Users can upload…"> + <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?215" 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 Passport Manual</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><strong>Telegram Passport</strong> is a unified authorization method for services that require personal identification. Users can upload their documents once, then instantly share their data with services that require real-world ID (finance, ICOs, etc.). Telegram doesn't have access to the users' personal information thanks to end-to-end encryption.</p> +<h3><a class="anchor" href="#overview" id="overview" name="overview"><i class="anchor-icon"></i></a>Overview</h3> +<p>From the perspective of a service that requires real-world ID, the process looks like this:</p> +<ul> +<li>A user presses "Log in with Telegram" on your <strong>website</strong> or in your <strong>app</strong>.</li> +<li>You <a href="#requesting-information">request</a> the <a href="#fields">data</a> you need.</li> +<li>The user accepts your <a href="#privacy-policy">privacy policy</a> and agrees to share their data.</li> +<li>The user's Telegram app downloads and decrypts the data you requested from the end-to-end encrypted storage on Telegram.</li> +<li>If some of the data you requested is missing, the user can add it to their Telegram Passport at this point.</li> +<li>The user's app encrypts the data with your <a href="#generating-your-public-key">public key</a> and sends it to you.</li> +<li>You <a href="#decrypting-data">decrypt</a> the data, check it for <a href="#fixing-errors">errors</a> and re-request any missing or invalid information.</li> +<li>You sign the user up for your service. <strong>Tada!</strong></li> +</ul> +<p>Check out <a href="https://core.telegram.org/passport/example">this example</a> to see Telegram Passport in action.</p> +<blockquote> +<p>To learn more about Telegram Passport from the perspective of a user, please see <a href="https://telegram.org/blog/passport">this blog post</a> and the <a href="/api/passport">technical MTProto documentation</a>. +See <a href="/passport/encryption">this page</a> if you're interested in encryption algorithms used on Telegram's side.</p> +</blockquote> +<h3><a class="anchor" href="#recent-changes" id="recent-changes" name="recent-changes"><i class="anchor-icon"></i></a>Recent changes</h3> +<h4><a class="anchor" href="#august-25-2018" id="august-25-2018" name="august-25-2018"><i class="anchor-icon"></i></a>August 25, 2018</h4> +<p><strong>Telegram Passport 1.1</strong> (<a href="https://telegram.org/blog/export-and-more#improved-telegram-passport">blog post</a>)</p> +<ul> +<li>Added support for requesting <strong>several documents of one type</strong>. See the new objects <a href="#passportscope">PassportScope</a>, <a href="#passportscopeelement">PassportScopeElement</a>, <a href="#passportscopeelementone">PassportScopeElementOneOfSeveral</a> and <a href="#passportscopeelementone">PassportScopeElementOne</a>.</li> +<li>Added support for <strong>middle names</strong>.</li> +<li>Added support for requesting certified <strong>English translations</strong> for documents (see <a href="#fields">Fields</a>; new field <em>translation</em> also added to the <a href="#securevalue">SecureValue</a> object). <strong>Note:</strong> Please only request translations <em>after</em> you have received a valid document that requires one.</li> +<li>Added support for requesting <strong>names</strong> in the language of the user's country of residence (if other than English). New fields <em>first_name_native</em>, <em>last_name_native</em> and <em>middle_name_native</em> added to the <a href="#personaldetails">PersonalDetails</a> object.</li> +<li>Replaced the <em>payload</em> parameter with the new parameter <em>nonce</em>, which serves the same function, to make the purpose more obvious (see <a href="#request-parameters">Request Parameters</a> and the <a href="#credentials">Credentials</a> object).</li> +<li>Updated the <a href="/passport/example">example page</a> to support the new functionality.</li> +</ul> +<h3><a class="anchor" href="#setting-up-telegram-passport" id="setting-up-telegram-passport" name="setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting Up Telegram Passport</h3> +<p>To integrate Telegram Passport into your login or verification flow, you need a working Telegram bot (see <a href="/bots#3-how-do-i-create-a-bot">this page</a> for information on how to get one).</p> +<p>To request data from Telegram Passport users, your bot will need to generate a pair of encryption keys.</p> +<h4><a class="anchor" href="#generating-a-private-key" id="generating-a-private-key" name="generating-a-private-key"><i class="anchor-icon"></i></a>Generating a private key</h4> +<p>First, use a console to generate a <strong>private</strong> key:</p> +<pre><code>openssl genrsa 2048 > private.key</code></pre> +<p><strong>WARNING: Keep your private key SECRET!</strong> </p> +<h4><a class="anchor" href="#generating-your-public-key" id="generating-your-public-key" name="generating-your-public-key"><i class="anchor-icon"></i></a>Generating your public key</h4> +<p>Then use the console to print the corresponding <strong>public</strong> key:</p> +<pre><code>openssl rsa -in private.key -pubout</code></pre> +<p>Use the <strong>/setpublickey</strong> command with <a href="https://t.me/BotFather">@BotFather</a> to connect this public key with your bot.</p> +<h4><a class="anchor" href="#privacy-policy" id="privacy-policy" name="privacy-policy"><i class="anchor-icon"></i></a>Privacy Policy</h4> +<p>Add a link to your Privacy Policy by using the <strong>/setprivacypolicy</strong> command. Users will see this link when offered to authorize you to access their data.</p> +<h3><a class="anchor" href="#requesting-information" id="requesting-information" name="requesting-information"><i class="anchor-icon"></i></a>Requesting Information</h3> +<h4><a class="anchor" href="#sdk" id="sdk" name="sdk"><i class="anchor-icon"></i></a>SDK</h4> +<p>To request information stored in a Telegram Passport, use one of these <strong>SDKs</strong>:</p> +<ul> +<li><a href="/passport/sdk-ios-mac">iOS/macOS SDK</a></li> +<li><a href="/passport/sdk-android">Android SDK</a></li> +<li><a href="/passport/sdk-javascript">Javascript SDK</a></li> +</ul> +<h4><a class="anchor" href="#request-parameters" id="request-parameters" name="request-parameters"><i class="anchor-icon"></i></a>Request Parameters</h4> +<p>Use the following parameters to request information with the SDK:</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Parameters</strong></td> +<td><strong>Type</strong></td> +<td><strong>Required</strong></td> +</tr> +<tr> +<td>bot_id</td> +<td>Integer</td> +<td>Yes</td> +</tr> +<tr> +<td>scope</td> +<td><a href="#passportscope">PassportScope</a></td> +<td>Yes</td> +</tr> +<tr> +<td>public_key</td> +<td>String</td> +<td>Yes</td> +</tr> +<tr> +<td>nonce</td> +<td>String</td> +<td>Yes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportscope" id="passportscope" name="passportscope"><i class="anchor-icon"></i></a>PassportScope</h4> +<p>This object represents the data to be requested.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>data</td> +<td>Array of <a href="#passportscopeelement">PassportScopeElement</a></td> +<td>List of requested elements, each type may be used only once in the entire array of PassportScopeElement objects</td> +</tr> +<tr> +<td>v</td> +<td>Integer</td> +<td>Scope version, must be <em>1</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportscopeelement" id="passportscopeelement" name="passportscopeelement"><i class="anchor-icon"></i></a>PassportScopeElement</h4> +<p>This object represents a requested element, should be one of:</p> +<ul> +<li><a href="#passportscopeelementoneofseveral">PassportScopeElementOneOfSeveral</a> - use to request any one of the documents included in the scope.</li> +<li><a href="#passportscopeelementone">PassportScopeElementOne</a> – use to request one particular document.</li> +</ul> +<h4><a class="anchor" href="#passportscopeelementoneofseveral" id="passportscopeelementoneofseveral" name="passportscopeelementoneofseveral"><i class="anchor-icon"></i></a>PassportScopeElementOneOfSeveral</h4> +<p>This object represents several elements one of which must be provided.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>one_of</td> +<td>Array of <a href="#passportscopeelementone">PassportScopeElementOne</a></td> +<td>List of elements one of which must be provided; must contain either several of “passport”, “driver_license”, “identity_card”, “internal_passport” <strong>or</strong> several of “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration”, “temporary_registration”</td> +</tr> +<tr> +<td>selfie</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document from this list that the user chooses to upload.</td> +</tr> +<tr> +<td>translation</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a translation of the document from this list that the user chooses to upload. <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportscopeelementone" id="passportscopeelementone" name="passportscopeelementone"><i class="anchor-icon"></i></a>PassportScopeElementOne</h4> +<p>This object represents one particular element that must be provided. If no options are needed, <em>String</em> can be used instead of this object to specify the type of the element.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Element type. One of "personal_details", "passport", "driver_license", "identity_card", "internal_passport", "address", "utility_bill", "bank_statement", "rental_agreement", "passport_registration", "temporary_registration", "phone_number", "email"</td> +</tr> +<tr> +<td>selfie</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document as well. Available for "passport", "driver_license", "identity_card" and "internal_passport"</td> +</tr> +<tr> +<td>translation</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a translation of the document as well. Available for "passport", "driver_license", "identity_card", "internal_passport", "utility_bill", "bank_statement", "rental_agreement", "passport_registration" and "temporary_registration". <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td> +</tr> +<tr> +<td>native_names</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter to request the first, last and middle name of the user in the language of the user's country of residence. Available for "personal_details"</td> +</tr> +</tbody> +</table> +<p>You can also use the special type "id_document" as an alias for one of "passport", "driver_license", "identity_card" and the special type "address_document" as an alias for one of "utility_bill", "bank_statement", "rental_agreement". +So <code>{"type":"id_document",selfie:true}</code> is equal to <code>{"one_of":["passport","driver_license","identity_card"],selfie:true}</code>.</p> +<h4><a class="anchor" href="#fields" id="fields" name="fields"><i class="anchor-icon"></i></a>Fields</h4> +<p>Your bot can request personal details, one or several types of identity document, residential address, one or several types of proof of address document, a phone number, or an email address. You can also request optional <strong>selfies</strong> with the document and certified <strong>English translations</strong> of the document. +This is just a list of data types that can be requested, and the encrypted objects that will contain such data.</p> +<blockquote> +<p><strong>Note:</strong> We suggest to only request English translations <em>after</em> you have received a valid document that requires one.</p> +</blockquote> +<div><table class="table"> +<thead> +<tr><th>Name</th><th>Key</th><th>Type</th><th>Description</th></tr> +</thead> +<tbody> +<tr><td>personal_details</td><td>data</td><td><a href="#personaldetails">PersonalDetails</a></td><td>Personal Details</td></tr> +<tr><td rowspan="4">passport</td><td>data</td><td><a href="#iddocumentdata">IdDocumentData</a></td><td rowspan="4">Passport</td></tr> +<tr><td>front_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>selfie</td><td><i>Optional.</i> <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="4">internal_passport</td><td>data</td><td><a href="#iddocumentdata">IdDocumentData</a></td><td rowspan="4">Internal Passport</td></tr> +<tr><td>front_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>selfie</td><td><i>Optional.</i> <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="5">driver_license</td><td>data</td><td><a href="#iddocumentdata">IdDocumentData</a></td><td rowspan="5">Driver License</td></tr> +<tr><td>front_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>reverse_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>selfie</td><td><i>Optional.</i> <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="5">identity_card</td><td>data</td><td><a href="#iddocumentdata">IdDocumentData</a></td><td rowspan="5">Identity Card</td></tr> +<tr><td>front_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>reverse_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>selfie</td><td><i>Optional.</i> <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>address</td><td>data</td><td><a href="#residentialaddress">ResidentialAddress</a></td><td>Address</td></tr> +<tr><td rowspan="2">utility_bill</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Utility Bill</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="2">bank_statement</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Bank Statement</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="2">rental_agreement</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Rental Agreement</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="2">passport_registration</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Registration Page in the Internal Passport</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="2">temporary_registration</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Temporary Registration</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>phone_number</td><td></td><td>String</td><td>Phone number</td></tr> +<tr><td>email</td><td></td><td>String</td><td>Email</td></tr> +</tbody> +</table></div> +<h4><a class="anchor" href="#personaldetails" id="personaldetails" name="personaldetails"><i class="anchor-icon"></i></a>PersonalDetails</h4> +<p>This object represents personal details.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>First Name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td>Last Name</td> +</tr> +<tr> +<td>middle_name</td> +<td>String</td> +<td><em>Optional.</em> Middle Name</td> +</tr> +<tr> +<td>birth_date</td> +<td>String</td> +<td>Date of birth in DD.MM.YYYY format</td> +</tr> +<tr> +<td>gender</td> +<td>String</td> +<td>Gender, <em>male</em> or <em>female</em></td> +</tr> +<tr> +<td>country_code</td> +<td>String</td> +<td>Citizenship (ISO 3166-1 alpha-2 country code)</td> +</tr> +<tr> +<td>residence_country_code</td> +<td>String</td> +<td>Country of residence (ISO 3166-1 alpha-2 country code)</td> +</tr> +<tr> +<td>first_name_native</td> +<td>String</td> +<td>First Name in the language of the user's country of residence</td> +</tr> +<tr> +<td>last_name_native</td> +<td>String</td> +<td>Last Name in the language of the user's country of residence</td> +</tr> +<tr> +<td>middle_name_native</td> +<td>String</td> +<td><em>Optional.</em> Middle Name in the language of the user's country of residence</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#residentialaddress" id="residentialaddress" name="residentialaddress"><i class="anchor-icon"></i></a>ResidentialAddress</h4> +<p>This object represents a residential address.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>street_line1</td> +<td>String</td> +<td>First line for the address</td> +</tr> +<tr> +<td>street_line2</td> +<td>String</td> +<td><em>Optional.</em> Second line for the address</td> +</tr> +<tr> +<td>city</td> +<td>String</td> +<td>City</td> +</tr> +<tr> +<td>state</td> +<td>String</td> +<td><em>Optional.</em> State</td> +</tr> +<tr> +<td>country_code</td> +<td>String</td> +<td>ISO 3166-1 alpha-2 country code</td> +</tr> +<tr> +<td>post_code</td> +<td>String</td> +<td>Address post code</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#iddocumentdata" id="iddocumentdata" name="iddocumentdata"><i class="anchor-icon"></i></a>IdDocumentData</h4> +<p>This object represents the data of an identity document.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>document_no</td> +<td>String</td> +<td>Document number</td> +</tr> +<tr> +<td>expiry_date</td> +<td>String</td> +<td><em>Optional.</em> Date of expiry, in DD.MM.YYYY format</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportfile" id="passportfile" name="passportfile"><i class="anchor-icon"></i></a>PassportFile</h4> +<p>This object represents a <a href="/bots/api#passportfile">PassportFile</a> related to a document. The file is up to 10MB in size and in the .jpg format.</p> +<h3><a class="anchor" href="#receiving-information" id="receiving-information" name="receiving-information"><i class="anchor-icon"></i></a>Receiving information</h3> +<p>When the user confirms your request by pressing the 'Authorize' button, the Bot API sends an <a href="/bots/api#update">Update</a> with the field <em>passport_data</em> to the bot that contains encrypted <a href="/bots/api#passportdata">Telegram Passport data</a>.</p> +<blockquote> +<p>Note that all base64-encoded fields should be decoded before use.</p> +</blockquote> +<h4><a class="anchor" href="#decrypting-data" id="decrypting-data" name="decrypting-data"><i class="anchor-icon"></i></a>Decrypting data</h4> +<p>To decrypt the received data, first, decrypt the credentials contained in <a href="/bots/api#encryptedcredentials">EncryptedCredentials</a>.</p> +<ol> +<li> +<p>Decrypt the credentials secret ( <em>secret</em> field in <a href="/bots/api#encryptedcredentials">EncryptedCredentials</a>) using your <strong>private</strong> key (set OAEP padding option, e.g. <code>OPENSSL_PKCS1_OAEP_PADDING</code> in PHP)</p> +</li> +<li> +<p>Use this secret and the credentials hash ( <em>hash</em> field in <a href="/bots/api#encryptedcredentials">EncryptedCredentials</a>) to calculate <em>credentials_key</em> and <em>credentials_iv</em> as described below:</p> +<pre><code> credentials_secret_hash = SHA512( credentials_secret + credentials_hash ) + credentials_key = slice( credentials_secret_hash, 0, 32 ) + credentials_iv = slice( credentials_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Decrypt the credentials data ( <em>data</em> field in <a href="/bots/api#encryptedcredentials">EncryptedCredentials</a>) by AES256-CBC using these <em>credentials_key</em> and <em>credentials_iv</em>. <strong>IMPORTANT:</strong> At this step, make sure that the credentials hash is equal to <code>SHA256( credentials_data )</code></p> +</li> +<li> +<p>Credentials data is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of this padding (including this byte). Remove the padding to get the data.</p> +</li> +</ol> +<blockquote> +<p>Note that all hashes represent as raw binary data, not hexits</p> +</blockquote> +<h4><a class="anchor" href="#credentials" id="credentials" name="credentials"><i class="anchor-icon"></i></a>Credentials</h4> +<p>Credentials is a JSON-serialized object.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>secure_data</td> +<td><a href="#securedata">SecureData</a></td> +<td>Credentials for encrypted data</td> +</tr> +<tr> +<td>nonce</td> +<td>String</td> +<td>Bot-specified nonce</td> +</tr> +</tbody> +</table> +<p><strong>IMPORTANT:</strong> Make sure that the <strong>nonce</strong> is the same as was passed in the request.</p> +<h4><a class="anchor" href="#securedata" id="securedata" name="securedata"><i class="anchor-icon"></i></a>SecureData</h4> +<p>This object represents the credentials required to decrypt encrypted data. All fields are optional and depend on <a href="#fields">fields</a> that were requested.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>personal_details</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted personal details</td> +</tr> +<tr> +<td>passport</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted passport</td> +</tr> +<tr> +<td>internal_passport</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted internal passport</td> +</tr> +<tr> +<td>driver_license</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted driver license</td> +</tr> +<tr> +<td>identity_card</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted ID card</td> +</tr> +<tr> +<td>address</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted residential address</td> +</tr> +<tr> +<td>utility_bill</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted utility bill</td> +</tr> +<tr> +<td>bank_statement</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted bank statement</td> +</tr> +<tr> +<td>rental_agreement</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted rental agreement</td> +</tr> +<tr> +<td>passport_registration</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted registration from internal passport</td> +</tr> +<tr> +<td>temporary_registration</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted temporary registration</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#securevalue" id="securevalue" name="securevalue"><i class="anchor-icon"></i></a>SecureValue</h4> +<p>This object represents the credentials required to decrypt encrypted values. All fields are optional and depend on the type of <a href="#fields">fields</a> that were requested.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>data</td> +<td><a href="#datacredentials">DataCredentials</a></td> +<td><em>Optional.</em> Credentials for encrypted Telegram Passport data. Available for "personal_details", "passport", "driver_license", "identity_card", "internal_passport" and "address" types.</td> +</tr> +<tr> +<td>front_side</td> +<td><a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for an encrypted document's front side. Available for "passport", "driver_license", "identity_card" and "internal_passport".</td> +</tr> +<tr> +<td>reverse_side</td> +<td><a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for an encrypted document's reverse side. Available for "driver_license" and "identity_card".</td> +</tr> +<tr> +<td>selfie</td> +<td><a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for an encrypted selfie of the user with a document. Available for "passport", "driver_license", "identity_card" and "internal_passport".</td> +</tr> +<tr> +<td>translation</td> +<td>Array of <a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for an encrypted translation of the document. Available for "passport", "driver_license", "identity_card", "internal_passport", "utility_bill", "bank_statement", "rental_agreement", "passport_registration" and "temporary_registration".</td> +</tr> +<tr> +<td>files</td> +<td>Array of <a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for encrypted files. Available for "utility_bill", "bank_statement", "rental_agreement", "passport_registration" and "temporary_registration" types.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#datacredentials" id="datacredentials" name="datacredentials"><i class="anchor-icon"></i></a>DataCredentials</h4> +<p>These credentials can be used to decrypt encrypted data from the <em>data</em> field in <a href="/bots/api#encryptedpassportelement">EncryptedPassportElement</a>.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>data_hash</td> +<td>String</td> +<td>Checksum of encrypted data</td> +</tr> +<tr> +<td>secret</td> +<td>String</td> +<td>Secret of encrypted data</td> +</tr> +</tbody> +</table> +<ol> +<li> +<p>To decrypt data, use the corresponding secret and data_hash from <a href="#datacredentials">DataCredentials</a> as described below:</p> +<pre><code> data_secret_hash = SHA512( data_secret + data_hash ) + data_key = slice( data_secret_hash, 0, 32 ) + data_iv = slice( data_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Use AES256-CBC with this <em>data_key</em> and <em>data_iv</em> to decrypt the data (the <em>data</em> field in <a href="/bots/api#encryptedpassportelement">EncryptedPassportElement</a>). <strong>IMPORTANT:</strong> At this step, make sure that data_hash from the credentials is equal to <code>SHA256( data )</code>.</p> +</li> +<li> +<p>The data is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of the padding (including this byte). Remove padding to get the data.</p> +</li> +<li> +<p>The data is a JSON-serialized object of one of the following types: <a href="#personaldetails">PersonalDetails</a>, <a href="#iddocumentdata">IdDocumentData</a>, <a href="#residentialaddress">ResidentialAddress</a>, depending on <a href="#fields">type</a>.</p> +</li> +</ol> +<h4><a class="anchor" href="#filecredentials" id="filecredentials" name="filecredentials"><i class="anchor-icon"></i></a>FileCredentials</h4> +<p>These credentials can be used to decrypt encrypted files from the <em>front_side</em>, <em>reverse_side</em>, <em>selfie</em>, <em>files</em> and <em>translation</em> fields in <a href="/bots/api#encryptedpassportelement">EncryptedPassportElement</a>.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Checksum of encrypted file</td> +</tr> +<tr> +<td>secret</td> +<td>String</td> +<td>Secret of encrypted file</td> +</tr> +</tbody> +</table> +<ol> +<li> +<p>To decrypt the file, use the corresponding secret and file_hash from <a href="#filecredentials">FileCredentials</a> as described below:</p> +<pre><code> file_secret_hash = SHA512( file_secret + file_hash ) + file_key = slice( file_secret_hash, 0, 32 ) + file_iv = slice( file_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Download the encrypted file using the <a href="/bots/api#getfile">getFile</a> method.</p> +</li> +<li> +<p>Use AES256-CBC with this <em>file_key</em> and <em>file_iv</em> to decrypt the content of the file. <strong>IMPORTANT:</strong> At this step, make sure that file_hash from the credentials is equal to <code>SHA256( file_content )</code>.</p> +</li> +<li> +<p>The content of the file is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of the padding (including that byte). Remove padding to get the file content.</p> +</li> +</ol> +<h3><a class="anchor" href="#fixing-errors" id="fixing-errors" name="fixing-errors"><i class="anchor-icon"></i></a>Fixing errors</h3> +<p>If the data you received contains errors, the bot can use the <a href="/bots/api#setpassportdataerrors">setPassportDataErrors</a> method to inform the user and <a href="#requesting-information">request information</a> again. The user will not be able to resend the data, until all errors are fixed.</p></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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/passport/example.html b/data/core.telegram.org/passport/example.html new file mode 100644 index 0000000000..68d5d0c84e --- /dev/null +++ b/data/core.telegram.org/passport/example.html @@ -0,0 +1,585 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Example</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="If you'd like to test Telegram Passport, use this page to request data. If you'd like to check out a real-life implementation…"> + <meta property="og:title" content="Example"> + <meta property="og:image" content=""> + <meta property="og:description" content="If you'd like to test Telegram Passport, use this page to request data. If you'd like to check out a real-life implementation…"> + <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/telegram-extra.css?9" rel="stylesheet"> + + <link href="/css/telegram.css?215" 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">Example</h1> + + <div id="dev_page_content"><p>If you'd like to test <a href="https://telegram.org/blog/passport">Telegram Passport</a>, use this page to request data. If you'd like to check out a real-life implementation, please see <a href="https://telegram.org/blog/export-and-more#improved-telegram-passport">this blog post</a> for examples of services that have integrated Telegram Passport.</p> +<h3><a class="anchor" href="#request-telegram-passport-data" id="request-telegram-passport-data" name="request-telegram-passport-data"><i class="anchor-icon"></i></a>Request Telegram Passport Data</h3> +<p><script src="/js/telegram-passport2.js?2"></script> +<form class="form-horizontal telegram-passport-form clearfix" id="telegram_passport_form" style=""> + <div class="form-group visible-md-block visible-lg-block"> + <div class="col-md-8 col-md-offset-3"> + <div class="row"> + <label class="col-md-2 col-md-offset-7 control-label"> + <div class="text-center">Selfie</div> + </label> + <label class="col-md-3 control-label"> + <div class="text-center">Translation</div> + </label> + </div> + </div> + </div> + <div class="form-group"> + <label class="col-md-3 control-label">Identity:</label> + <div class="col-md-8"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="personal_details" value="1" onchange="updateForm()" checked /> + <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">Personal Details</span> + </label> + <div class="passport-opt"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="personal_details_native_names" value="1" onchange="updateForm()" /> + <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">name in the language of the user's country of residence</span> + </label> + </div> + </div> + <label class="col-md-3 control-label">ID Documents:</label> + <div class="col-md-8"> + <div class="row"> + <div class="col-md-7"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport" value="1" onchange="updateForm()" checked /> + <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">Passport</span> + </label> + </div> + <div class="col-md-2 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport_selfie" value="1" onchange="updateForm()" /> + <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">with selfie</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-7"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="driver_license" value="1" onchange="updateForm()" checked /> + <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">Driver License</span> + </label> + </div> + <div class="col-md-2 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="driver_license_selfie" value="1" onchange="updateForm()" /> + <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">with selfie</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="driver_license_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-7"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="identity_card" value="1" onchange="updateForm()" checked /> + <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">Identity Card</span> + </label> + </div> + <div class="col-md-2 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="identity_card_selfie" value="1" onchange="updateForm()" /> + <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">with selfie</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="identity_card_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-7"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="internal_passport" value="1" onchange="updateForm()" /> + <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">Internal Passport</span> + </label> + </div> + <div class="col-md-2 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="internal_passport_selfie" value="1" onchange="updateForm()" /> + <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">with selfie</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="internal_passport_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-12 sub-control-label"> + <label class="radio-item"> + <input type="radio" class="radio" name="id_mode" value="one_of" onchange="updateForm()" 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">One of the selected</span> + </label> + <label class="radio-item"> + <input type="radio" class="radio" name="id_mode" value="" onchange="updateForm()" /> + <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">All of the selected</span> + </label> + </div> + </div> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Address:</label> + <div class="col-md-8"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="address" value="1" onchange="updateForm()" checked /> + <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">Residential Address</span> + </label> + </div> + <label class="col-md-3 control-label">Proof of Address:</label> + <div class="col-md-8"> + <div class="row"> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="utility_bill" value="1" onchange="updateForm()" checked /> + <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">Utility Bill</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="utility_bill_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="bank_statement" value="1" onchange="updateForm()" checked /> + <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">Bank Statement</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="bank_statement_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="rental_agreement" value="1" onchange="updateForm()" checked /> + <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">Rental Agreement</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="rental_agreement_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport_registration" value="1" onchange="updateForm()" /> + <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">Registration page from Internal Passport</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport_registration_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="temporary_registration" value="1" onchange="updateForm()" /> + <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">Temporary Registration</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="temporary_registration_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-12 sub-control-label"> + <label class="radio-item"> + <input type="radio" class="radio" name="ad_mode" value="one_of" onchange="updateForm()" 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">One of the selected</span> + </label> + <label class="radio-item"> + <input type="radio" class="radio" name="ad_mode" value="" onchange="updateForm()" /> + <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">All of the selected</span> + </label> + </div> + </div> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Contact:</label> + <div class="col-md-8"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="phone_number" value="1" onchange="updateForm()" checked /> + <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">Phone Number</span> + </label> + </div> + <div class="col-md-8 col-md-offset-3"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="email" value="1" onchange="updateForm()" checked /> + <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">Email</span> + </label> + </div> + </div> + + <div class="form-group telegram-passport-wrap"> + <div class="col-md-8 col-md-offset-3"> + <div class="telegram-passport-login-wrap" id="telegram_passport_login_btn"></div> + <script> +Telegram.Passport.createAuthButton('telegram_passport_login_btn', function() { + var form = $('#telegram_passport_form').get(0); + var fields = ['personal_details', 'address', 'phone_number', 'email']; + var scope_data = []; + for (var i = 0; i < fields.length; i++) { + var field, opts = {}, has_opts = false; + if (form[fields[i]].checked) { + field = fields[i]; + if (form[fields[i] + '_native_names'] && + form[fields[i] + '_native_names'].checked) { + has_opts = true; opts.native_names = true; + } + if (has_opts) { + opts.type = field; + field = opts; + } + scope_data.push(field); + } + } + var id_fields = ['passport', 'internal_passport', 'driver_license', 'identity_card']; + var id_data = []; + for (var i = 0; i < id_fields.length; i++) { + var field, opts = {}, has_opts = false; + if (form[id_fields[i]].checked) { + field = id_fields[i]; + if (form[id_fields[i] + '_selfie'] && + form[id_fields[i] + '_selfie'].checked) { + has_opts = true; opts.selfie = true; + } + if (form[id_fields[i] + '_translation'] && + form[id_fields[i] + '_translation'].checked) { + has_opts = true; opts.translation = true; + } + if (has_opts) { + opts.type = field; + field = opts; + } + id_data.push(field); + } + } + if (id_data.length > 1 && form['id_mode'].value == 'one_of') { + scope_data.push({one_of: id_data}); + } else { + scope_data = scope_data.concat(id_data); + } + var ad_fields = ['utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration']; + var ad_data = []; + for (var i = 0; i < ad_fields.length; i++) { + var field, opts = {}, has_opts = false; + if (form[ad_fields[i]].checked) { + field = ad_fields[i]; + if (form[ad_fields[i] + '_translation'] && + form[ad_fields[i] + '_translation'].checked) { + has_opts = true; opts.translation = true; + } + if (has_opts) { + opts.type = field; + field = opts; + } + ad_data.push(field); + } + } + if (ad_data.length > 1 && form['ad_mode'].value == 'one_of') { + scope_data.push({one_of: ad_data}); + } else { + scope_data = scope_data.concat(ad_data); + } + authOptions.scope = {data: scope_data, v: 1}; + return authOptions; +}, { + radius: 6 +}); + </script> + </div> + </div> +</form> +<div id="telegram_passport_pending" style="display:none;"> + <div class="telegram-passport-pending"><img width="128" height="128" src="/img/passport_processing.gif"></div> +</div> +<form id="telegram_passport_data" class="telegram-passport-form" style="display:none;" onsubmit="return false;"></form></p> +<hr> +<blockquote> +<p>Note that the passport demo bot will only store data for <strong>1 hour</strong> and then discard it. After logging in here, you can use the logout button on this page to reset your session.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/jquery-ui.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>function updatePending() { + $.ajax({ + url: '/loadpassport?hash=telegram-crawler', + type: 'GET', + dataType: 'json', + success: function (data) { + console.log(data); + if (data.html) { + $('#telegram_passport_data').html(data.html); + $('#telegram_passport_pending').hide(); + $('#telegram_passport_data').show(); + initPassportData(data.data); + } else if (data.pending) { + setTimeout(updatePending, 1000); + } else { + $('#telegram_passport_pending').hide(); + $('#telegram_passport_form').show(); + } + }, + error: function (xhr) { + alert(xhr.responseText || 'Unknown error'); + } + }); +} +function updateReject(el, className) { + $(el).parents('.' + className).toggleClass('item-rejected', el.checked); + if (window.passportData) { + var has_checked = false; + for (var i = 0; i < passportData.errors.length; i++) { + if (el.form['reject' + i].checked) { + has_checked = true; break; + } + } + $('#telegram_passport_errors_btn').attr('disabled', !has_checked); + } +} +function updateForm() { + var form = $('#telegram_passport_form').get(0); + var fields = ['passport', 'internal_passport', 'driver_license', 'identity_card', 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration']; + for (var i = 0; i < fields.length; i++) { + var field = fields[i]; + if (form[field]) { + var sfield = field + '_selfie', + tfield = field + '_translation'; + if (form[sfield]) { + if (form[field].checked) { + if (form[sfield].disabled) { + form[sfield].checked = form[sfield].old_checked; + form[sfield].disabled = false; + } + } else { + if (!form[sfield].disabled) { + form[sfield].old_checked = form[sfield].checked; + form[sfield].disabled = true; + form[sfield].checked = false; + } + } + } + if (form[tfield]) { + if (form[field].checked) { + if (form[tfield].disabled) { + form[tfield].checked = form[tfield].old_checked; + form[tfield].disabled = false; + } + } else { + if (!form[tfield].disabled) { + form[tfield].old_checked = form[tfield].checked; + form[tfield].disabled = true; + form[tfield].checked = false; + } + } + } + } + } + var field = 'personal_details'; + var nfield = 'personal_details_native_names'; + if (form[field].checked) { + if (form[nfield].disabled) { + form[nfield].checked = form[nfield].old_checked; + form[nfield].disabled = false; + } + } else { + if (!form[nfield].disabled) { + form[nfield].old_checked = form[nfield].checked; + form[nfield].disabled = true; + form[nfield].checked = false; + } + } + var id_fields = ['passport', 'internal_passport', 'driver_license', 'identity_card']; + var id_sel_cnt = 0; + for (var i = 0; i < id_fields.length; i++) { + var field = id_fields[i]; + if (form[field].checked) { + id_sel_cnt++; + } + } + for (var i = 0; i < form.ad_mode.length; i++) { + form.id_mode[i].disabled = (id_sel_cnt <= 1); + } + var ad_fields = ['utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration']; + var ad_sel_cnt = 0; + for (var i = 0; i < ad_fields.length; i++) { + var field = ad_fields[i]; + if (form[field].checked) { + ad_sel_cnt++; + } + } + for (var i = 0; i < form.ad_mode.length; i++) { + form.ad_mode[i].disabled = (ad_sel_cnt <= 1); + } +} +var authOptions = {"bot_id":543260180,"public_key":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv6m1zBF8lZOCqcxf8hnj\nkvHwuWdU8s4rBWaxKXH\/vDDUklcCS5uhSnmjhxWca9suubaG3lW4HxlCilkeJPVf\njimg5Q8ZqWrR3OoOihEpcG9iJZTOEpsEk7VtEiabgacBG3Quv9JslTrDe95Fn801\nt9d21HXwgMrHeHpWDOn31Dr+woEH+kwySUWa6L\/ZbnGwSNP7eeDTE7Amz1RMDk3t\n8EWGq58u0IQatPcEH09aUQlKzk6MIiALkZ9ILBKCBk6d2WCokKnsdBctovNbxwSx\nhP1qst1r+Yc8iPBZozsDC0ZsC5jXCkcODI3OC0tkNtYzN2XKalW5R0DjDRUDmGhT\nzQIDAQAB\n-----END PUBLIC KEY-----\n","nonce":"telegram-crawler","callback_url":"https:\/\/core.telegram.org\/passport\/example?passport_ssid=telegram-crawler"}; +function initPassportData(data) { + window.passportData = data; +} +function sendErrors(el) { + if (!window.passportData) { + return false; + } + var errors = []; + for (var i = 0; i < passportData.errors.length; i++) { + if (el.form['reject' + i].checked) { + errors.push(passportData.errors[i]); + } + } + $.ajax({ + url: passportData.set_errors_url, + type: 'POST', + data: JSON.stringify(errors), + contentType: 'application/json', + dataType: 'json', + success: function (result) { + if (result) { + $('#telegram_passport_errors_sent').addClass('shown'); + setTimeout(function() { + $('#telegram_passport_errors_sent').removeClass('shown'); + }, 2000); + } + }, + error: function (xhr) { + alert(xhr.responseText || 'Unknown error'); + } + }); + return false; +} +function restartAuth() { + $.ajax({ + url: '/restartpassport?hash=telegram-crawler', + type: 'GET', + }); + $('#telegram_passport_form').show(); + $('#telegram_passport_data').hide(); + $('#telegram_passport_pending').hide(); + return false; +} +initRipple(); +updateForm(); + +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/reproducible-builds.html b/data/core.telegram.org/reproducible-builds.html new file mode 100644 index 0000000000..d0f23db600 --- /dev/null +++ b/data/core.telegram.org/reproducible-builds.html @@ -0,0 +1,488 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Reproducible Builds for iOS and Android</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="This page contains instructions for verifying that Telegram's open source code is exactly the same as the code that is used…"> + <meta property="og:title" content="Reproducible Builds for iOS and Android"> + <meta property="og:image" content="https://core.telegram.org/file/464001785/3/GqL9jQg6ChI.76277/1377819b17eaa4dcce"> + <meta property="og:description" content="This page contains instructions for verifying that Telegram's open source code is exactly the same as the code that is used…"> + <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?215" 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">Reproducible Builds for iOS and Android</h1> + + <div id="dev_page_content"><p>This page contains instructions for verifying that Telegram's <a href="https://telegram.org/apps#source-code">open source code</a> is exactly the same as the code that is used to build the apps that are available in the <a href="https://telegram.org/dl/ios">App Store</a>, <a href="https://telegram.org/dl/android">Google Play</a> and <a href="https://telegram.org/android">directly</a> on the Telegram website.</p> +<p><strong>Warning:</strong> Telegram supports reproducible builds as of <a href="https://telegram.org/blog/verifiable-apps-and-more"><strong>version 5.13</strong></a>. Bear in mind that, at this stage, the verification process should be considered <strong>experimental</strong>. We will be updating our apps and these instructions to make this process as straightforward as possible.</p> +<ul> +<li><a href="#reproducible-builds-for-android">Telegram for Android</a></li> +<li><a href="#reproducible-builds-for-ios">Telegram for iOS</a></li> +</ul> +<blockquote> +<p>Please read the relevant <strong>notes</strong> and <a href="#troubleshooting">troubleshooting</a> section carefully.</p> +</blockquote> +<hr> +<div class="blog_wide_image"> + <a href="/file/464001695/1/nxVa_f-qKS8.216020/9da7686ded6f1e7bef" target="_blank"><img src="/file/464001785/3/GqL9jQg6ChI.76277/1377819b17eaa4dcce" srcset="/file/464001695/1/nxVa_f-qKS8.216020/9da7686ded6f1e7bef, 1200w" title="Builds Telegram verifiable are." alt="Dude in a jacket inspecting the hologram of a mechanical dog to verify it's built according to the blueprints provided."/></a> +</div> + +<h2><a class="anchor" name="reproducible-builds-for-android" href="#reproducible-builds-for-android"><i class="anchor-icon"></i></a>Reproducible Builds for Android</h2> +<h3><a class="anchor" name="step-1-install-docker" href="#step-1-install-docker"><i class="anchor-icon"></i></a>Step 1. Install Docker</h3> +<p>Docker can be obtained <a href="https://www.docker.com/">here</a>. Once the installation is complete, log into your Docker account > Preferences > Advanced and configure the amount of resources Docker may use:</p> +<div class="blog_image_wrap"> + <a href="/file/464001855/2/KKDBKSKjE5I.159342/06f9af6592719a3d6e" target="_blank"><img src="/file/464001855/2/KKDBKSKjE5I.159342/06f9af6592719a3d6e" title="Docker Performance" /></a> + <p>Docker Performance</p> +</div> + +<p>We recommend using the maximum amount allowed by your system's hardware, in order to speed up the build time.</p> +<h3><a class="anchor" name="step-2-confirm-which-version-you-have-installed-on-your-android" href="#step-2-confirm-which-version-you-have-installed-on-your-android"><i class="anchor-icon"></i></a>Step 2. Confirm which version you have installed on your Android device</h3> +<p>You can find the <strong>version/build</strong> number at the bottom of the Settings page. Note that Telegram supports reproducible builds starting with version <strong>5.13</strong>.</p> +<div class="blog_image_wrap"> + <a href="/file/464001596/1/BdL82fVZIdg.72900/f22d064f20c6b40209" target="_blank"><img src="/file/464001596/1/BdL82fVZIdg.72900/f22d064f20c6b40209" title="App Version" /></a> + <p>App Version</p> +</div> + +<p>The commit tag to checkout source code for the example above will be <code>release-5.13.0_1821</code>.</p> +<blockquote> +<p>Please make sure that you're using the correct <strong>version</strong> and <strong>build number</strong> of the version you want to check (and not the one from this example <img class="emoji" src="//telegram.org/img/emoji/40/F09F9888.png" width="20" height="20" alt="😈" />). </p> +</blockquote> +<p>The part after the version number will help you know in which folder to look for the correct APK when you've finished <a href="#step-4-build-the-app">building the app (Step 4)</a>:</p> +<ul> +<li>“Direct” after version number means that the APK will be inside the “afat/standalone” folder.</li> +<li>“Universal” after version number means that the APK will be inside the “afat/release” folder.</li> +<li>If you have Android Version 6.0 or greater, your APK folder will have the “_SDK23” suffix.</li> +<li>“arm64-v8a” - folder name will start with “arm64”.</li> +<li>“armeabi-v7” - folder name will start with “armv7”.</li> +<li>“x86” - folder name will start with “x86”.</li> +<li>“x86_64” - folder name will start with “x64”.</li> +</ul> +<div class="blog_image_wrap"> + <a href="/file/464001368/2/fgnFkr2Id3Q.55259/d03599849440e62b52" target="_blank"><img src="/file/464001368/2/fgnFkr2Id3Q.55259/d03599849440e62b52" title="Relevant folder" /></a> + <p>APK Folders</p> +</div> + + +<h3><a class="anchor" name="step-3-obtain-the-source-code" href="#step-3-obtain-the-source-code"><i class="anchor-icon"></i></a>Step 3. Obtain the source code</h3> +<p>Open Terminal, run the commands:<br><code>git clone https://github.com/DrKLO/Telegram.git $HOME/telegram-android</code><br><code>cd $HOME/telegram-android</code><br><code>git checkout release-{VERSION AND BUILD NUMBER FROM STEP 2}</code></p> +<p>For our <a href="#step-2-confirm-which-version-you-have-installed-on-your-android">example</a>, the command would be:<br><code>git checkout release-5.13.0_1821</code></p> +<div class="blog_wide_image"> + <a href="/file/464001840/1/5DrefLlg3vw.116770/8901e43605c30939d4" target="_blank"><img src="/file/464001840/1/5DrefLlg3vw.116770/8901e43605c30939d4" title="Obtaining the source code" /></a> +</div> + +<h3><a class="anchor" name="step-4-build-the-app" href="#step-4-build-the-app"><i class="anchor-icon"></i></a>Step 4. Build the app</h3> +<p>Open Terminal, run the commands:<br><code>cd $HOME/telegram-android</code><br><code>docker build -t telegram-build .</code></p> +<div class="blog_wide_image"> + <a href="/file/464001202/1/UyO3_tLDRPg.35170/31865250522be6db86" target="_blank"><img src="/file/464001202/1/UyO3_tLDRPg.35170/31865250522be6db86" title="Building the app" /></a> +</div> + +<p><code>docker run --rm -v "$PWD":/home/source telegram-build</code></p> +<div class="blog_wide_image"> + <a href="/file/464001691/2/SFreJq5OZ4U.34208/f69b83468ac2a07276" target="_blank"><img src="/file/464001691/2/SFreJq5OZ4U.34208/f69b83468ac2a07276" title="Building the app" /></a> +</div> + +<p>These commands will produce <strong>9 different APKs</strong> for different target SDK versions and CPU ABIs.</p> +<p>These APKs can be found in:<br><code>$HOME/telegram-android/TMessagesProj/build/outputs/apk/</code></p> +<p>Use the folder name from <a href="#step-2-confirm-which-version-you-have-installed-on-your-android">Step 2</a> to find the correct folder that holds the same APK as installed on your device. For example, for non-universal Android 9.0 arm64-v8a, the path to your APK will be:<br><code>$HOME/telegram-android/TMessagesProj/build/outputs/apk/arm64_SDK23/release/app.apk</code><br>Copy this APK to the root source directory by running this command in Terminal:<br><code>cp $HOME/telegram-android/TMessagesProj/build/outputs/apk/arm64_SDK23/release/app.apk $HOME/telegram-android/telegram_built.apk</code></p> +<div class="blog_wide_image"> + <a href="/file/464001970/1/9nwL42h9lAU.32529/9b39cebcdb8c6daff7" target="_blank"><img src="/file/464001970/1/9nwL42h9lAU.32529/9b39cebcdb8c6daff7" title="Copy the APK" /></a> +</div> + +<h3><a class="anchor" name="step-5-the-telegram-apk-installed-on-your-device" href="#step-5-the-telegram-apk-installed-on-your-device"><i class="anchor-icon"></i></a>Step 5. The Telegram APK installed on your device</h3> +<p>You will need <a href="https://developer.android.com/studio/releases/platform-tools.html#downloads">adb</a> for this step. </p> +<div class="blog_image_wrap"> + <a href="/file/464001167/1/ekMuxStZVes.485894/eb0a512392500d53b3" target="_blank"><img src="/file/464001167/1/ekMuxStZVes.485894/eb0a512392500d53b3" title="ADB" /></a> + <p>ADB</p> +</div> + +<blockquote> +<p>If you downloaded your APK <a href="https://telegram.org/android"><strong>directly from Telegram's website</strong></a>, use the package name <code>org.telegram.messenger.web</code> in this step. To verify the <strong>Google Play APK</strong>, use <code>org.telegram.messenger</code>.</p> +</blockquote> +<p>Connect your device to the computer, open Terminal, run the commands:<br><code>adb shell pm path org.telegram.messenger</code></p> +<div class="blog_wide_image"> + <a href="/file/464001688/1/CJrBoBPxoKU.31587/670238fac9bc5f869d" target="_blank"><img src="/file/464001688/1/CJrBoBPxoKU.31587/670238fac9bc5f869d" title="ADB" /></a> +</div> + +<p>The output will look something like this:<br><code>package:/data/app/org.telegram.messenger-_zOSURFEx2GpHM8UDF_PVg==/base.apk</code><br>By using this information, pull the APK from your device to $HOME/telegram-android using command:<br><code>adb pull /data/app/org.telegram.messenger-_zOSURFEx2GpHM8UDF_PVg==/base.apk $HOME/telegram-android/telegram_store.apk</code></p> +<h3><a class="anchor" name="step-6-compare-the-apks" href="#step-6-compare-the-apks"><i class="anchor-icon"></i></a>Step 6. Compare the APKs</h3> +<p>Open Terminal, run the commands:<br><code>cd $HOME/telegram-android</code><br><code>python apkdiff.py telegram_store.apk telegram_built.apk</code><br>If the APKs are the same, you will see<br><code>APKs are the same!</code></p> +<div class="blog_wide_image"> + <a href="/file/464001327/1/Qcnkce3q-J4.35468/9791eeabf384c7830d" target="_blank"><img src="/file/464001327/1/Qcnkce3q-J4.35468/9791eeabf384c7830d" title="Match" /></a> +</div> +Tada! + +Otherwise, something went wrong. +<div class="blog_wide_image"> + <a href="/file/464001245/1/0wuFZh4wBYM.38635/bf90b5a321b44360fb" target="_blank"><img src="/file/464001245/1/0wuFZh4wBYM.38635/bf90b5a321b44360fb" title="Mismatch" /></a> +</div> + +<p>If your APKs don't match, please make sure that you chose <a href="#step-2-confirm-which-version-you-have-installed-on-your-android">the correct code version</a> and <a href="#step-4-build-the-app">the right SDK</a>.</p> +<p>Check out the <a href="#troubleshooting">Troubleshooting</a> section first in case you run into trouble.</p> +<hr> +<h2><a class="anchor" name="reproducible-builds-for-ios" href="#reproducible-builds-for-ios"><i class="anchor-icon"></i></a>Reproducible Builds for iOS</h2> +<p>The verification process for iOS builds is, unfortunately, a lot more complex than for Android. The two main issues with Apple's current policies and infrastructure are as follows:</p> +<ol> +<li><p>Apple insists on using <strong>FairPlay</strong> encryption to “protect” even <strong>free</strong> apps from “app pirates” which makes obtaining the executable code of apps impossible without a jailbroken device. To solve this issue, Apple would simply need to allow submitting unencryptable binaries to the App Store. This would not affect security since the code would still be signed – and would enable anyone to check the integrity of apps supporting reproducible builds without endangering the integrity and security of their devices.</p> +</li> +<li><p>Building your own reproducible binaries is difficult because macOS doesn't support containers like Docker. If Apple followed in the footsteps of Linux (and even Microsoft!) and added container support, it would eliminate the need for steps 1-3 in the guide below.</p> +</li> +</ol> +<blockquote> +<p>As things stand now, you'll need a <strong>jailbroken device</strong>, at least <strong>1,5 hours</strong> and approximately <strong>90GB</strong> of free space to properly set up a virtual machine for the verification process.</p> +</blockquote> +<p>To provide a stable and easily reproducible environment, Telegram iOS builds are compiled on a virtual machine. Parallels is used to verify the builds.</p> +<h3><a class="anchor" name="step-1-install-the-parallels-virtual-machine" href="#step-1-install-the-parallels-virtual-machine"><i class="anchor-icon"></i></a>Step 1. Install the Parallels virtual machine</h3> +<p>Parallels can be obtained <a href="https://www.parallels.com/">here</a>, it features a fully-functional trial version.</p> +<h3><a class="anchor" name="step-2-install-the-latest-version-of-macos-big-sur" href="#step-2-install-the-latest-version-of-macos-big-sur"><i class="anchor-icon"></i></a>Step 2. Install the latest version of macOS Big Sur</h3> +<p>To download an image that can be installed on the virtual machine, open the App Store, search for “Catalina” and click “View”.</p> +<div class="blog_image_wrap"> + <a href="/file/464001442/2/kdNIHhlKvz4.940110/19c350a98ef2c2c164" target="_blank"><img src="/file/464001442/2/kdNIHhlKvz4.940110/19c350a98ef2c2c164" title="Search for macOS Catalina on App Store > View" /></a> +<p>Search for macOS Catalina on App Store > View</p> +</div> + +<div class="blog_image_wrap"> + <a href="/file/464001556/2/ZSibb9LRuCg.903011/8d1216a3b375d69651" target="_blank"><img src="/file/464001556/2/ZSibb9LRuCg.903011/8d1216a3b375d69651" title="macOS Catalina > Get" /></a> + <p>macOS Catalina > Get +</p> +</div> + +<p>This will open a system pop-up offering to download the OS:</p> +<div class="blog_wide_image"> + <a href="/file/464001021/1/zCJcO6j4L88.223192/6cccdc989a372734b0" target="_blank"><img src="/file/464001021/1/zCJcO6j4L88.223192/6cccdc989a372734b0" title="macOS Catalina > Download" /></a> +</div> +Choose “Download” and wait for the download to finish. + +> If you were not using the latest version of the OS, your system may start updating instead. Please finish updating to download macOS Catalina. + +When done, open Parallels and choose macOS Catalina: + +<div class="blog_image_wrap"> + <a href="/file/464001612/2/MX23LbMTi9s.387733/04fbf3e50047b87e99" target="_blank"><img src="/file/464001612/2/MX23LbMTi9s.387733/04fbf3e50047b87e99" title="Select 'Install Windows or another OS' > Continue" /></a> +<p>Select 'Install Windows or another OS' > Continue</p> +</div> + +<div class="blog_image_wrap"> + <a href="/file/464001694/1/WD85AiGle9A.404893/9c435d6582b9be04f6" target="_blank"><img src="/file/464001694/1/WD85AiGle9A.404893/9c435d6582b9be04f6" title="Select a file... > Applications (All files) > Install macOS Сatalina" /></a> +<p>Select a file... > Applications (All files) > Install macOS Сatalina</p> +</div> + +<p>Before starting the installation, configure the virtual machine:</p> +<div class="blog_image_wrap"> + <a href="/file/464001210/2/FVlrqHY_Vqw.231478/0167b02433bf413c67" target="_blank"><img src="/file/464001210/2/FVlrqHY_Vqw.231478/0167b02433bf413c67" title="Enable checkbox 'Customize settings before installation'" /></a> +<p>Checkbox 'Customize settings before installation'</p> +</div> + +<p>Change the name of the virtual machine to <code>macos11_Xcode12_5_1</code></p> +<div class="blog_image_wrap"> + <a href="/file/464001398/1/SB22XXoAWTg.151444/8e479c26b30ceccc01" target="_blank"><img src="/file/464001398/1/SB22XXoAWTg.151444/8e479c26b30ceccc01" title="Name VM as macos10_15_Xcode11_2" /></a> +<p>Name VM as macos10_15_Xcode12_2</p> +</div> + +<p>Hardware > Processors: 2-4<br>Memory > 4GB may suffice but 8GB is recommended</p> +<div class="blog_image_wrap"> + <a href="/file/464001494/1/_BIf-UvwS3Q.239110/d52cb48ec3d6e76e84" target="_blank"><img src="/file/464001494/1/_BIf-UvwS3Q.239110/d52cb48ec3d6e76e84" title="At least 2 CPUs + 4 (8 recommended) GB Memory." /></a> +<p>At least 2 CPUs + 4 (8 recommended) GB Memory.</p> +</div> + +<p>You will get something like this:</p> +<div class="blog_image_wrap"> + <a href="/file/464001423/2/yoakfT7DemM.200481/2fbd4e1d1fcbe60c9a" target="_blank"><img src="/file/464001423/2/yoakfT7DemM.200481/2fbd4e1d1fcbe60c9a" title="Click Continue" /></a> +<p>Click Continue</p> +</div> + +<p>Parallels may request access to your microphone and camera, this is not required – just press <strong>Close</strong>.</p> +<div class="blog_image_wrap"> + <a href="/file/464001037/3/uPUYKKQ0JXY.1190506/9f9567853a1be5f194" target="_blank"><img src="/file/464001037/3/uPUYKKQ0JXY.1190506/9f9567853a1be5f194" title="Install macOS > Continue" /></a> + <p>Install macOS > Continue</p> +</div> + +<p>Your Apple ID is also not required, you can choose <strong>Set Up Later</strong>.</p> +<div class="blog_image_wrap"> + <a href="/file/464001885/3/-EDysKEKxN4.872188/4fd018cdc5b1e9f3f4" target="_blank"><img src="/file/464001885/3/-EDysKEKxN4.872188/4fd018cdc5b1e9f3f4" title="Skip Apple ID with 'Set Up Later'" /></a> +<p>Skip Apple ID with 'Set Up Later'</p> +</div> + +<p>Use “telegram” for both the account name and password.</p> +<blockquote> +<p>Do not ever use the password “telegram” for <strong>anything</strong> else, it's cursed.</p> +</blockquote> +<div class="blog_image_wrap"> + <a href="/file/464001994/1/uhQTRCzmHj0.805076/9fe8aaf3ade46b3bbf" target="_blank"><img src="/file/464001994/1/uhQTRCzmHj0.805076/9fe8aaf3ade46b3bbf" title="Create a computer account with 'telegram' set both as account name and password" class="dev_page_image" /></a> +<p>Create a computer account with 'telegram' set both as account name and password</p> +</div> + +<p>Now install Parallels tools from the menu bar:</p> +<div class="blog_wide_image"> + <a href="/file/464001486/1/kvHNFzvxjA8.2491846/d75c7b01cb0d3e4115" target="_blank"><img src="/file/464001486/1/kvHNFzvxjA8.2491846/d75c7b01cb0d3e4115" title="Install Parallels Tools using menu bar > Parallels icon > Actions > Install (Reinstall) Parallels Tools" /></a> + <a href="/file/464001061/5/Hiye9EUwr58.424786/543027492e073abd74" target="_blank"><img src="/file/464001061/5/Hiye9EUwr58.424786/543027492e073abd74" title="Install Parallels Tools" /></a> + <p>Install Parallels Tools using menu bar > Parallels icon > Actions > Install (Reinstall) Parallels Tools...</p> +</div> + +<p>After the system restarts, log in.<br>Open <strong>Terminal</strong> and run:<br><code>sudo visudo</code><br>Enter the password “telegram”</p> +<div class="blog_wide_image"> + <a href="/file/464001603/1/syuA7Rk-n2Q.40736/a5e73335e5c7d3a36c" target="_blank"><img src="/file/464001603/1/syuA7Rk-n2Q.40736/a5e73335e5c7d3a36c" title="Run Terminal on the VM, enter 'sudo visudo' > enter password (telegram)" /></a> +</div> + +<p>Find this line at the end of the file:<br><code>%admin ALL=(ALL) ALL</code><br>Press “i” on your keyboard, add “NOPASSWD:”<br><code>%admin ALL=(ALL) NOPASSWD: ALL</code><br>Press Escape.<br>Type in “:wq”<br>Press Enter</p> +<div class="blog_wide_image"> + <a href="/file/464001750/1/T6mMRrNkTUY.105833/6c491ac94ba52c30a0" target="_blank"><img src="/file/464001750/1/T6mMRrNkTUY.105833/6c491ac94ba52c30a0" title="Press i to edit the highlighted string" class="dev_page_image" /></a> + <p>Press i to edit the highlighted string.</p> + <a href="/file/464001078/1/fvlwH44qF9A.87241/d994289fe3967fbcd0" target="_blank"><img src="/file/464001078/1/fvlwH44qF9A.87241/d994289fe3967fbcd0" title="Enter :wq > press Enter" /></a> + <p>Enter :wq > press Enter.</p> +</div> + +<p>In the terminal, run:<br><code>sudo systemsetup -setcomputersleep Never</code></p> +<div class="blog_wide_image"> + <a href="/file/464001368/3/4nNsEU8siSo.54459/fdccb77de26ce89c25" target="_blank"><img src="/file/464001368/3/4nNsEU8siSo.54459/fdccb77de26ce89c25" title="sudo systemsetup -setcomputersleep Never > press Enter" /></a> + <p>sudo systemsetup -setcomputersleep Never > press Enter.</p> +</div> + +<h3><a class="anchor" name="step-3-install-ssh-keys-on-the-virtual-machine" href="#step-3-install-ssh-keys-on-the-virtual-machine"><i class="anchor-icon"></i></a>Step 3. Install SSH keys on the virtual machine</h3> +<p>In the virtual machine, open System Settings > Sharing and enable <strong>Remote Login</strong>.</p> +<div class="blog_wide_image"> + <a href="/file/464001585/1/PEomlV3X5tY.2043293/4945fabb3f0dbc3498" target="_blank"><img src="/file/464001585/1/PEomlV3X5tY.2043293/4945fabb3f0dbc3498" title="Go to macOS Settings > Sharing > enable Remote Login" /></a> +</div> + +<p>In the virtual machine, open Terminal and run:<br><code>mkdir -p .ssh; nano .ssh/authorized_keys</code></p> +<div class="blog_wide_image"> + <a href="/file/464001545/2/D1m3uumpixY.80253/33723ae7bf268e4e7b" target="_blank"><img src="/file/464001545/2/D1m3uumpixY.80253/33723ae7bf268e4e7b" title="Enter mkdir -p .ssh; nano .ssh/authorized_keys > press Enter" /></a> +</div> + +<p>In your main OS, open Terminal and run:<br><code>if [ ! -e ~/.ssh/id_rsa.pub ]; then ssh-keygen -t rsa -b 4096; fi && cat ~/.ssh/id_rsa.pub | pbcopy</code></p> +<div class="blog_wide_image"> + <a href="/file/464001768/1/UQHpZ06ximo.31911/c5244223a99661c5e9" target="_blank"><img src="/file/464001768/1/UQHpZ06ximo.31911/c5244223a99661c5e9" title="Terminal" /></a> +</div> + +<p>If you see the line “Enter file in which to save the key (/Users/…/.ssh/id_rsa):”, press Enter<br>In the virtual machine, press <strong>CMD+V</strong><br>Then <strong>Ctrl+O</strong>, <strong>Ctrl+X</strong></p> +<div class="blog_wide_image"> + <a href="/file/464001578/2/jHqc2jci2Ck.54202/7a0014ad6fb0d1c173" target="_blank"><img src="/file/464001578/2/jHqc2jci2Ck.54202/7a0014ad6fb0d1c173" title="Press Cmd+V > Ctrl+O > Ctrl+X." /></a> +</div> + +<h3><a class="anchor" name="step-4-install-xcode-version-12-5-1" href="#step-4-install-xcode-version-12-5-1"><i class="anchor-icon"></i></a>Step 4. Install Xcode version 12.5.1</h3> +<p>In the virtual machine, open Safari and go to https://developer.apple.com<br>Sign in to your Account:</p> +<div class="blog_image_wrap"> + <a href="/file/464001443/2/LhmF4qgPgn4.501969/6edbc244d8b9f8298e" target="_blank"><img src="/file/464001443/2/LhmF4qgPgn4.501969/6edbc244d8b9f8298e" title="developer.apple.com > Account > sign in with your Apple ID" /></a> +<p>developer.apple.com > Account > sign in with your Apple ID</p> +</div> + +<p>Go to <strong>Downloads > More</strong><br>Enter <strong>Xcode</strong> in the search field and find the version 12.5.1</p> +<div class="blog_image_wrap"> + <a href="/file/464001260/1/njYJxQDnzzQ.664134/d4e8de0aed2d74d6e0" target="_blank"><img src="/file/464001260/1/njYJxQDnzzQ.664134/d4e8de0aed2d74d6e0" title="Downloads > More > 12.5.1" /></a> +<p>Downloads > More > Xcode 12.5.1</p> +</div> + +<p>Once the installation is complete, open the file Xcode 12.5.1.xip. The system will unarchive the app into the same folder. Move it to the <strong>Applications</strong> folder using Finder.</p> +<div class="blog_image_wrap"> + <a href="/file/464001707/1/GIIAXXifhbI.2058152/af989007034194b28b" target="_blank"><img src="/file/464001707/1/GIIAXXifhbI.2058152/af989007034194b28b" title="Unarchive Xcode > drag the app to Applications folder" /></a> +<p>Unarchive Xcode > drag the app to Applications folder</p> +</div> + +<div class="blog_image_wrap"> + <a href="/file/464001214/1/CZJfqS7Fhr8.2206987/d29e070d1cef8de8fb" target="_blank"><img src="/file/464001214/1/CZJfqS7Fhr8.2206987/d29e070d1cef8de8fb" title="Move Xcode to Applications using Finder > Run > Agree to install additional components" /></a> +</div> + +<p>On the virtual machine, run this command from the terminal:<br><code>sudo xcode-select -s /Applications/Xcode.app/Contents/Developer</code></p> +<div class="blog_wide_image"> + <a href="/file/464001410/1/OZcFX2KwPrg.49547/a84ac3100d693a3982" target="_blank"><img src="/file/464001410/1/OZcFX2KwPrg.49547/a84ac3100d693a3982" title="sudo xcode-select -s /Applications/Xcode.app/Contents/Developer" /></a> +</div> + +<p>Shut down the virtual machine.</p> +<div class="blog_image_wrap"> + <a href="/file/464001752/2/kos29MZFaJ0.3515145/88dff67ef53dbf4dcc" target="_blank"><img src="/file/464001752/2/kos29MZFaJ0.3515145/88dff67ef53dbf4dcc" title="Shut down the virtual machine" /></a> +<p>Shut down the virtual machine</p> +</div> + +<h3><a class="anchor" name="step-4-1" href="#step-4-1"><i class="anchor-icon"></i></a>Step 4.1</h3> +<p>Download the certificates at https://github.com/TelegramMessenger/Telegram-iOS/tree/master/build-system/fake-codesigning/certs/distribution and install them into the virtual machine.</p> +<p>Launch Keychain Access and double-click the installed certificate. Under “Trust”, change “When using this certificate” to “Always Trust”.</p> +<h3><a class="anchor" name="step-5-obtaining-the-source-code" href="#step-5-obtaining-the-source-code"><i class="anchor-icon"></i></a>Step 5. Obtaining the source code</h3> +<p><code>git clone --recursive https://github.com/TelegramMessenger/telegram-ios.git $HOME/telegram-ios</code><br><code>cd $HOME/telegram-ios</code><br><code>git checkout release-${VERSION_NUMBER}</code></p> +<p>E.g., <code>git checkout release-7.3</code>. Please note that you need to check out the whole git history as the build version depends on the number of commits in the repository.</p> +<div class="blog_wide_image"> + <a href="/file/464001402/3/U43d2T5SSGY.181052/c86e9e2a72b766e704" target="_blank"><img src="/file/464001402/3/U43d2T5SSGY.181052/c86e9e2a72b766e704" title="git clone" /></a> +</div> + +<h3><a class="anchor" name="step-6-downloading-bazel-3-7-0-to-home-bazel-bazel" href="#step-6-downloading-bazel-3-7-0-to-home-bazel-bazel"><i class="anchor-icon"></i></a>Step 6. Downloading Bazel 3.7.0 to $HOME/bazel/bazel</h3> +<p><code>mkdir -p $HOME/bazel && cd $HOME/bazel</code><br><code>curl -O -L https://github.com/bazelbuild/bazel/releases/download/3.7.0/bazel-3.7.0-darwin-x86_64</code><br><code>mv bazel-3.7.0-darwin-x86_64 bazel</code></p> +<p>Check that you have downloaded the correct version:<br><code>chmod +x bazel</code><br><code>./bazel --version</code></p> +<h3><a class="anchor" name="step-7-building-the-app" href="#step-7-building-the-app"><i class="anchor-icon"></i></a>Step 7. Building the app</h3> +<p>Open Terminal, run the commands:<br><code>cd $HOME/telegram-ios +BAZEL="$HOME/bazel/bazel" sh buildbox/build-telegram.sh verify</code></p> +<div class="blog_wide_image"> + <a href="/file/464001292/1/9vG9rIqfOK0.38309/7f7df70686fc4afc36" target="_blank"><img src="/file/464001292/1/9vG9rIqfOK0.38309/7f7df70686fc4afc36" title="Building the app" /></a> +</div> + +<p>If the environment has been set up correctly, this will start the building process. Note that this step can easily take <strong>30-40 minutes</strong>. The average build time on a MacBook Pro (i9 6 core) is 35 minutes.</p> +<div class="blog_wide_image"> + <a href="/file/464001704/1/_aK7gK-aRW4.80595/696c8283fe53f291bc" target="_blank"><img src="/file/464001704/1/_aK7gK-aRW4.80595/696c8283fe53f291bc" title="Building started" /></a> + <a href="/file/464001735/1/ymFowz-2P8c.33467/e29b2c4aaa736dc6a1" target="_blank"><img src="/file/464001735/1/ymFowz-2P8c.33467/e29b2c4aaa736dc6a1" title="Building completed" /></a> +</div> + +<p>Once the process is complete the resulting IPA file can be found in <code>build/artifacts/Telegram.ipa</code><br>All the following steps will be made via Terminal on your main system.</p> +<h3><a class="anchor" name="step-8-downloading-a-decrypted-version-of-the-app-from-the-app-s" href="#step-8-downloading-a-decrypted-version-of-the-app-from-the-app-s"><i class="anchor-icon"></i></a>Step 8. Downloading a decrypted version of the app from the App Store</h3> +<p>This step requires a jailbroken device equipped with tools for decrypting apps. We‘d love to make this process more simple but that’s what you get for using Apple tech.</p> +<h3><a class="anchor" name="step-9-comparing-the-appstore-build-and-the-version-built-in-the" href="#step-9-comparing-the-appstore-build-and-the-version-built-in-the"><i class="anchor-icon"></i></a>Step 9. Comparing the AppStore build and the version built in the virtual machine</h3> +<p>Install the necessary tools:<br><code>if ! type brew > /dev/null; + then /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"; fi && brew install python3</code></p> +<div class="blog_wide_image"> + <a href="/file/464001225/1/X65KiZyxvdQ.41739/c7f65f76cc4c827c5d" target="_blank"><img src="/file/464001225/1/X65KiZyxvdQ.41739/c7f65f76cc4c827c5d" title="Installing python" /></a> +</div> + +<p><strong>Run</strong><br><code>python3 tools/ipadiff.py build/artifacts/Telegram.ipa PATH-TO-THE-IPA-FILE-FROM-STEP-9</code></p> +<ol> +<li>cd telegram-ios > Enter</li> +<li>python3 tools/ipadiff.py build/artifacts/Telegram.ipa /path/ > Enter</li> +</ol> +<div class="blog_wide_image"> + <a href="/file/464001464/2/3skIXy_2ghc.41339/a62e0ea589b713438d" target="_blank"><img src="/file/464001464/2/3skIXy_2ghc.41339/a62e0ea589b713438d" title="Сomparing builds" /></a> +</div> + +<p>In case of a successful comparison, you will get a text along these lines:</p> +<pre><code>IPAs are equal, except for the files that can't currently be checked: + Excluded files that couldn't be checked due to being encrypted: + PlugIns/SiriIntents.appex/SiriIntents + PlugIns/Widget.appex/Widget + PlugIns/NotificationContent.appex/NotificationContent + PlugIns/NotificationService.appex/NotificationService + PlugIns/Share.appex/Share + IPAs contain Watch directory with a Watch app which can't be checked currently. + IPAs contain .car (Asset Catalog) files that are compiled by the App Store and can't currently be checked: + + Frameworks/TelegramUI.framework/Assets.car + Assets.car + IPAs contain .nib (compiled Interface Builder) files that are compiled by the App Store and can't currently be checked: + Base.lproj/LaunchScreen.nib</code></pre> +<div class="blog_wide_image"> + <a href="/file/464001561/2/8mgy93NZXIg.138258/a0a0dca779416fba8a" target="_blank"><img src="/file/464001561/2/8mgy93NZXIg.138258/a0a0dca779416fba8a" title="The result > equal IPAs" /></a> +</div> + +<p>In case of any mismatches, you'll get a detailed report.</p> +<div class="blog_wide_image"> + <a href="/file/464001384/3/iSp-75NOtIU.58868/7b08b99752cdf7dd22" target="_blank"><img src="/file/464001384/3/iSp-75NOtIU.58868/7b08b99752cdf7dd22" title="Mismatching IPAs" /></a> +</div> + +<h3><a class="anchor" name="ios-notes" href="#ios-notes"><i class="anchor-icon"></i></a>iOS: Notes</h3> +<ol> +<li><p>You will get a warning if the archive created in <a href="#step-7-building-the-app">Step 7</a> contains encrypted files. If all these files are in the <code>PlugIns</code> subfolder, they represent various system extensions (e.g. external sharing, Siri, 3D touch). Decrypting such files using existing ways of receiving app archives via Jailbreak is non-trivial (but we're working on resolving this issue). If you do manage to decrypt them, e.g. on iOS 8, they will be matched.</p> +</li> +<li><p>You will be notified if the archive includes an <strong>Apple Watch app</strong>. The watch app will soon no longer be included in the archive.</p> +</li> +<li><p>Files with the <code>.car</code> extension are app resource archives (images, sounds) which were compiled and processed specifically for the target device. The App Store processes them in non-trivial ways, we're planning on getting rid of them in future versions.</p> +</li> +<li><p>The <code>LaunchScreen.nib</code> file is an empty file containing a description of the interface which is displayed by the system before the app is launched. It is processed by the App Store in a non-trivial way but doesn't contain any code and therefore may be ignored.</p> +</li> +</ol> +<hr> +<h2><a class="anchor" name="troubleshooting" href="#troubleshooting"><i class="anchor-icon"></i></a>Troubleshooting</h2> +<p>If you encounter any issues with obtaining the code, building and comparing the apps, please contact us at <a href="https://t.me/botsupport">@botsupport</a> and include the hashtag <code>#reproducibleBuilds</code> with your message describing the problem.</p> +<h3><a class="anchor" name="troubleshooting-android" href="#troubleshooting-android"><i class="anchor-icon"></i></a>Troubleshooting: Android</h3> +<ol> +<li><p>Make sure that you checkout <a href="#step-2-confirm-which-version-you-have-installed-on-your-android">the correct version</a> of the code.</p> +</li> +<li><p>Make sure that you build the app using <a href="#step-4-build-the-app">the right SDK</a>.</p> +</li> +<li><p>If the gradle version used in the Dockerfile is not available anymore and building of the Docker image fails, wait for a Dockerfile update or update manually to lastest available version.</p> +</li> +</ol> +<p>…</p> +<p>We will update this section with information on overcoming other common issues.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/schema.html b/data/core.telegram.org/schema.html new file mode 100644 index 0000000000..0c7574e3c8 --- /dev/null +++ b/data/core.telegram.org/schema.html @@ -0,0 +1,1800 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Schema</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Below you will find the current TL-schema. More details on TL » +See also the detailed schema in JSON » +See also TL-Schema…"> + <meta property="og:title" content="Schema"> + <meta property="og:image" content="4edfd0146479b9aa98"> + <meta property="og:description" content="Below you will find the current TL-schema. More details on TL » +See also the detailed schema in JSON » +See also TL-Schema…"> + <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?215" 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" >Schema</a></li></ul></div> + <h1 id="dev_page_title">Schema</h1> + + <div id="dev_page_content"><p>Below you will find the current TL-schema. <a href="/mtproto/TL">More details on TL »</a></p> +<p>See also the <a href="/schema/json">detailed schema in JSON »</a></p> +<p>See also <a href="/schema/end-to-end">TL-Schema for end-to-end encrypted messages »</a></p></div> + <div class="clearfix"> + <ul class="dev_layer_select slightly-pull-right nav nav-pills"> + <li class="dropdown"> + <a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; + +<a href="/constructor/true" >true</a>#3fedd339 = <a href="/type/True" >True</a>; + +<a href="/constructor/vector" >vector</a>#1cb5c415 {t:Type} # [ t ] = <a href="/type/Vector%20t" >Vector t</a>; + +<a href="/constructor/error" >error</a>#c4b9f9bb code:<a href="/type/int" >int</a> text:<a href="/type/string" >string</a> = <a href="/type/Error" >Error</a>; + +<a href="/constructor/null" >null</a>#56730bcc = <a href="/type/Null" >Null</a>; + +<a href="/constructor/inputPeerEmpty" >inputPeerEmpty</a>#7f3b18ea = <a href="/type/InputPeer" >InputPeer</a>; +<a href="/constructor/inputPeerSelf" >inputPeerSelf</a>#7da07ec9 = <a href="/type/InputPeer" >InputPeer</a>; +<a href="/constructor/inputPeerChat" >inputPeerChat</a>#35a95cb9 chat_id:<a href="/type/long" >long</a> = <a href="/type/InputPeer" >InputPeer</a>; +<a href="/constructor/inputPeerUser" >inputPeerUser</a>#dde8a54c user_id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputPeer" >InputPeer</a>; +<a href="/constructor/inputPeerChannel" >inputPeerChannel</a>#27bcbbfc channel_id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputPeer" >InputPeer</a>; +<a href="/constructor/inputPeerUserFromMessage" >inputPeerUserFromMessage</a>#a87b0a1c peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> = <a href="/type/InputPeer" >InputPeer</a>; +<a href="/constructor/inputPeerChannelFromMessage" >inputPeerChannelFromMessage</a>#bd2a0840 peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> channel_id:<a href="/type/long" >long</a> = <a href="/type/InputPeer" >InputPeer</a>; + +<a href="/constructor/inputUserEmpty" >inputUserEmpty</a>#b98886cf = <a href="/type/InputUser" >InputUser</a>; +<a href="/constructor/inputUserSelf" >inputUserSelf</a>#f7c1b13f = <a href="/type/InputUser" >InputUser</a>; +<a href="/constructor/inputUser" >inputUser</a>#f21158c6 user_id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputUser" >InputUser</a>; +<a href="/constructor/inputUserFromMessage" >inputUserFromMessage</a>#1da448e2 peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> = <a href="/type/InputUser" >InputUser</a>; + +<a href="/constructor/inputPhoneContact" >inputPhoneContact</a>#f392b7f4 client_id:<a href="/type/long" >long</a> phone:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> = <a href="/type/InputContact" >InputContact</a>; + +<a href="/constructor/inputFile" >inputFile</a>#f52ff27f id:<a href="/type/long" >long</a> parts:<a href="/type/int" >int</a> name:<a href="/type/string" >string</a> md5_checksum:<a href="/type/string" >string</a> = <a href="/type/InputFile" >InputFile</a>; +<a href="/constructor/inputFileBig" >inputFileBig</a>#fa4f0bb5 id:<a href="/type/long" >long</a> parts:<a href="/type/int" >int</a> name:<a href="/type/string" >string</a> = <a href="/type/InputFile" >InputFile</a>; + +<a href="/constructor/inputMediaEmpty" >inputMediaEmpty</a>#9664f57f = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaUploadedPhoto" >inputMediaUploadedPhoto</a>#1e287d04 flags:<a href="/type/%23" >#</a> file:<a href="/type/InputFile" >InputFile</a> stickers:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputDocument" >InputDocument</a>> ttl_seconds:flags.1?<a href="/type/int" >int</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaPhoto" >inputMediaPhoto</a>#b3ba0635 flags:<a href="/type/%23" >#</a> id:<a href="/type/InputPhoto" >InputPhoto</a> ttl_seconds:flags.0?<a href="/type/int" >int</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaGeoPoint" >inputMediaGeoPoint</a>#f9c44144 geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaContact" >inputMediaContact</a>#f8ab7dfb phone_number:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> vcard:<a href="/type/string" >string</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaUploadedDocument" >inputMediaUploadedDocument</a>#5b38c6c1 flags:<a href="/type/%23" >#</a> nosound_video:flags.3?true force_file:flags.4?true file:<a href="/type/InputFile" >InputFile</a> thumb:flags.2?<a href="/type/InputFile" >InputFile</a> mime_type:<a href="/type/string" >string</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> stickers:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputDocument" >InputDocument</a>> ttl_seconds:flags.1?<a href="/type/int" >int</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaDocument" >inputMediaDocument</a>#33473058 flags:<a href="/type/%23" >#</a> id:<a href="/type/InputDocument" >InputDocument</a> ttl_seconds:flags.0?<a href="/type/int" >int</a> query:flags.1?<a href="/type/string" >string</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaVenue" >inputMediaVenue</a>#c13d1c11 geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> title:<a href="/type/string" >string</a> address:<a href="/type/string" >string</a> provider:<a href="/type/string" >string</a> venue_id:<a href="/type/string" >string</a> venue_type:<a href="/type/string" >string</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaPhotoExternal" >inputMediaPhotoExternal</a>#e5bbfe1a flags:<a href="/type/%23" >#</a> url:<a href="/type/string" >string</a> ttl_seconds:flags.0?<a href="/type/int" >int</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaDocumentExternal" >inputMediaDocumentExternal</a>#fb52dc99 flags:<a href="/type/%23" >#</a> url:<a href="/type/string" >string</a> ttl_seconds:flags.0?<a href="/type/int" >int</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaGame" >inputMediaGame</a>#d33f43f3 id:<a href="/type/InputGame" >InputGame</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaInvoice" >inputMediaInvoice</a>#d9799874 flags:<a href="/type/%23" >#</a> title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.0?<a href="/type/InputWebDocument" >InputWebDocument</a> invoice:<a href="/type/Invoice" >Invoice</a> payload:<a href="/type/bytes" >bytes</a> provider:<a href="/type/string" >string</a> provider_data:<a href="/type/DataJSON" >DataJSON</a> start_param:flags.1?<a href="/type/string" >string</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaGeoLive" >inputMediaGeoLive</a>#971fa843 flags:<a href="/type/%23" >#</a> stopped:flags.0?true geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> heading:flags.2?<a href="/type/int" >int</a> period:flags.1?<a href="/type/int" >int</a> proximity_notification_radius:flags.3?<a href="/type/int" >int</a> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaPoll" >inputMediaPoll</a>#f94e5f1 flags:<a href="/type/%23" >#</a> poll:<a href="/type/Poll" >Poll</a> correct_answers:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> solution:flags.1?<a href="/type/string" >string</a> solution_entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/InputMedia" >InputMedia</a>; +<a href="/constructor/inputMediaDice" >inputMediaDice</a>#e66fbf7b emoticon:<a href="/type/string" >string</a> = <a href="/type/InputMedia" >InputMedia</a>; + +<a href="/constructor/inputChatPhotoEmpty" >inputChatPhotoEmpty</a>#1ca48f57 = <a href="/type/InputChatPhoto" >InputChatPhoto</a>; +<a href="/constructor/inputChatUploadedPhoto" >inputChatUploadedPhoto</a>#c642724e flags:<a href="/type/%23" >#</a> file:flags.0?<a href="/type/InputFile" >InputFile</a> video:flags.1?<a href="/type/InputFile" >InputFile</a> video_start_ts:flags.2?<a href="/type/double" >double</a> = <a href="/type/InputChatPhoto" >InputChatPhoto</a>; +<a href="/constructor/inputChatPhoto" >inputChatPhoto</a>#8953ad37 id:<a href="/type/InputPhoto" >InputPhoto</a> = <a href="/type/InputChatPhoto" >InputChatPhoto</a>; + +<a href="/constructor/inputGeoPointEmpty" >inputGeoPointEmpty</a>#e4c123d6 = <a href="/type/InputGeoPoint" >InputGeoPoint</a>; +<a href="/constructor/inputGeoPoint" >inputGeoPoint</a>#48222faf flags:<a href="/type/%23" >#</a> lat:<a href="/type/double" >double</a> long:<a href="/type/double" >double</a> accuracy_radius:flags.0?<a href="/type/int" >int</a> = <a href="/type/InputGeoPoint" >InputGeoPoint</a>; + +<a href="/constructor/inputPhotoEmpty" >inputPhotoEmpty</a>#1cd7bf0d = <a href="/type/InputPhoto" >InputPhoto</a>; +<a href="/constructor/inputPhoto" >inputPhoto</a>#3bb3b94a id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> = <a href="/type/InputPhoto" >InputPhoto</a>; + +<a href="/constructor/inputFileLocation" >inputFileLocation</a>#dfdaabe1 volume_id:<a href="/type/long" >long</a> local_id:<a href="/type/int" >int</a> secret:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>; +<a href="/constructor/inputEncryptedFileLocation" >inputEncryptedFileLocation</a>#f5235d55 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>; +<a href="/constructor/inputDocumentFileLocation" >inputDocumentFileLocation</a>#bad07584 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> thumb_size:<a href="/type/string" >string</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>; +<a href="/constructor/inputSecureFileLocation" >inputSecureFileLocation</a>#cbc7ee28 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>; +<a href="/constructor/inputTakeoutFileLocation" >inputTakeoutFileLocation</a>#29be5899 = <a href="/type/InputFileLocation" >InputFileLocation</a>; +<a href="/constructor/inputPhotoFileLocation" >inputPhotoFileLocation</a>#40181ffe id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> thumb_size:<a href="/type/string" >string</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>; +<a href="/constructor/inputPhotoLegacyFileLocation" >inputPhotoLegacyFileLocation</a>#d83466f3 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> volume_id:<a href="/type/long" >long</a> local_id:<a href="/type/int" >int</a> secret:<a href="/type/long" >long</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>; +<a href="/constructor/inputPeerPhotoFileLocation" >inputPeerPhotoFileLocation</a>#37257e99 flags:<a href="/type/%23" >#</a> big:flags.0?true peer:<a href="/type/InputPeer" >InputPeer</a> photo_id:<a href="/type/long" >long</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>; +<a href="/constructor/inputStickerSetThumb" >inputStickerSetThumb</a>#9d84f3db stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> thumb_version:<a href="/type/int" >int</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>; +<a href="/constructor/inputGroupCallStream" >inputGroupCallStream</a>#598a92a flags:<a href="/type/%23" >#</a> call:<a href="/type/InputGroupCall" >InputGroupCall</a> time_ms:<a href="/type/long" >long</a> scale:<a href="/type/int" >int</a> video_channel:flags.0?<a href="/type/int" >int</a> video_quality:flags.0?<a href="/type/int" >int</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>; + +<a href="/constructor/peerUser" >peerUser</a>#59511722 user_id:<a href="/type/long" >long</a> = <a href="/type/Peer" >Peer</a>; +<a href="/constructor/peerChat" >peerChat</a>#36c6019a chat_id:<a href="/type/long" >long</a> = <a href="/type/Peer" >Peer</a>; +<a href="/constructor/peerChannel" >peerChannel</a>#a2a5371e channel_id:<a href="/type/long" >long</a> = <a href="/type/Peer" >Peer</a>; + +<a href="/constructor/storage.fileUnknown" >storage.fileUnknown</a>#aa963b05 = <a href="/type/storage.FileType" >storage.FileType</a>; +<a href="/constructor/storage.filePartial" >storage.filePartial</a>#40bc6f52 = <a href="/type/storage.FileType" >storage.FileType</a>; +<a href="/constructor/storage.fileJpeg" >storage.fileJpeg</a>#7efe0e = <a href="/type/storage.FileType" >storage.FileType</a>; +<a href="/constructor/storage.fileGif" >storage.fileGif</a>#cae1aadf = <a href="/type/storage.FileType" >storage.FileType</a>; +<a href="/constructor/storage.filePng" >storage.filePng</a>#a4f63c0 = <a href="/type/storage.FileType" >storage.FileType</a>; +<a href="/constructor/storage.filePdf" >storage.filePdf</a>#ae1e508d = <a href="/type/storage.FileType" >storage.FileType</a>; +<a href="/constructor/storage.fileMp3" >storage.fileMp3</a>#528a0677 = <a href="/type/storage.FileType" >storage.FileType</a>; +<a href="/constructor/storage.fileMov" >storage.fileMov</a>#4b09ebbc = <a href="/type/storage.FileType" >storage.FileType</a>; +<a href="/constructor/storage.fileMp4" >storage.fileMp4</a>#b3cea0e4 = <a href="/type/storage.FileType" >storage.FileType</a>; +<a href="/constructor/storage.fileWebp" >storage.fileWebp</a>#1081464c = <a href="/type/storage.FileType" >storage.FileType</a>; + +<a href="/constructor/userEmpty" >userEmpty</a>#d3bc4b7a id:<a href="/type/long" >long</a> = <a href="/type/User" >User</a>; +<a href="/constructor/user" >user</a>#3ff6ecb0 flags:<a href="/type/%23" >#</a> self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true id:<a href="/type/long" >long</a> access_hash:flags.0?<a href="/type/long" >long</a> first_name:flags.1?<a href="/type/string" >string</a> last_name:flags.2?<a href="/type/string" >string</a> username:flags.3?<a href="/type/string" >string</a> phone:flags.4?<a href="/type/string" >string</a> photo:flags.5?<a href="/type/UserProfilePhoto" >UserProfilePhoto</a> status:flags.6?<a href="/type/UserStatus" >UserStatus</a> bot_info_version:flags.14?<a href="/type/int" >int</a> restriction_reason:flags.18?<a href="/type/Vector%20t" >Vector</a><<a href="/type/RestrictionReason" >RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href="/type/string" >string</a> lang_code:flags.22?<a href="/type/string" >string</a> = <a href="/type/User" >User</a>; + +<a href="/constructor/userProfilePhotoEmpty" >userProfilePhotoEmpty</a>#4f11bae1 = <a href="/type/UserProfilePhoto" >UserProfilePhoto</a>; +<a href="/constructor/userProfilePhoto" >userProfilePhoto</a>#82d1f706 flags:<a href="/type/%23" >#</a> has_video:flags.0?true photo_id:<a href="/type/long" >long</a> stripped_thumb:flags.1?<a href="/type/bytes" >bytes</a> dc_id:<a href="/type/int" >int</a> = <a href="/type/UserProfilePhoto" >UserProfilePhoto</a>; + +<a href="/constructor/userStatusEmpty" >userStatusEmpty</a>#9d05049 = <a href="/type/UserStatus" >UserStatus</a>; +<a href="/constructor/userStatusOnline" >userStatusOnline</a>#edb93949 expires:<a href="/type/int" >int</a> = <a href="/type/UserStatus" >UserStatus</a>; +<a href="/constructor/userStatusOffline" >userStatusOffline</a>#8c703f was_online:<a href="/type/int" >int</a> = <a href="/type/UserStatus" >UserStatus</a>; +<a href="/constructor/userStatusRecently" >userStatusRecently</a>#e26f42f1 = <a href="/type/UserStatus" >UserStatus</a>; +<a href="/constructor/userStatusLastWeek" >userStatusLastWeek</a>#7bf09fc = <a href="/type/UserStatus" >UserStatus</a>; +<a href="/constructor/userStatusLastMonth" >userStatusLastMonth</a>#77ebc742 = <a href="/type/UserStatus" >UserStatus</a>; + +<a href="/constructor/chatEmpty" >chatEmpty</a>#29562865 id:<a href="/type/long" >long</a> = <a href="/type/Chat" >Chat</a>; +<a href="/constructor/chat" >chat</a>#41cbf256 flags:<a href="/type/%23" >#</a> creator:flags.0?true kicked:flags.1?true left:flags.2?true deactivated:flags.5?true call_active:flags.23?true call_not_empty:flags.24?true noforwards:flags.25?true id:<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> photo:<a href="/type/ChatPhoto" >ChatPhoto</a> participants_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> migrated_to:flags.6?<a href="/type/InputChannel" >InputChannel</a> admin_rights:flags.14?<a href="/type/ChatAdminRights" >ChatAdminRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights" >ChatBannedRights</a> = <a href="/type/Chat" >Chat</a>; +<a href="/constructor/chatForbidden" >chatForbidden</a>#6592a1a7 id:<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> = <a href="/type/Chat" >Chat</a>; +<a href="/constructor/channel" >channel</a>#8261ac61 flags:<a href="/type/%23" >#</a> creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true id:<a href="/type/long" >long</a> access_hash:flags.13?<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> username:flags.6?<a href="/type/string" >string</a> photo:<a href="/type/ChatPhoto" >ChatPhoto</a> date:<a href="/type/int" >int</a> restriction_reason:flags.9?<a href="/type/Vector%20t" >Vector</a><<a href="/type/RestrictionReason" >RestrictionReason</a>> admin_rights:flags.14?<a href="/type/ChatAdminRights" >ChatAdminRights</a> banned_rights:flags.15?<a href="/type/ChatBannedRights" >ChatBannedRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights" >ChatBannedRights</a> participants_count:flags.17?<a href="/type/int" >int</a> = <a href="/type/Chat" >Chat</a>; +<a href="/constructor/channelForbidden" >channelForbidden</a>#17d493d5 flags:<a href="/type/%23" >#</a> broadcast:flags.5?true megagroup:flags.8?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> until_date:flags.16?<a href="/type/int" >int</a> = <a href="/type/Chat" >Chat</a>; + +<a href="/constructor/chatFull" >chatFull</a>#4dbdc099 flags:<a href="/type/%23" >#</a> can_set_username:flags.7?true has_scheduled:flags.8?true id:<a href="/type/long" >long</a> about:<a href="/type/string" >string</a> participants:<a href="/type/ChatParticipants" >ChatParticipants</a> chat_photo:flags.2?<a href="/type/Photo" >Photo</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> exported_invite:flags.13?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> bot_info:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotInfo" >BotInfo</a>> pinned_msg_id:flags.6?<a href="/type/int" >int</a> folder_id:flags.11?<a href="/type/int" >int</a> call:flags.12?<a href="/type/InputGroupCall" >InputGroupCall</a> ttl_period:flags.14?<a href="/type/int" >int</a> groupcall_default_join_as:flags.15?<a href="/type/Peer" >Peer</a> theme_emoticon:flags.16?<a href="/type/string" >string</a> = <a href="/type/ChatFull" >ChatFull</a>; +<a href="/constructor/channelFull" >channelFull</a>#e9b27a17 flags:<a href="/type/%23" >#</a> can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true id:<a href="/type/long" >long</a> about:<a href="/type/string" >string</a> participants_count:flags.0?<a href="/type/int" >int</a> admins_count:flags.1?<a href="/type/int" >int</a> kicked_count:flags.2?<a href="/type/int" >int</a> banned_count:flags.2?<a href="/type/int" >int</a> online_count:flags.13?<a href="/type/int" >int</a> read_inbox_max_id:<a href="/type/int" >int</a> read_outbox_max_id:<a href="/type/int" >int</a> unread_count:<a href="/type/int" >int</a> chat_photo:<a href="/type/Photo" >Photo</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> exported_invite:flags.23?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotInfo" >BotInfo</a>> migrated_from_chat_id:flags.4?<a href="/type/long" >long</a> migrated_from_max_id:flags.4?<a href="/type/int" >int</a> pinned_msg_id:flags.5?<a href="/type/int" >int</a> stickerset:flags.8?<a href="/type/StickerSet" >StickerSet</a> available_min_id:flags.9?<a href="/type/int" >int</a> folder_id:flags.11?<a href="/type/int" >int</a> linked_chat_id:flags.14?<a href="/type/long" >long</a> location:flags.15?<a href="/type/ChannelLocation" >ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int" >int</a> slowmode_next_send_date:flags.18?<a href="/type/int" >int</a> stats_dc:flags.12?<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> call:flags.21?<a href="/type/InputGroupCall" >InputGroupCall</a> ttl_period:flags.24?<a href="/type/int" >int</a> pending_suggestions:flags.25?<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> groupcall_default_join_as:flags.26?<a href="/type/Peer" >Peer</a> theme_emoticon:flags.27?<a href="/type/string" >string</a> = <a href="/type/ChatFull" >ChatFull</a>; + +<a href="/constructor/chatParticipant" >chatParticipant</a>#c02d4007 user_id:<a href="/type/long" >long</a> inviter_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/ChatParticipant" >ChatParticipant</a>; +<a href="/constructor/chatParticipantCreator" >chatParticipantCreator</a>#e46bcee4 user_id:<a href="/type/long" >long</a> = <a href="/type/ChatParticipant" >ChatParticipant</a>; +<a href="/constructor/chatParticipantAdmin" >chatParticipantAdmin</a>#a0933f5b user_id:<a href="/type/long" >long</a> inviter_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/ChatParticipant" >ChatParticipant</a>; + +<a href="/constructor/chatParticipantsForbidden" >chatParticipantsForbidden</a>#8763d3e1 flags:<a href="/type/%23" >#</a> chat_id:<a href="/type/long" >long</a> self_participant:flags.0?<a href="/type/ChatParticipant" >ChatParticipant</a> = <a href="/type/ChatParticipants" >ChatParticipants</a>; +<a href="/constructor/chatParticipants" >chatParticipants</a>#3cbc93f8 chat_id:<a href="/type/long" >long</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChatParticipant" >ChatParticipant</a>> version:<a href="/type/int" >int</a> = <a href="/type/ChatParticipants" >ChatParticipants</a>; + +<a href="/constructor/chatPhotoEmpty" >chatPhotoEmpty</a>#37c1011c = <a href="/type/ChatPhoto" >ChatPhoto</a>; +<a href="/constructor/chatPhoto" >chatPhoto</a>#1c6e1c11 flags:<a href="/type/%23" >#</a> has_video:flags.0?true photo_id:<a href="/type/long" >long</a> stripped_thumb:flags.1?<a href="/type/bytes" >bytes</a> dc_id:<a href="/type/int" >int</a> = <a href="/type/ChatPhoto" >ChatPhoto</a>; + +<a href="/constructor/messageEmpty" >messageEmpty</a>#90a6ca84 flags:<a href="/type/%23" >#</a> id:<a href="/type/int" >int</a> peer_id:flags.0?<a href="/type/Peer" >Peer</a> = <a href="/type/Message" >Message</a>; +<a href="/constructor/message" >message</a>#85d6cbe2 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true id:<a href="/type/int" >int</a> from_id:flags.8?<a href="/type/Peer" >Peer</a> peer_id:<a href="/type/Peer" >Peer</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> date:<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> reply_markup:flags.6?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> views:flags.10?<a href="/type/int" >int</a> forwards:flags.10?<a href="/type/int" >int</a> replies:flags.23?<a href="/type/MessageReplies" >MessageReplies</a> edit_date:flags.15?<a href="/type/int" >int</a> post_author:flags.16?<a href="/type/string" >string</a> grouped_id:flags.17?<a href="/type/long" >long</a> restriction_reason:flags.22?<a href="/type/Vector%20t" >Vector</a><<a href="/type/RestrictionReason" >RestrictionReason</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Message" >Message</a>; +<a href="/constructor/messageService" >messageService</a>#2b085862 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:<a href="/type/int" >int</a> from_id:flags.8?<a href="/type/Peer" >Peer</a> peer_id:<a href="/type/Peer" >Peer</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> date:<a href="/type/int" >int</a> action:<a href="/type/MessageAction" >MessageAction</a> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Message" >Message</a>; + +<a href="/constructor/messageMediaEmpty" >messageMediaEmpty</a>#3ded6320 = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaPhoto" >messageMediaPhoto</a>#695150d7 flags:<a href="/type/%23" >#</a> photo:flags.0?<a href="/type/Photo" >Photo</a> ttl_seconds:flags.2?<a href="/type/int" >int</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaGeo" >messageMediaGeo</a>#56e0d474 geo:<a href="/type/GeoPoint" >GeoPoint</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaContact" >messageMediaContact</a>#70322949 phone_number:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> vcard:<a href="/type/string" >string</a> user_id:<a href="/type/long" >long</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaUnsupported" >messageMediaUnsupported</a>#9f84f49e = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaDocument" >messageMediaDocument</a>#9cb070d7 flags:<a href="/type/%23" >#</a> document:flags.0?<a href="/type/Document" >Document</a> ttl_seconds:flags.2?<a href="/type/int" >int</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaWebPage" >messageMediaWebPage</a>#a32dd600 webpage:<a href="/type/WebPage" >WebPage</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaVenue" >messageMediaVenue</a>#2ec0533f geo:<a href="/type/GeoPoint" >GeoPoint</a> title:<a href="/type/string" >string</a> address:<a href="/type/string" >string</a> provider:<a href="/type/string" >string</a> venue_id:<a href="/type/string" >string</a> venue_type:<a href="/type/string" >string</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaGame" >messageMediaGame</a>#fdb19008 game:<a href="/type/Game" >Game</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaInvoice" >messageMediaInvoice</a>#84551347 flags:<a href="/type/%23" >#</a> shipping_address_requested:flags.1?true test:flags.3?true title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.0?<a href="/type/WebDocument" >WebDocument</a> receipt_msg_id:flags.2?<a href="/type/int" >int</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> start_param:<a href="/type/string" >string</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaGeoLive" >messageMediaGeoLive</a>#b940c666 flags:<a href="/type/%23" >#</a> geo:<a href="/type/GeoPoint" >GeoPoint</a> heading:flags.0?<a href="/type/int" >int</a> period:<a href="/type/int" >int</a> proximity_notification_radius:flags.1?<a href="/type/int" >int</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaPoll" >messageMediaPoll</a>#4bd6e798 poll:<a href="/type/Poll" >Poll</a> results:<a href="/type/PollResults" >PollResults</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/constructor/messageMediaDice" >messageMediaDice</a>#3f7ee58b value:<a href="/type/int" >int</a> emoticon:<a href="/type/string" >string</a> = <a href="/type/MessageMedia" >MessageMedia</a>; + +<a href="/constructor/messageActionEmpty" >messageActionEmpty</a>#b6aef7b0 = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChatCreate" >messageActionChatCreate</a>#bd47cbad title:<a href="/type/string" >string</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChatEditTitle" >messageActionChatEditTitle</a>#b5a1ce5a title:<a href="/type/string" >string</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChatEditPhoto" >messageActionChatEditPhoto</a>#7fcb13a8 photo:<a href="/type/Photo" >Photo</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChatDeletePhoto" >messageActionChatDeletePhoto</a>#95e3fbef = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChatAddUser" >messageActionChatAddUser</a>#15cefd00 users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChatDeleteUser" >messageActionChatDeleteUser</a>#a43f30cc user_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChatJoinedByLink" >messageActionChatJoinedByLink</a>#31224c3 inviter_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChannelCreate" >messageActionChannelCreate</a>#95d2ac92 title:<a href="/type/string" >string</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChatMigrateTo" >messageActionChatMigrateTo</a>#e1037f92 channel_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionChannelMigrateFrom" >messageActionChannelMigrateFrom</a>#ea3948e9 title:<a href="/type/string" >string</a> chat_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionPinMessage" >messageActionPinMessage</a>#94bd38ed = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionHistoryClear" >messageActionHistoryClear</a>#9fbab604 = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionGameScore" >messageActionGameScore</a>#92a72876 game_id:<a href="/type/long" >long</a> score:<a href="/type/int" >int</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionPaymentSentMe" >messageActionPaymentSentMe</a>#8f31b327 flags:<a href="/type/%23" >#</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href="/type/string" >string</a> charge:<a href="/type/PaymentCharge" >PaymentCharge</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionPaymentSent" >messageActionPaymentSent</a>#40699cd0 currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionPhoneCall" >messageActionPhoneCall</a>#80e11a7f flags:<a href="/type/%23" >#</a> video:flags.2?true call_id:<a href="/type/long" >long</a> reason:flags.0?<a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a> duration:flags.1?<a href="/type/int" >int</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionScreenshotTaken" >messageActionScreenshotTaken</a>#4792929b = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionCustomAction" >messageActionCustomAction</a>#fae69f56 message:<a href="/type/string" >string</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionBotAllowed" >messageActionBotAllowed</a>#abe9affe domain:<a href="/type/string" >string</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionSecureValuesSentMe" >messageActionSecureValuesSentMe</a>#1b287353 values:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValue" >SecureValue</a>> credentials:<a href="/type/SecureCredentialsEncrypted" >SecureCredentialsEncrypted</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionSecureValuesSent" >messageActionSecureValuesSent</a>#d95c6154 types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueType" >SecureValueType</a>> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionContactSignUp" >messageActionContactSignUp</a>#f3f25f76 = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionGeoProximityReached" >messageActionGeoProximityReached</a>#98e0d697 from_id:<a href="/type/Peer" >Peer</a> to_id:<a href="/type/Peer" >Peer</a> distance:<a href="/type/int" >int</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionGroupCall" >messageActionGroupCall</a>#7a0d7f42 flags:<a href="/type/%23" >#</a> call:<a href="/type/InputGroupCall" >InputGroupCall</a> duration:flags.0?<a href="/type/int" >int</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionInviteToGroupCall" >messageActionInviteToGroupCall</a>#502f92f7 call:<a href="/type/InputGroupCall" >InputGroupCall</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionSetMessagesTTL" >messageActionSetMessagesTTL</a>#aa1afbfd period:<a href="/type/int" >int</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionGroupCallScheduled" >messageActionGroupCallScheduled</a>#b3a07661 call:<a href="/type/InputGroupCall" >InputGroupCall</a> schedule_date:<a href="/type/int" >int</a> = <a href="/type/MessageAction" >MessageAction</a>; +<a href="/constructor/messageActionSetChatTheme" >messageActionSetChatTheme</a>#aa786345 emoticon:<a href="/type/string" >string</a> = <a href="/type/MessageAction" >MessageAction</a>; + +<a href="/constructor/dialog" >dialog</a>#2c171f72 flags:<a href="/type/%23" >#</a> pinned:flags.2?true unread_mark:flags.3?true peer:<a href="/type/Peer" >Peer</a> top_message:<a href="/type/int" >int</a> read_inbox_max_id:<a href="/type/int" >int</a> read_outbox_max_id:<a href="/type/int" >int</a> unread_count:<a href="/type/int" >int</a> unread_mentions_count:<a href="/type/int" >int</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> pts:flags.0?<a href="/type/int" >int</a> draft:flags.1?<a href="/type/DraftMessage" >DraftMessage</a> folder_id:flags.4?<a href="/type/int" >int</a> = <a href="/type/Dialog" >Dialog</a>; +<a href="/constructor/dialogFolder" >dialogFolder</a>#71bd134c flags:<a href="/type/%23" >#</a> pinned:flags.2?true folder:<a href="/type/Folder" >Folder</a> peer:<a href="/type/Peer" >Peer</a> top_message:<a href="/type/int" >int</a> unread_muted_peers_count:<a href="/type/int" >int</a> unread_unmuted_peers_count:<a href="/type/int" >int</a> unread_muted_messages_count:<a href="/type/int" >int</a> unread_unmuted_messages_count:<a href="/type/int" >int</a> = <a href="/type/Dialog" >Dialog</a>; + +<a href="/constructor/photoEmpty" >photoEmpty</a>#2331b22d id:<a href="/type/long" >long</a> = <a href="/type/Photo" >Photo</a>; +<a href="/constructor/photo" >photo</a>#fb197a65 flags:<a href="/type/%23" >#</a> has_stickers:flags.0?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> date:<a href="/type/int" >int</a> sizes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PhotoSize" >PhotoSize</a>> video_sizes:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/VideoSize" >VideoSize</a>> dc_id:<a href="/type/int" >int</a> = <a href="/type/Photo" >Photo</a>; + +<a href="/constructor/photoSizeEmpty" >photoSizeEmpty</a>#e17e23c type:<a href="/type/string" >string</a> = <a href="/type/PhotoSize" >PhotoSize</a>; +<a href="/constructor/photoSize" >photoSize</a>#75c78e60 type:<a href="/type/string" >string</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> = <a href="/type/PhotoSize" >PhotoSize</a>; +<a href="/constructor/photoCachedSize" >photoCachedSize</a>#21e1ad6 type:<a href="/type/string" >string</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/PhotoSize" >PhotoSize</a>; +<a href="/constructor/photoStrippedSize" >photoStrippedSize</a>#e0b0bc2e type:<a href="/type/string" >string</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/PhotoSize" >PhotoSize</a>; +<a href="/constructor/photoSizeProgressive" >photoSizeProgressive</a>#fa3efb95 type:<a href="/type/string" >string</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> sizes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/PhotoSize" >PhotoSize</a>; +<a href="/constructor/photoPathSize" >photoPathSize</a>#d8214d41 type:<a href="/type/string" >string</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/PhotoSize" >PhotoSize</a>; + +<a href="/constructor/geoPointEmpty" >geoPointEmpty</a>#1117dd5f = <a href="/type/GeoPoint" >GeoPoint</a>; +<a href="/constructor/geoPoint" >geoPoint</a>#b2a2f663 flags:<a href="/type/%23" >#</a> long:<a href="/type/double" >double</a> lat:<a href="/type/double" >double</a> access_hash:<a href="/type/long" >long</a> accuracy_radius:flags.0?<a href="/type/int" >int</a> = <a href="/type/GeoPoint" >GeoPoint</a>; + +<a href="/constructor/auth.sentCode" >auth.sentCode</a>#5e002502 flags:<a href="/type/%23" >#</a> type:<a href="/type/auth.SentCodeType" >auth.SentCodeType</a> phone_code_hash:<a href="/type/string" >string</a> next_type:flags.1?<a href="/type/auth.CodeType" >auth.CodeType</a> timeout:flags.2?<a href="/type/int" >int</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>; + +<a href="/constructor/auth.authorization" >auth.authorization</a>#cd050916 flags:<a href="/type/%23" >#</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> user:<a href="/type/User" >User</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/constructor/auth.authorizationSignUpRequired" >auth.authorizationSignUpRequired</a>#44747e9a flags:<a href="/type/%23" >#</a> terms_of_service:flags.0?<a href="/type/help.TermsOfService" >help.TermsOfService</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; + +<a href="/constructor/auth.exportedAuthorization" >auth.exportedAuthorization</a>#b434e2b8 id:<a href="/type/long" >long</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.ExportedAuthorization" >auth.ExportedAuthorization</a>; + +<a href="/constructor/inputNotifyPeer" >inputNotifyPeer</a>#b8bc5b0c peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/InputNotifyPeer" >InputNotifyPeer</a>; +<a href="/constructor/inputNotifyUsers" >inputNotifyUsers</a>#193b4417 = <a href="/type/InputNotifyPeer" >InputNotifyPeer</a>; +<a href="/constructor/inputNotifyChats" >inputNotifyChats</a>#4a95e84e = <a href="/type/InputNotifyPeer" >InputNotifyPeer</a>; +<a href="/constructor/inputNotifyBroadcasts" >inputNotifyBroadcasts</a>#b1db7c7e = <a href="/type/InputNotifyPeer" >InputNotifyPeer</a>; + +<a href="/constructor/inputPeerNotifySettings" >inputPeerNotifySettings</a>#9c3d198e flags:<a href="/type/%23" >#</a> show_previews:flags.0?<a href="/type/Bool" >Bool</a> silent:flags.1?<a href="/type/Bool" >Bool</a> mute_until:flags.2?<a href="/type/int" >int</a> sound:flags.3?<a href="/type/string" >string</a> = <a href="/type/InputPeerNotifySettings" >InputPeerNotifySettings</a>; + +<a href="/constructor/peerNotifySettings" >peerNotifySettings</a>#af509d20 flags:<a href="/type/%23" >#</a> show_previews:flags.0?<a href="/type/Bool" >Bool</a> silent:flags.1?<a href="/type/Bool" >Bool</a> mute_until:flags.2?<a href="/type/int" >int</a> sound:flags.3?<a href="/type/string" >string</a> = <a href="/type/PeerNotifySettings" >PeerNotifySettings</a>; + +<a href="/constructor/peerSettings" >peerSettings</a>#733f2961 flags:<a href="/type/%23" >#</a> report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true autoarchived:flags.7?true invite_members:flags.8?true geo_distance:flags.6?<a href="/type/int" >int</a> = <a href="/type/PeerSettings" >PeerSettings</a>; + +<a href="/constructor/wallPaper" >wallPaper</a>#a437c3ed id:<a href="/type/long" >long</a> flags:<a href="/type/%23" >#</a> creator:flags.0?true default:flags.1?true pattern:flags.3?true dark:flags.4?true access_hash:<a href="/type/long" >long</a> slug:<a href="/type/string" >string</a> document:<a href="/type/Document" >Document</a> settings:flags.2?<a href="/type/WallPaperSettings" >WallPaperSettings</a> = <a href="/type/WallPaper" >WallPaper</a>; +<a href="/constructor/wallPaperNoFile" >wallPaperNoFile</a>#e0804116 id:<a href="/type/long" >long</a> flags:<a href="/type/%23" >#</a> default:flags.1?true dark:flags.4?true settings:flags.2?<a href="/type/WallPaperSettings" >WallPaperSettings</a> = <a href="/type/WallPaper" >WallPaper</a>; + +<a href="/constructor/inputReportReasonSpam" >inputReportReasonSpam</a>#58dbcab8 = <a href="/type/ReportReason" >ReportReason</a>; +<a href="/constructor/inputReportReasonViolence" >inputReportReasonViolence</a>#1e22c78d = <a href="/type/ReportReason" >ReportReason</a>; +<a href="/constructor/inputReportReasonPornography" >inputReportReasonPornography</a>#2e59d922 = <a href="/type/ReportReason" >ReportReason</a>; +<a href="/constructor/inputReportReasonChildAbuse" >inputReportReasonChildAbuse</a>#adf44ee3 = <a href="/type/ReportReason" >ReportReason</a>; +<a href="/constructor/inputReportReasonOther" >inputReportReasonOther</a>#c1e4a2b1 = <a href="/type/ReportReason" >ReportReason</a>; +<a href="/constructor/inputReportReasonCopyright" >inputReportReasonCopyright</a>#9b89f93a = <a href="/type/ReportReason" >ReportReason</a>; +<a href="/constructor/inputReportReasonGeoIrrelevant" >inputReportReasonGeoIrrelevant</a>#dbd4feed = <a href="/type/ReportReason" >ReportReason</a>; +<a href="/constructor/inputReportReasonFake" >inputReportReasonFake</a>#f5ddd6e7 = <a href="/type/ReportReason" >ReportReason</a>; + +<a href="/constructor/userFull" >userFull</a>#d697ff05 flags:<a href="/type/%23" >#</a> blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true user:<a href="/type/User" >User</a> about:flags.1?<a href="/type/string" >string</a> settings:<a href="/type/PeerSettings" >PeerSettings</a> profile_photo:flags.2?<a href="/type/Photo" >Photo</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> bot_info:flags.3?<a href="/type/BotInfo" >BotInfo</a> pinned_msg_id:flags.6?<a href="/type/int" >int</a> common_chats_count:<a href="/type/int" >int</a> folder_id:flags.11?<a href="/type/int" >int</a> ttl_period:flags.14?<a href="/type/int" >int</a> theme_emoticon:flags.15?<a href="/type/string" >string</a> = <a href="/type/UserFull" >UserFull</a>; + +<a href="/constructor/contact" >contact</a>#145ade0b user_id:<a href="/type/long" >long</a> mutual:<a href="/type/Bool" >Bool</a> = <a href="/type/Contact" >Contact</a>; + +<a href="/constructor/importedContact" >importedContact</a>#c13e3c50 user_id:<a href="/type/long" >long</a> client_id:<a href="/type/long" >long</a> = <a href="/type/ImportedContact" >ImportedContact</a>; + +<a href="/constructor/contactStatus" >contactStatus</a>#16d9703b user_id:<a href="/type/long" >long</a> status:<a href="/type/UserStatus" >UserStatus</a> = <a href="/type/ContactStatus" >ContactStatus</a>; + +<a href="/constructor/contacts.contactsNotModified" >contacts.contactsNotModified</a>#b74ba9d2 = <a href="/type/contacts.Contacts" >contacts.Contacts</a>; +<a href="/constructor/contacts.contacts" >contacts.contacts</a>#eae87e42 contacts:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Contact" >Contact</a>> saved_count:<a href="/type/int" >int</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.Contacts" >contacts.Contacts</a>; + +<a href="/constructor/contacts.importedContacts" >contacts.importedContacts</a>#77d01c3b imported:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ImportedContact" >ImportedContact</a>> popular_invites:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PopularContact" >PopularContact</a>> retry_contacts:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.ImportedContacts" >contacts.ImportedContacts</a>; + +<a href="/constructor/contacts.blocked" >contacts.blocked</a>#ade1591 blocked:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PeerBlocked" >PeerBlocked</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.Blocked" >contacts.Blocked</a>; +<a href="/constructor/contacts.blockedSlice" >contacts.blockedSlice</a>#e1664194 count:<a href="/type/int" >int</a> blocked:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PeerBlocked" >PeerBlocked</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.Blocked" >contacts.Blocked</a>; + +<a href="/constructor/messages.dialogs" >messages.dialogs</a>#15ba6c40 dialogs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Dialog" >Dialog</a>> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.Dialogs" >messages.Dialogs</a>; +<a href="/constructor/messages.dialogsSlice" >messages.dialogsSlice</a>#71e094f3 count:<a href="/type/int" >int</a> dialogs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Dialog" >Dialog</a>> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.Dialogs" >messages.Dialogs</a>; +<a href="/constructor/messages.dialogsNotModified" >messages.dialogsNotModified</a>#f0e3e596 count:<a href="/type/int" >int</a> = <a href="/type/messages.Dialogs" >messages.Dialogs</a>; + +<a href="/constructor/messages.messages" >messages.messages</a>#8c718e87 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <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>; + +<a href="/constructor/messages.chats" >messages.chats</a>#64ff9fd5 chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> = <a href="/type/messages.Chats" >messages.Chats</a>; +<a href="/constructor/messages.chatsSlice" >messages.chatsSlice</a>#9cd81144 count:<a href="/type/int" >int</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> = <a href="/type/messages.Chats" >messages.Chats</a>; + +<a href="/constructor/messages.chatFull" >messages.chatFull</a>#e5d7d19c full_chat:<a href="/type/ChatFull" >ChatFull</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ChatFull" >messages.ChatFull</a>; + +<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>; + +<a href="/constructor/inputMessagesFilterEmpty" >inputMessagesFilterEmpty</a>#57e2f66c = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterPhotos" >inputMessagesFilterPhotos</a>#9609a51c = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterVideo" >inputMessagesFilterVideo</a>#9fc00e65 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterPhotoVideo" >inputMessagesFilterPhotoVideo</a>#56e9f0e4 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterDocument" >inputMessagesFilterDocument</a>#9eddf188 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterUrl" >inputMessagesFilterUrl</a>#7ef0dd87 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterGif" >inputMessagesFilterGif</a>#ffc86587 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterVoice" >inputMessagesFilterVoice</a>#50f5c392 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterMusic" >inputMessagesFilterMusic</a>#3751b49e = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterChatPhotos" >inputMessagesFilterChatPhotos</a>#3a20ecb8 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterPhoneCalls" >inputMessagesFilterPhoneCalls</a>#80c99768 flags:<a href="/type/%23" >#</a> missed:flags.0?true = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterRoundVoice" >inputMessagesFilterRoundVoice</a>#7a7c17a4 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterRoundVideo" >inputMessagesFilterRoundVideo</a>#b549da53 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterMyMentions" >inputMessagesFilterMyMentions</a>#c1f8e69a = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterGeo" >inputMessagesFilterGeo</a>#e7026d0d = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterContacts" >inputMessagesFilterContacts</a>#e062db83 = <a href="/type/MessagesFilter" >MessagesFilter</a>; +<a href="/constructor/inputMessagesFilterPinned" >inputMessagesFilterPinned</a>#1bb00451 = <a href="/type/MessagesFilter" >MessagesFilter</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/updateMessageID" >updateMessageID</a>#4e90bfd6 id:<a href="/type/int" >int</a> random_id:<a href="/type/long" >long</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDeleteMessages" >updateDeleteMessages</a>#a20db0e5 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateUserTyping" >updateUserTyping</a>#c01e857f user_id:<a href="/type/long" >long</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChatUserTyping" >updateChatUserTyping</a>#83487af0 chat_id:<a href="/type/long" >long</a> from_id:<a href="/type/Peer" >Peer</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChatParticipants" >updateChatParticipants</a>#7761198 participants:<a href="/type/ChatParticipants" >ChatParticipants</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateUserStatus" >updateUserStatus</a>#e5bdf8de user_id:<a href="/type/long" >long</a> status:<a href="/type/UserStatus" >UserStatus</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateUserName" >updateUserName</a>#c3f202e0 user_id:<a href="/type/long" >long</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> username:<a href="/type/string" >string</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateUserPhoto" >updateUserPhoto</a>#f227868c user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> photo:<a href="/type/UserProfilePhoto" >UserProfilePhoto</a> previous:<a href="/type/Bool" >Bool</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateNewEncryptedMessage" >updateNewEncryptedMessage</a>#12bcbd9a message:<a href="/type/EncryptedMessage" >EncryptedMessage</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateEncryptedChatTyping" >updateEncryptedChatTyping</a>#1710f156 chat_id:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateEncryption" >updateEncryption</a>#b4a2e88d chat:<a href="/type/EncryptedChat" >EncryptedChat</a> date:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateEncryptedMessagesRead" >updateEncryptedMessagesRead</a>#38fe25b7 chat_id:<a href="/type/int" >int</a> max_date:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChatParticipantAdd" >updateChatParticipantAdd</a>#3dda5451 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> inviter_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChatParticipantDelete" >updateChatParticipantDelete</a>#e32f3d77 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDcOptions" >updateDcOptions</a>#8e5e9873 dc_options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DcOption" >DcOption</a>> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateNotifySettings" >updateNotifySettings</a>#bec268ef peer:<a href="/type/NotifyPeer" >NotifyPeer</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateServiceNotification" >updateServiceNotification</a>#ebe46819 flags:<a href="/type/%23" >#</a> popup:flags.0?true inbox_date:flags.1?<a href="/type/int" >int</a> type:<a href="/type/string" >string</a> message:<a href="/type/string" >string</a> media:<a href="/type/MessageMedia" >MessageMedia</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePrivacy" >updatePrivacy</a>#ee3b272a key:<a href="/type/PrivacyKey" >PrivacyKey</a> rules:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PrivacyRule" >PrivacyRule</a>> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateUserPhone" >updateUserPhone</a>#5492a13 user_id:<a href="/type/long" >long</a> phone:<a href="/type/string" >string</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateReadHistoryInbox" >updateReadHistoryInbox</a>#9c974fdf flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> peer:<a href="/type/Peer" >Peer</a> max_id:<a href="/type/int" >int</a> still_unread_count:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateReadHistoryOutbox" >updateReadHistoryOutbox</a>#2f2f21bf peer:<a href="/type/Peer" >Peer</a> max_id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateWebPage" >updateWebPage</a>#7f891213 webpage:<a href="/type/WebPage" >WebPage</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateReadMessagesContents" >updateReadMessagesContents</a>#68c13933 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChannelTooLong" >updateChannelTooLong</a>#108d941f flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> pts:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChannel" >updateChannel</a>#635b4c09 channel_id:<a href="/type/long" >long</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/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>; +<a href="/constructor/updateReadChannelInbox" >updateReadChannelInbox</a>#922e6e10 flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> channel_id:<a href="/type/long" >long</a> max_id:<a href="/type/int" >int</a> still_unread_count:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDeleteChannelMessages" >updateDeleteChannelMessages</a>#c32d5b12 channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChannelMessageViews" >updateChannelMessageViews</a>#f226ac08 channel_id:<a href="/type/long" >long</a> id:<a href="/type/int" >int</a> views:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChatParticipantAdmin" >updateChatParticipantAdmin</a>#d7ca61a2 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> is_admin:<a href="/type/Bool" >Bool</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateNewStickerSet" >updateNewStickerSet</a>#688a30aa stickerset:<a href="/type/messages.StickerSet" >messages.StickerSet</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateStickerSetsOrder" >updateStickerSetsOrder</a>#bb2d201 flags:<a href="/type/%23" >#</a> masks:flags.0?true order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateStickerSets" >updateStickerSets</a>#43ae3dec = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateSavedGifs" >updateSavedGifs</a>#9375341e = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateBotInlineQuery" >updateBotInlineQuery</a>#496f379c flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> query:<a href="/type/string" >string</a> geo:flags.0?<a href="/type/GeoPoint" >GeoPoint</a> peer_type:flags.1?<a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a> offset:<a href="/type/string" >string</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateBotInlineSend" >updateBotInlineSend</a>#12f12a07 flags:<a href="/type/%23" >#</a> user_id:<a href="/type/long" >long</a> query:<a href="/type/string" >string</a> geo:flags.0?<a href="/type/GeoPoint" >GeoPoint</a> id:<a href="/type/string" >string</a> msg_id:flags.1?<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateEditChannelMessage" >updateEditChannelMessage</a>#1b3f4df7 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/updateBotCallbackQuery" >updateBotCallbackQuery</a>#b9cfc48d flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> peer:<a href="/type/Peer" >Peer</a> msg_id:<a href="/type/int" >int</a> chat_instance:<a href="/type/long" >long</a> data:flags.0?<a href="/type/bytes" >bytes</a> game_short_name:flags.1?<a href="/type/string" >string</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateEditMessage" >updateEditMessage</a>#e40370a3 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/updateInlineBotCallbackQuery" >updateInlineBotCallbackQuery</a>#691e9052 flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> msg_id:<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> chat_instance:<a href="/type/long" >long</a> data:flags.0?<a href="/type/bytes" >bytes</a> game_short_name:flags.1?<a href="/type/string" >string</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateReadChannelOutbox" >updateReadChannelOutbox</a>#b75f99a9 channel_id:<a href="/type/long" >long</a> max_id:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDraftMessage" >updateDraftMessage</a>#ee2bb969 peer:<a href="/type/Peer" >Peer</a> draft:<a href="/type/DraftMessage" >DraftMessage</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateReadFeaturedStickers" >updateReadFeaturedStickers</a>#571d2742 = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateRecentStickers" >updateRecentStickers</a>#9a422c20 = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateConfig" >updateConfig</a>#a229dd06 = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePtsChanged" >updatePtsChanged</a>#3354678f = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChannelWebPage" >updateChannelWebPage</a>#2f2ba99f channel_id:<a href="/type/long" >long</a> webpage:<a href="/type/WebPage" >WebPage</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDialogPinned" >updateDialogPinned</a>#6e6fe51c flags:<a href="/type/%23" >#</a> pinned:flags.0?true folder_id:flags.1?<a href="/type/int" >int</a> peer:<a href="/type/DialogPeer" >DialogPeer</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePinnedDialogs" >updatePinnedDialogs</a>#fa0f3ca2 flags:<a href="/type/%23" >#</a> folder_id:flags.1?<a href="/type/int" >int</a> order:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/DialogPeer" >DialogPeer</a>> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateBotWebhookJSON" >updateBotWebhookJSON</a>#8317c0c3 data:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateBotWebhookJSONQuery" >updateBotWebhookJSONQuery</a>#9b9240a6 query_id:<a href="/type/long" >long</a> data:<a href="/type/DataJSON" >DataJSON</a> timeout:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateBotShippingQuery" >updateBotShippingQuery</a>#b5aefd7d query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> shipping_address:<a href="/type/PostAddress" >PostAddress</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateBotPrecheckoutQuery" >updateBotPrecheckoutQuery</a>#8caa9a96 flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href="/type/string" >string</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePhoneCall" >updatePhoneCall</a>#ab0f6b1e phone_call:<a href="/type/PhoneCall" >PhoneCall</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateLangPackTooLong" >updateLangPackTooLong</a>#46560264 lang_code:<a href="/type/string" >string</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateLangPack" >updateLangPack</a>#56022f4d difference:<a href="/type/LangPackDifference" >LangPackDifference</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateFavedStickers" >updateFavedStickers</a>#e511996d = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChannelReadMessagesContents" >updateChannelReadMessagesContents</a>#44bdd535 channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateContactsReset" >updateContactsReset</a>#7084a7be = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChannelAvailableMessages" >updateChannelAvailableMessages</a>#b23fc698 channel_id:<a href="/type/long" >long</a> available_min_id:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDialogUnreadMark" >updateDialogUnreadMark</a>#e16459c3 flags:<a href="/type/%23" >#</a> unread:flags.0?true peer:<a href="/type/DialogPeer" >DialogPeer</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateMessagePoll" >updateMessagePoll</a>#aca1657b flags:<a href="/type/%23" >#</a> poll_id:<a href="/type/long" >long</a> poll:flags.0?<a href="/type/Poll" >Poll</a> results:<a href="/type/PollResults" >PollResults</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChatDefaultBannedRights" >updateChatDefaultBannedRights</a>#54c01850 peer:<a href="/type/Peer" >Peer</a> default_banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateFolderPeers" >updateFolderPeers</a>#19360dc0 folder_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/FolderPeer" >FolderPeer</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/updatePeerSettings" >updatePeerSettings</a>#6a7e7366 peer:<a href="/type/Peer" >Peer</a> settings:<a href="/type/PeerSettings" >PeerSettings</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePeerLocated" >updatePeerLocated</a>#b4afcfb0 peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PeerLocated" >PeerLocated</a>> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateNewScheduledMessage" >updateNewScheduledMessage</a>#39a51dfb message:<a href="/type/Message" >Message</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDeleteScheduledMessages" >updateDeleteScheduledMessages</a>#90866cee peer:<a href="/type/Peer" >Peer</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateTheme" >updateTheme</a>#8216fba3 theme:<a href="/type/Theme" >Theme</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateGeoLiveViewed" >updateGeoLiveViewed</a>#871fb939 peer:<a href="/type/Peer" >Peer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateLoginToken" >updateLoginToken</a>#564fe691 = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateMessagePollVote" >updateMessagePollVote</a>#106395c9 poll_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> qts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDialogFilter" >updateDialogFilter</a>#26ffde7d flags:<a href="/type/%23" >#</a> id:<a href="/type/int" >int</a> filter:flags.0?<a href="/type/DialogFilter" >DialogFilter</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDialogFilterOrder" >updateDialogFilterOrder</a>#a5d72105 order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateDialogFilters" >updateDialogFilters</a>#3504914f = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePhoneCallSignalingData" >updatePhoneCallSignalingData</a>#2661bf09 phone_call_id:<a href="/type/long" >long</a> data:<a href="/type/bytes" >bytes</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChannelMessageForwards" >updateChannelMessageForwards</a>#d29a27f4 channel_id:<a href="/type/long" >long</a> id:<a href="/type/int" >int</a> forwards:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateReadChannelDiscussionInbox" >updateReadChannelDiscussionInbox</a>#d6b19546 flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> top_msg_id:<a href="/type/int" >int</a> read_max_id:<a href="/type/int" >int</a> broadcast_id:flags.0?<a href="/type/long" >long</a> broadcast_post:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateReadChannelDiscussionOutbox" >updateReadChannelDiscussionOutbox</a>#695c9e7c channel_id:<a href="/type/long" >long</a> top_msg_id:<a href="/type/int" >int</a> read_max_id:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePeerBlocked" >updatePeerBlocked</a>#246a4b22 peer_id:<a href="/type/Peer" >Peer</a> blocked:<a href="/type/Bool" >Bool</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChannelUserTyping" >updateChannelUserTyping</a>#8c88c923 flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> top_msg_id:flags.0?<a href="/type/int" >int</a> from_id:<a href="/type/Peer" >Peer</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePinnedMessages" >updatePinnedMessages</a>#ed85eab5 flags:<a href="/type/%23" >#</a> pinned:flags.0?true peer:<a href="/type/Peer" >Peer</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePinnedChannelMessages" >updatePinnedChannelMessages</a>#5bb98608 flags:<a href="/type/%23" >#</a> pinned:flags.0?true channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChat" >updateChat</a>#f89a6a4e chat_id:<a href="/type/long" >long</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateGroupCallParticipants" >updateGroupCallParticipants</a>#f2ebdb4e call:<a href="/type/InputGroupCall" >InputGroupCall</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/GroupCallParticipant" >GroupCallParticipant</a>> version:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateGroupCall" >updateGroupCall</a>#14b24500 chat_id:<a href="/type/long" >long</a> call:<a href="/type/GroupCall" >GroupCall</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updatePeerHistoryTTL" >updatePeerHistoryTTL</a>#bb9bb9a5 flags:<a href="/type/%23" >#</a> peer:<a href="/type/Peer" >Peer</a> ttl_period:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChatParticipant" >updateChatParticipant</a>#d087663a flags:<a href="/type/%23" >#</a> chat_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> actor_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> prev_participant:flags.0?<a href="/type/ChatParticipant" >ChatParticipant</a> new_participant:flags.1?<a href="/type/ChatParticipant" >ChatParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateChannelParticipant" >updateChannelParticipant</a>#985d3abb flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> actor_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> prev_participant:flags.0?<a href="/type/ChannelParticipant" >ChannelParticipant</a> new_participant:flags.1?<a href="/type/ChannelParticipant" >ChannelParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateBotStopped" >updateBotStopped</a>#c4870a49 user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> stopped:<a href="/type/Bool" >Bool</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateGroupCallConnection" >updateGroupCallConnection</a>#b783982 flags:<a href="/type/%23" >#</a> presentation:flags.0?true params:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Update" >Update</a>; +<a href="/constructor/updateBotCommands" >updateBotCommands</a>#4d712f2e peer:<a href="/type/Peer" >Peer</a> bot_id:<a href="/type/long" >long</a> commands:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotCommand" >BotCommand</a>> = <a href="/type/Update" >Update</a>; + +<a href="/constructor/updates.state" >updates.state</a>#a56c2a3e pts:<a href="/type/int" >int</a> qts:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> unread_count:<a href="/type/int" >int</a> = <a href="/type/updates.State" >updates.State</a>; + +<a href="/constructor/updates.differenceEmpty" >updates.differenceEmpty</a>#5d75a138 date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/updates.Difference" >updates.Difference</a>; +<a href="/constructor/updates.difference" >updates.difference</a>#f49ca0 new_messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> new_encrypted_messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/EncryptedMessage" >EncryptedMessage</a>> other_updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> state:<a href="/type/updates.State" >updates.State</a> = <a href="/type/updates.Difference" >updates.Difference</a>; +<a href="/constructor/updates.differenceSlice" >updates.differenceSlice</a>#a8fb1981 new_messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> new_encrypted_messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/EncryptedMessage" >EncryptedMessage</a>> other_updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> intermediate_state:<a href="/type/updates.State" >updates.State</a> = <a href="/type/updates.Difference" >updates.Difference</a>; +<a href="/constructor/updates.differenceTooLong" >updates.differenceTooLong</a>#4afe8f6d pts:<a href="/type/int" >int</a> = <a href="/type/updates.Difference" >updates.Difference</a>; + +<a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; + +<a href="/constructor/photos.photos" >photos.photos</a>#8dca6aa5 photos:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Photo" >Photo</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/photos.Photos" >photos.Photos</a>; +<a href="/constructor/photos.photosSlice" >photos.photosSlice</a>#15051f54 count:<a href="/type/int" >int</a> photos:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Photo" >Photo</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/photos.Photos" >photos.Photos</a>; + +<a href="/constructor/photos.photo" >photos.photo</a>#20212ca8 photo:<a href="/type/Photo" >Photo</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/photos.Photo" >photos.Photo</a>; + +<a href="/constructor/upload.file" >upload.file</a>#96a18d5 type:<a href="/type/storage.FileType" >storage.FileType</a> mtime:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/upload.File" >upload.File</a>; +<a href="/constructor/upload.fileCdnRedirect" >upload.fileCdnRedirect</a>#f18cda44 dc_id:<a href="/type/int" >int</a> file_token:<a href="/type/bytes" >bytes</a> encryption_key:<a href="/type/bytes" >bytes</a> encryption_iv:<a href="/type/bytes" >bytes</a> file_hashes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/FileHash" >FileHash</a>> = <a href="/type/upload.File" >upload.File</a>; + +<a href="/constructor/dcOption" >dcOption</a>#18b7a10d flags:<a href="/type/%23" >#</a> ipv6:flags.0?true media_only:flags.1?true tcpo_only:flags.2?true cdn:flags.3?true static:flags.4?true id:<a href="/type/int" >int</a> ip_address:<a href="/type/string" >string</a> port:<a href="/type/int" >int</a> secret:flags.10?<a href="/type/bytes" >bytes</a> = <a href="/type/DcOption" >DcOption</a>; + +<a href="/constructor/config" >config</a>#330b4067 flags:<a href="/type/%23" >#</a> phonecalls_enabled:flags.1?true default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true ignore_phone_entities:flags.5?true revoke_pm_inbox:flags.6?true blocked_mode:flags.8?true pfs_enabled:flags.13?true date:<a href="/type/int" >int</a> expires:<a href="/type/int" >int</a> test_mode:<a href="/type/Bool" >Bool</a> this_dc:<a href="/type/int" >int</a> dc_options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DcOption" >DcOption</a>> dc_txt_domain_name:<a href="/type/string" >string</a> chat_size_max:<a href="/type/int" >int</a> megagroup_size_max:<a href="/type/int" >int</a> forwarded_count_max:<a href="/type/int" >int</a> online_update_period_ms:<a href="/type/int" >int</a> offline_blur_timeout_ms:<a href="/type/int" >int</a> offline_idle_timeout_ms:<a href="/type/int" >int</a> online_cloud_timeout_ms:<a href="/type/int" >int</a> notify_cloud_delay_ms:<a href="/type/int" >int</a> notify_default_delay_ms:<a href="/type/int" >int</a> push_chat_period_ms:<a href="/type/int" >int</a> push_chat_limit:<a href="/type/int" >int</a> saved_gifs_limit:<a href="/type/int" >int</a> edit_time_limit:<a href="/type/int" >int</a> revoke_time_limit:<a href="/type/int" >int</a> revoke_pm_time_limit:<a href="/type/int" >int</a> rating_e_decay:<a href="/type/int" >int</a> stickers_recent_limit:<a href="/type/int" >int</a> stickers_faved_limit:<a href="/type/int" >int</a> channels_read_media_period:<a href="/type/int" >int</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> pinned_dialogs_count_max:<a href="/type/int" >int</a> pinned_infolder_count_max:<a href="/type/int" >int</a> call_receive_timeout_ms:<a href="/type/int" >int</a> call_ring_timeout_ms:<a href="/type/int" >int</a> call_connect_timeout_ms:<a href="/type/int" >int</a> call_packet_timeout_ms:<a href="/type/int" >int</a> me_url_prefix:<a href="/type/string" >string</a> autoupdate_url_prefix:flags.7?<a href="/type/string" >string</a> gif_search_username:flags.9?<a href="/type/string" >string</a> venue_search_username:flags.10?<a href="/type/string" >string</a> img_search_username:flags.11?<a href="/type/string" >string</a> static_maps_provider:flags.12?<a href="/type/string" >string</a> caption_length_max:<a href="/type/int" >int</a> message_length_max:<a href="/type/int" >int</a> webfile_dc_id:<a href="/type/int" >int</a> suggested_lang_code:flags.2?<a href="/type/string" >string</a> lang_pack_version:flags.2?<a href="/type/int" >int</a> base_lang_pack_version:flags.2?<a href="/type/int" >int</a> = <a href="/type/Config" >Config</a>; + +<a href="/constructor/nearestDc" >nearestDc</a>#8e1a1775 country:<a href="/type/string" >string</a> this_dc:<a href="/type/int" >int</a> nearest_dc:<a href="/type/int" >int</a> = <a href="/type/NearestDc" >NearestDc</a>; + +<a href="/constructor/help.appUpdate" >help.appUpdate</a>#ccbbce30 flags:<a href="/type/%23" >#</a> can_not_skip:flags.0?true id:<a href="/type/int" >int</a> version:<a href="/type/string" >string</a> text:<a href="/type/string" >string</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> document:flags.1?<a href="/type/Document" >Document</a> url:flags.2?<a href="/type/string" >string</a> sticker:flags.3?<a href="/type/Document" >Document</a> = <a href="/type/help.AppUpdate" >help.AppUpdate</a>; +<a href="/constructor/help.noAppUpdate" >help.noAppUpdate</a>#c45a6536 = <a href="/type/help.AppUpdate" >help.AppUpdate</a>; + +<a href="/constructor/help.inviteText" >help.inviteText</a>#18cb9f78 message:<a href="/type/string" >string</a> = <a href="/type/help.InviteText" >help.InviteText</a>; + +<a href="/constructor/encryptedChatEmpty" >encryptedChatEmpty</a>#ab7ec0a0 id:<a href="/type/int" >int</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/constructor/encryptedChatWaiting" >encryptedChatWaiting</a>#66b25953 id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/constructor/encryptedChatRequested" >encryptedChatRequested</a>#48f1d94c flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_a:<a href="/type/bytes" >bytes</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/constructor/encryptedChat" >encryptedChat</a>#61f0d4c7 id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_a_or_b:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/constructor/encryptedChatDiscarded" >encryptedChatDiscarded</a>#1e1c7c45 flags:<a href="/type/%23" >#</a> history_deleted:flags.0?true id:<a href="/type/int" >int</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; + +<a href="/constructor/inputEncryptedChat" >inputEncryptedChat</a>#f141b5e1 chat_id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputEncryptedChat" >InputEncryptedChat</a>; + +<a href="/constructor/encryptedFileEmpty" >encryptedFileEmpty</a>#c21f497e = <a href="/type/EncryptedFile" >EncryptedFile</a>; +<a href="/constructor/encryptedFile" >encryptedFile</a>#4a70994c id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> size:<a href="/type/int" >int</a> dc_id:<a href="/type/int" >int</a> key_fingerprint:<a href="/type/int" >int</a> = <a href="/type/EncryptedFile" >EncryptedFile</a>; + +<a href="/constructor/inputEncryptedFileEmpty" >inputEncryptedFileEmpty</a>#1837c364 = <a href="/type/InputEncryptedFile" >InputEncryptedFile</a>; +<a href="/constructor/inputEncryptedFileUploaded" >inputEncryptedFileUploaded</a>#64bd0306 id:<a href="/type/long" >long</a> parts:<a href="/type/int" >int</a> md5_checksum:<a href="/type/string" >string</a> key_fingerprint:<a href="/type/int" >int</a> = <a href="/type/InputEncryptedFile" >InputEncryptedFile</a>; +<a href="/constructor/inputEncryptedFile" >inputEncryptedFile</a>#5a17b5e5 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputEncryptedFile" >InputEncryptedFile</a>; +<a href="/constructor/inputEncryptedFileBigUploaded" >inputEncryptedFileBigUploaded</a>#2dc173c8 id:<a href="/type/long" >long</a> parts:<a href="/type/int" >int</a> key_fingerprint:<a href="/type/int" >int</a> = <a href="/type/InputEncryptedFile" >InputEncryptedFile</a>; + +<a href="/constructor/encryptedMessage" >encryptedMessage</a>#ed18c118 random_id:<a href="/type/long" >long</a> chat_id:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> file:<a href="/type/EncryptedFile" >EncryptedFile</a> = <a href="/type/EncryptedMessage" >EncryptedMessage</a>; +<a href="/constructor/encryptedMessageService" >encryptedMessageService</a>#23734b06 random_id:<a href="/type/long" >long</a> chat_id:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/EncryptedMessage" >EncryptedMessage</a>; + +<a href="/constructor/messages.dhConfigNotModified" >messages.dhConfigNotModified</a>#c0e24635 random:<a href="/type/bytes" >bytes</a> = <a href="/type/messages.DhConfig" >messages.DhConfig</a>; +<a href="/constructor/messages.dhConfig" >messages.dhConfig</a>#2c221edd g:<a href="/type/int" >int</a> p:<a href="/type/bytes" >bytes</a> version:<a href="/type/int" >int</a> random:<a href="/type/bytes" >bytes</a> = <a href="/type/messages.DhConfig" >messages.DhConfig</a>; + +<a href="/constructor/messages.sentEncryptedMessage" >messages.sentEncryptedMessage</a>#560f8935 date:<a href="/type/int" >int</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>; +<a href="/constructor/messages.sentEncryptedFile" >messages.sentEncryptedFile</a>#9493ff32 date:<a href="/type/int" >int</a> file:<a href="/type/EncryptedFile" >EncryptedFile</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>; + +<a href="/constructor/inputDocumentEmpty" >inputDocumentEmpty</a>#72f0eaae = <a href="/type/InputDocument" >InputDocument</a>; +<a href="/constructor/inputDocument" >inputDocument</a>#1abfb575 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> = <a href="/type/InputDocument" >InputDocument</a>; + +<a href="/constructor/documentEmpty" >documentEmpty</a>#36f8c871 id:<a href="/type/long" >long</a> = <a href="/type/Document" >Document</a>; +<a href="/constructor/document" >document</a>#1e87342b flags:<a href="/type/%23" >#</a> id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> date:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> size:<a href="/type/int" >int</a> thumbs:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/PhotoSize" >PhotoSize</a>> video_thumbs:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/VideoSize" >VideoSize</a>> dc_id:<a href="/type/int" >int</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> = <a href="/type/Document" >Document</a>; + +<a href="/constructor/help.support" >help.support</a>#17c6b5f6 phone_number:<a href="/type/string" >string</a> user:<a href="/type/User" >User</a> = <a href="/type/help.Support" >help.Support</a>; + +<a href="/constructor/notifyPeer" >notifyPeer</a>#9fd40bd8 peer:<a href="/type/Peer" >Peer</a> = <a href="/type/NotifyPeer" >NotifyPeer</a>; +<a href="/constructor/notifyUsers" >notifyUsers</a>#b4c83b4c = <a href="/type/NotifyPeer" >NotifyPeer</a>; +<a href="/constructor/notifyChats" >notifyChats</a>#c007cec3 = <a href="/type/NotifyPeer" >NotifyPeer</a>; +<a href="/constructor/notifyBroadcasts" >notifyBroadcasts</a>#d612e8ef = <a href="/type/NotifyPeer" >NotifyPeer</a>; + +<a href="/constructor/sendMessageTypingAction" >sendMessageTypingAction</a>#16bf744e = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageCancelAction" >sendMessageCancelAction</a>#fd5ec8f5 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageRecordVideoAction" >sendMessageRecordVideoAction</a>#a187d66f = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadVideoAction" >sendMessageUploadVideoAction</a>#e9763aec progress:<a href="/type/int" >int</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageRecordAudioAction" >sendMessageRecordAudioAction</a>#d52f73f7 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadAudioAction" >sendMessageUploadAudioAction</a>#f351d7ab progress:<a href="/type/int" >int</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadPhotoAction" >sendMessageUploadPhotoAction</a>#d1d34a26 progress:<a href="/type/int" >int</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadDocumentAction" >sendMessageUploadDocumentAction</a>#aa0cd9e4 progress:<a href="/type/int" >int</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageGeoLocationAction" >sendMessageGeoLocationAction</a>#176f8ba1 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageChooseContactAction" >sendMessageChooseContactAction</a>#628cbc6f = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageGamePlayAction" >sendMessageGamePlayAction</a>#dd6a8f48 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageRecordRoundAction" >sendMessageRecordRoundAction</a>#88f27fbc = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadRoundAction" >sendMessageUploadRoundAction</a>#243e1c66 progress:<a href="/type/int" >int</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/speakingInGroupCallAction" >speakingInGroupCallAction</a>#d92c2285 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageHistoryImportAction" >sendMessageHistoryImportAction</a>#dbda9246 progress:<a href="/type/int" >int</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageChooseStickerAction" >sendMessageChooseStickerAction</a>#b05ac6b1 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageEmojiInteraction" >sendMessageEmojiInteraction</a>#25972bcb emoticon:<a href="/type/string" >string</a> msg_id:<a href="/type/int" >int</a> interaction:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageEmojiInteractionSeen" >sendMessageEmojiInteractionSeen</a>#b665902e emoticon:<a href="/type/string" >string</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>; + +<a href="/constructor/contacts.found" >contacts.found</a>#b3134d9d my_results:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Peer" >Peer</a>> results:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Peer" >Peer</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.Found" >contacts.Found</a>; + +<a href="/constructor/inputPrivacyKeyStatusTimestamp" >inputPrivacyKeyStatusTimestamp</a>#4f96cb18 = <a href="/type/InputPrivacyKey" >InputPrivacyKey</a>; +<a href="/constructor/inputPrivacyKeyChatInvite" >inputPrivacyKeyChatInvite</a>#bdfb0426 = <a href="/type/InputPrivacyKey" >InputPrivacyKey</a>; +<a href="/constructor/inputPrivacyKeyPhoneCall" >inputPrivacyKeyPhoneCall</a>#fabadc5f = <a href="/type/InputPrivacyKey" >InputPrivacyKey</a>; +<a href="/constructor/inputPrivacyKeyPhoneP2P" >inputPrivacyKeyPhoneP2P</a>#db9e70d2 = <a href="/type/InputPrivacyKey" >InputPrivacyKey</a>; +<a href="/constructor/inputPrivacyKeyForwards" >inputPrivacyKeyForwards</a>#a4dd4c08 = <a href="/type/InputPrivacyKey" >InputPrivacyKey</a>; +<a href="/constructor/inputPrivacyKeyProfilePhoto" >inputPrivacyKeyProfilePhoto</a>#5719bacc = <a href="/type/InputPrivacyKey" >InputPrivacyKey</a>; +<a href="/constructor/inputPrivacyKeyPhoneNumber" >inputPrivacyKeyPhoneNumber</a>#352dafa = <a href="/type/InputPrivacyKey" >InputPrivacyKey</a>; +<a href="/constructor/inputPrivacyKeyAddedByPhone" >inputPrivacyKeyAddedByPhone</a>#d1219bdd = <a href="/type/InputPrivacyKey" >InputPrivacyKey</a>; + +<a href="/constructor/privacyKeyStatusTimestamp" >privacyKeyStatusTimestamp</a>#bc2eab30 = <a href="/type/PrivacyKey" >PrivacyKey</a>; +<a href="/constructor/privacyKeyChatInvite" >privacyKeyChatInvite</a>#500e6dfa = <a href="/type/PrivacyKey" >PrivacyKey</a>; +<a href="/constructor/privacyKeyPhoneCall" >privacyKeyPhoneCall</a>#3d662b7b = <a href="/type/PrivacyKey" >PrivacyKey</a>; +<a href="/constructor/privacyKeyPhoneP2P" >privacyKeyPhoneP2P</a>#39491cc8 = <a href="/type/PrivacyKey" >PrivacyKey</a>; +<a href="/constructor/privacyKeyForwards" >privacyKeyForwards</a>#69ec56a3 = <a href="/type/PrivacyKey" >PrivacyKey</a>; +<a href="/constructor/privacyKeyProfilePhoto" >privacyKeyProfilePhoto</a>#96151fed = <a href="/type/PrivacyKey" >PrivacyKey</a>; +<a href="/constructor/privacyKeyPhoneNumber" >privacyKeyPhoneNumber</a>#d19ae46d = <a href="/type/PrivacyKey" >PrivacyKey</a>; +<a href="/constructor/privacyKeyAddedByPhone" >privacyKeyAddedByPhone</a>#42ffd42b = <a href="/type/PrivacyKey" >PrivacyKey</a>; + +<a href="/constructor/inputPrivacyValueAllowContacts" >inputPrivacyValueAllowContacts</a>#d09e07b = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>; +<a href="/constructor/inputPrivacyValueAllowAll" >inputPrivacyValueAllowAll</a>#184b35ce = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>; +<a href="/constructor/inputPrivacyValueAllowUsers" >inputPrivacyValueAllowUsers</a>#131cc67f users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputUser" >InputUser</a>> = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>; +<a href="/constructor/inputPrivacyValueDisallowContacts" >inputPrivacyValueDisallowContacts</a>#ba52007 = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>; +<a href="/constructor/inputPrivacyValueDisallowAll" >inputPrivacyValueDisallowAll</a>#d66b66c9 = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>; +<a href="/constructor/inputPrivacyValueDisallowUsers" >inputPrivacyValueDisallowUsers</a>#90110467 users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputUser" >InputUser</a>> = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>; +<a href="/constructor/inputPrivacyValueAllowChatParticipants" >inputPrivacyValueAllowChatParticipants</a>#840649cf chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>; +<a href="/constructor/inputPrivacyValueDisallowChatParticipants" >inputPrivacyValueDisallowChatParticipants</a>#e94f0f86 chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>; + +<a href="/constructor/privacyValueAllowContacts" >privacyValueAllowContacts</a>#fffe1bac = <a href="/type/PrivacyRule" >PrivacyRule</a>; +<a href="/constructor/privacyValueAllowAll" >privacyValueAllowAll</a>#65427b82 = <a href="/type/PrivacyRule" >PrivacyRule</a>; +<a href="/constructor/privacyValueAllowUsers" >privacyValueAllowUsers</a>#b8905fb2 users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/PrivacyRule" >PrivacyRule</a>; +<a href="/constructor/privacyValueDisallowContacts" >privacyValueDisallowContacts</a>#f888fa1a = <a href="/type/PrivacyRule" >PrivacyRule</a>; +<a href="/constructor/privacyValueDisallowAll" >privacyValueDisallowAll</a>#8b73e763 = <a href="/type/PrivacyRule" >PrivacyRule</a>; +<a href="/constructor/privacyValueDisallowUsers" >privacyValueDisallowUsers</a>#e4621141 users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/PrivacyRule" >PrivacyRule</a>; +<a href="/constructor/privacyValueAllowChatParticipants" >privacyValueAllowChatParticipants</a>#6b134e8e chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/PrivacyRule" >PrivacyRule</a>; +<a href="/constructor/privacyValueDisallowChatParticipants" >privacyValueDisallowChatParticipants</a>#41c87565 chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/PrivacyRule" >PrivacyRule</a>; + +<a href="/constructor/account.privacyRules" >account.privacyRules</a>#50a04e45 rules:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PrivacyRule" >PrivacyRule</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/account.PrivacyRules" >account.PrivacyRules</a>; + +<a href="/constructor/accountDaysTTL" >accountDaysTTL</a>#b8d0afdf days:<a href="/type/int" >int</a> = <a href="/type/AccountDaysTTL" >AccountDaysTTL</a>; + +<a href="/constructor/documentAttributeImageSize" >documentAttributeImageSize</a>#6c37c15c w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeAnimated" >documentAttributeAnimated</a>#11b58939 = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeSticker" >documentAttributeSticker</a>#6319d612 flags:<a href="/type/%23" >#</a> mask:flags.1?true alt:<a href="/type/string" >string</a> stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> mask_coords:flags.0?<a href="/type/MaskCoords" >MaskCoords</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeVideo" >documentAttributeVideo</a>#ef02ce6 flags:<a href="/type/%23" >#</a> round_message:flags.0?true supports_streaming:flags.1?true duration:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeAudio" >documentAttributeAudio</a>#9852f9c6 flags:<a href="/type/%23" >#</a> voice:flags.10?true duration:<a href="/type/int" >int</a> title:flags.0?<a href="/type/string" >string</a> performer:flags.1?<a href="/type/string" >string</a> waveform:flags.2?<a href="/type/bytes" >bytes</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeFilename" >documentAttributeFilename</a>#15590068 file_name:<a href="/type/string" >string</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeHasStickers" >documentAttributeHasStickers</a>#9801d2f7 = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; + +<a href="/constructor/messages.stickersNotModified" >messages.stickersNotModified</a>#f1749a22 = <a href="/type/messages.Stickers" >messages.Stickers</a>; +<a href="/constructor/messages.stickers" >messages.stickers</a>#30a6ec7e hash:<a href="/type/long" >long</a> stickers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/messages.Stickers" >messages.Stickers</a>; + +<a href="/constructor/stickerPack" >stickerPack</a>#12b299d4 emoticon:<a href="/type/string" >string</a> documents:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/StickerPack" >StickerPack</a>; + +<a href="/constructor/messages.allStickersNotModified" >messages.allStickersNotModified</a>#e86602c3 = <a href="/type/messages.AllStickers" >messages.AllStickers</a>; +<a href="/constructor/messages.allStickers" >messages.allStickers</a>#cdbbcebb hash:<a href="/type/long" >long</a> sets:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerSet" >StickerSet</a>> = <a href="/type/messages.AllStickers" >messages.AllStickers</a>; + +<a href="/constructor/messages.affectedMessages" >messages.affectedMessages</a>#84d19185 pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>; + +<a href="/constructor/webPageEmpty" >webPageEmpty</a>#eb1477e8 id:<a href="/type/long" >long</a> = <a href="/type/WebPage" >WebPage</a>; +<a href="/constructor/webPagePending" >webPagePending</a>#c586da1c id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/WebPage" >WebPage</a>; +<a href="/constructor/webPage" >webPage</a>#e89c45b2 flags:<a href="/type/%23" >#</a> id:<a href="/type/long" >long</a> url:<a href="/type/string" >string</a> display_url:<a href="/type/string" >string</a> hash:<a href="/type/int" >int</a> type:flags.0?<a href="/type/string" >string</a> site_name:flags.1?<a href="/type/string" >string</a> title:flags.2?<a href="/type/string" >string</a> description:flags.3?<a href="/type/string" >string</a> photo:flags.4?<a href="/type/Photo" >Photo</a> embed_url:flags.5?<a href="/type/string" >string</a> embed_type:flags.5?<a href="/type/string" >string</a> embed_width:flags.6?<a href="/type/int" >int</a> embed_height:flags.6?<a href="/type/int" >int</a> duration:flags.7?<a href="/type/int" >int</a> author:flags.8?<a href="/type/string" >string</a> document:flags.9?<a href="/type/Document" >Document</a> cached_page:flags.10?<a href="/type/Page" >Page</a> attributes:flags.12?<a href="/type/Vector%20t" >Vector</a><<a href="/type/WebPageAttribute" >WebPageAttribute</a>> = <a href="/type/WebPage" >WebPage</a>; +<a href="/constructor/webPageNotModified" >webPageNotModified</a>#7311ca11 flags:<a href="/type/%23" >#</a> cached_page_views:flags.0?<a href="/type/int" >int</a> = <a href="/type/WebPage" >WebPage</a>; + +<a href="/constructor/authorization" >authorization</a>#ad01d61d flags:<a href="/type/%23" >#</a> current:flags.0?true official_app:flags.1?true password_pending:flags.2?true encrypted_requests_disabled:flags.3?true call_requests_disabled:flags.4?true hash:<a href="/type/long" >long</a> device_model:<a href="/type/string" >string</a> platform:<a href="/type/string" >string</a> system_version:<a href="/type/string" >string</a> api_id:<a href="/type/int" >int</a> app_name:<a href="/type/string" >string</a> app_version:<a href="/type/string" >string</a> date_created:<a href="/type/int" >int</a> date_active:<a href="/type/int" >int</a> ip:<a href="/type/string" >string</a> country:<a href="/type/string" >string</a> region:<a href="/type/string" >string</a> = <a href="/type/Authorization" >Authorization</a>; + +<a href="/constructor/account.authorizations" >account.authorizations</a>#1250abde authorizations:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Authorization" >Authorization</a>> = <a href="/type/account.Authorizations" >account.Authorizations</a>; + +<a href="/constructor/account.password" >account.password</a>#185b184f flags:<a href="/type/%23" >#</a> has_recovery:flags.0?true has_secure_values:flags.1?true has_password:flags.2?true current_algo:flags.2?<a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</a> srp_B:flags.2?<a href="/type/bytes" >bytes</a> srp_id:flags.2?<a href="/type/long" >long</a> hint:flags.3?<a href="/type/string" >string</a> email_unconfirmed_pattern:flags.4?<a href="/type/string" >string</a> new_algo:<a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</a> new_secure_algo:<a href="/type/SecurePasswordKdfAlgo" >SecurePasswordKdfAlgo</a> secure_random:<a href="/type/bytes" >bytes</a> pending_reset_date:flags.5?<a href="/type/int" >int</a> = <a href="/type/account.Password" >account.Password</a>; + +<a href="/constructor/account.passwordSettings" >account.passwordSettings</a>#9a5c33e5 flags:<a href="/type/%23" >#</a> email:flags.0?<a href="/type/string" >string</a> secure_settings:flags.1?<a href="/type/SecureSecretSettings" >SecureSecretSettings</a> = <a href="/type/account.PasswordSettings" >account.PasswordSettings</a>; + +<a href="/constructor/account.passwordInputSettings" >account.passwordInputSettings</a>#c23727c9 flags:<a href="/type/%23" >#</a> new_algo:flags.0?<a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</a> new_password_hash:flags.0?<a href="/type/bytes" >bytes</a> hint:flags.0?<a href="/type/string" >string</a> email:flags.1?<a href="/type/string" >string</a> new_secure_settings:flags.2?<a href="/type/SecureSecretSettings" >SecureSecretSettings</a> = <a href="/type/account.PasswordInputSettings" >account.PasswordInputSettings</a>; + +<a href="/constructor/auth.passwordRecovery" >auth.passwordRecovery</a>#137948a5 email_pattern:<a href="/type/string" >string</a> = <a href="/type/auth.PasswordRecovery" >auth.PasswordRecovery</a>; + +<a href="/constructor/receivedNotifyMessage" >receivedNotifyMessage</a>#a384b779 id:<a href="/type/int" >int</a> flags:<a href="/type/int" >int</a> = <a href="/type/ReceivedNotifyMessage" >ReceivedNotifyMessage</a>; + +<a href="/constructor/chatInviteExported" >chatInviteExported</a>#b18105e8 flags:<a href="/type/%23" >#</a> revoked:flags.0?true permanent:flags.5?true link:<a href="/type/string" >string</a> admin_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> start_date:flags.4?<a href="/type/int" >int</a> expire_date:flags.1?<a href="/type/int" >int</a> usage_limit:flags.2?<a href="/type/int" >int</a> usage:flags.3?<a href="/type/int" >int</a> = <a href="/type/ExportedChatInvite" >ExportedChatInvite</a>; + +<a href="/constructor/chatInviteAlready" >chatInviteAlready</a>#5a686d7c chat:<a href="/type/Chat" >Chat</a> = <a href="/type/ChatInvite" >ChatInvite</a>; +<a href="/constructor/chatInvite" >chatInvite</a>#dfc2f58e flags:<a href="/type/%23" >#</a> channel:flags.0?true broadcast:flags.1?true public:flags.2?true megagroup:flags.3?true title:<a href="/type/string" >string</a> photo:<a href="/type/Photo" >Photo</a> participants_count:<a href="/type/int" >int</a> participants:flags.4?<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/ChatInvite" >ChatInvite</a>; +<a href="/constructor/chatInvitePeek" >chatInvitePeek</a>#61695cb0 chat:<a href="/type/Chat" >Chat</a> expires:<a href="/type/int" >int</a> = <a href="/type/ChatInvite" >ChatInvite</a>; + +<a href="/constructor/inputStickerSetEmpty" >inputStickerSetEmpty</a>#ffb62b95 = <a href="/type/InputStickerSet" >InputStickerSet</a>; +<a href="/constructor/inputStickerSetID" >inputStickerSetID</a>#9de7a269 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputStickerSet" >InputStickerSet</a>; +<a href="/constructor/inputStickerSetShortName" >inputStickerSetShortName</a>#861cc8a0 short_name:<a href="/type/string" >string</a> = <a href="/type/InputStickerSet" >InputStickerSet</a>; +<a href="/constructor/inputStickerSetAnimatedEmoji" >inputStickerSetAnimatedEmoji</a>#28703c8 = <a href="/type/InputStickerSet" >InputStickerSet</a>; +<a href="/constructor/inputStickerSetDice" >inputStickerSetDice</a>#e67f520e emoticon:<a href="/type/string" >string</a> = <a href="/type/InputStickerSet" >InputStickerSet</a>; +<a href="/constructor/inputStickerSetAnimatedEmojiAnimations" >inputStickerSetAnimatedEmojiAnimations</a>#cde3739 = <a href="/type/InputStickerSet" >InputStickerSet</a>; + +<a href="/constructor/stickerSet" >stickerSet</a>#d7df217a flags:<a href="/type/%23" >#</a> archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true videos:flags.6?true installed_date:flags.0?<a href="/type/int" >int</a> id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> short_name:<a href="/type/string" >string</a> thumbs:flags.4?<a href="/type/Vector%20t" >Vector</a><<a href="/type/PhotoSize" >PhotoSize</a>> thumb_dc_id:flags.4?<a href="/type/int" >int</a> thumb_version:flags.4?<a href="/type/int" >int</a> count:<a href="/type/int" >int</a> hash:<a href="/type/int" >int</a> = <a href="/type/StickerSet" >StickerSet</a>; + +<a href="/constructor/messages.stickerSet" >messages.stickerSet</a>#b60a24a6 set:<a href="/type/StickerSet" >StickerSet</a> packs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerPack" >StickerPack</a>> documents:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>; + +<a href="/constructor/botCommand" >botCommand</a>#c27ac8c7 command:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> = <a href="/type/BotCommand" >BotCommand</a>; + +<a href="/constructor/botInfo" >botInfo</a>#1b74b335 user_id:<a href="/type/long" >long</a> description:<a href="/type/string" >string</a> commands:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotCommand" >BotCommand</a>> = <a href="/type/BotInfo" >BotInfo</a>; + +<a href="/constructor/keyboardButton" >keyboardButton</a>#a2fa4880 text:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/keyboardButtonUrl" >keyboardButtonUrl</a>#258aff05 text:<a href="/type/string" >string</a> url:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/keyboardButtonCallback" >keyboardButtonCallback</a>#35bbdb6b flags:<a href="/type/%23" >#</a> requires_password:flags.0?true text:<a href="/type/string" >string</a> data:<a href="/type/bytes" >bytes</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/keyboardButtonRequestPhone" >keyboardButtonRequestPhone</a>#b16a6c29 text:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/keyboardButtonRequestGeoLocation" >keyboardButtonRequestGeoLocation</a>#fc796b3f text:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/keyboardButtonSwitchInline" >keyboardButtonSwitchInline</a>#568a748 flags:<a href="/type/%23" >#</a> same_peer:flags.0?true text:<a href="/type/string" >string</a> query:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/keyboardButtonGame" >keyboardButtonGame</a>#50f41ccf text:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/keyboardButtonBuy" >keyboardButtonBuy</a>#afd93fbb text:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/keyboardButtonUrlAuth" >keyboardButtonUrlAuth</a>#10b78d29 flags:<a href="/type/%23" >#</a> text:<a href="/type/string" >string</a> fwd_text:flags.0?<a href="/type/string" >string</a> url:<a href="/type/string" >string</a> button_id:<a href="/type/int" >int</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/inputKeyboardButtonUrlAuth" >inputKeyboardButtonUrlAuth</a>#d02e7fd4 flags:<a href="/type/%23" >#</a> request_write_access:flags.0?true text:<a href="/type/string" >string</a> fwd_text:flags.1?<a href="/type/string" >string</a> url:<a href="/type/string" >string</a> bot:<a href="/type/InputUser" >InputUser</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; +<a href="/constructor/keyboardButtonRequestPoll" >keyboardButtonRequestPoll</a>#bbc7515d flags:<a href="/type/%23" >#</a> quiz:flags.0?<a href="/type/Bool" >Bool</a> text:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</a>; + +<a href="/constructor/keyboardButtonRow" >keyboardButtonRow</a>#77608b83 buttons:<a href="/type/Vector%20t" >Vector</a><<a href="/type/KeyboardButton" >KeyboardButton</a>> = <a href="/type/KeyboardButtonRow" >KeyboardButtonRow</a>; + +<a href="/constructor/replyKeyboardHide" >replyKeyboardHide</a>#a03e5b85 flags:<a href="/type/%23" >#</a> selective:flags.2?true = <a href="/type/ReplyMarkup" >ReplyMarkup</a>; +<a href="/constructor/replyKeyboardForceReply" >replyKeyboardForceReply</a>#86b40b08 flags:<a href="/type/%23" >#</a> single_use:flags.1?true selective:flags.2?true placeholder:flags.3?<a href="/type/string" >string</a> = <a href="/type/ReplyMarkup" >ReplyMarkup</a>; +<a href="/constructor/replyKeyboardMarkup" >replyKeyboardMarkup</a>#85dd99d1 flags:<a href="/type/%23" >#</a> resize:flags.0?true single_use:flags.1?true selective:flags.2?true rows:<a href="/type/Vector%20t" >Vector</a><<a href="/type/KeyboardButtonRow" >KeyboardButtonRow</a>> placeholder:flags.3?<a href="/type/string" >string</a> = <a href="/type/ReplyMarkup" >ReplyMarkup</a>; +<a href="/constructor/replyInlineMarkup" >replyInlineMarkup</a>#48a30254 rows:<a href="/type/Vector%20t" >Vector</a><<a href="/type/KeyboardButtonRow" >KeyboardButtonRow</a>> = <a href="/type/ReplyMarkup" >ReplyMarkup</a>; + +<a href="/constructor/messageEntityUnknown" >messageEntityUnknown</a>#bb92ba95 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityMention" >messageEntityMention</a>#fa04579d offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityHashtag" >messageEntityHashtag</a>#6f635b0d offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityBotCommand" >messageEntityBotCommand</a>#6cef8ac7 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityUrl" >messageEntityUrl</a>#6ed02538 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityEmail" >messageEntityEmail</a>#64e475c2 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityBold" >messageEntityBold</a>#bd610bc9 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityItalic" >messageEntityItalic</a>#826f8b60 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityCode" >messageEntityCode</a>#28a20571 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityPre" >messageEntityPre</a>#73924be0 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> language:<a href="/type/string" >string</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityTextUrl" >messageEntityTextUrl</a>#76a6d327 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> url:<a href="/type/string" >string</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityMentionName" >messageEntityMentionName</a>#dc7b1140 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/inputMessageEntityMentionName" >inputMessageEntityMentionName</a>#208e68c9 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityPhone" >messageEntityPhone</a>#9b69e34b offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityCashtag" >messageEntityCashtag</a>#4c4e743f offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityUnderline" >messageEntityUnderline</a>#9c4e7e8b offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityStrike" >messageEntityStrike</a>#bf0693d4 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityBlockquote" >messageEntityBlockquote</a>#20df5d0 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityBankCard" >messageEntityBankCard</a>#761e6af4 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; + +<a href="/constructor/inputChannelEmpty" >inputChannelEmpty</a>#ee8c1e86 = <a href="/type/InputChannel" >InputChannel</a>; +<a href="/constructor/inputChannel" >inputChannel</a>#f35aec28 channel_id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputChannel" >InputChannel</a>; +<a href="/constructor/inputChannelFromMessage" >inputChannelFromMessage</a>#5b934f9d peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> channel_id:<a href="/type/long" >long</a> = <a href="/type/InputChannel" >InputChannel</a>; + +<a href="/constructor/contacts.resolvedPeer" >contacts.resolvedPeer</a>#7f077ad9 peer:<a href="/type/Peer" >Peer</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.ResolvedPeer" >contacts.ResolvedPeer</a>; + +<a href="/constructor/messageRange" >messageRange</a>#ae30253 min_id:<a href="/type/int" >int</a> max_id:<a href="/type/int" >int</a> = <a href="/type/MessageRange" >MessageRange</a>; + +<a href="/constructor/updates.channelDifferenceEmpty" >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>; +<a href="/constructor/updates.channelDifferenceTooLong" >updates.channelDifferenceTooLong</a>#a4bcc6fe flags:<a href="/type/%23" >#</a> final:flags.0?true timeout:flags.1?<a href="/type/int" >int</a> dialog:<a href="/type/Dialog" >Dialog</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/updates.ChannelDifference" >updates.ChannelDifference</a>; +<a href="/constructor/updates.channelDifference" >updates.channelDifference</a>#2064674e 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> new_messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> other_updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/updates.ChannelDifference" >updates.ChannelDifference</a>; + +<a href="/constructor/channelMessagesFilterEmpty" >channelMessagesFilterEmpty</a>#94d42ee7 = <a href="/type/ChannelMessagesFilter" >ChannelMessagesFilter</a>; +<a href="/constructor/channelMessagesFilter" >channelMessagesFilter</a>#cd77d957 flags:<a href="/type/%23" >#</a> exclude_new_messages:flags.1?true ranges:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageRange" >MessageRange</a>> = <a href="/type/ChannelMessagesFilter" >ChannelMessagesFilter</a>; + +<a href="/constructor/channelParticipant" >channelParticipant</a>#c00c07c0 user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/ChannelParticipant" >ChannelParticipant</a>; +<a href="/constructor/channelParticipantSelf" >channelParticipantSelf</a>#28a8bc67 user_id:<a href="/type/long" >long</a> inviter_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/ChannelParticipant" >ChannelParticipant</a>; +<a href="/constructor/channelParticipantCreator" >channelParticipantCreator</a>#2fe601d3 flags:<a href="/type/%23" >#</a> user_id:<a href="/type/long" >long</a> admin_rights:<a href="/type/ChatAdminRights" >ChatAdminRights</a> rank:flags.0?<a href="/type/string" >string</a> = <a href="/type/ChannelParticipant" >ChannelParticipant</a>; +<a href="/constructor/channelParticipantAdmin" >channelParticipantAdmin</a>#34c3bb53 flags:<a href="/type/%23" >#</a> can_edit:flags.0?true self:flags.1?true user_id:<a href="/type/long" >long</a> inviter_id:flags.1?<a href="/type/long" >long</a> promoted_by:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_rights:<a href="/type/ChatAdminRights" >ChatAdminRights</a> rank:flags.2?<a href="/type/string" >string</a> = <a href="/type/ChannelParticipant" >ChannelParticipant</a>; +<a href="/constructor/channelParticipantBanned" >channelParticipantBanned</a>#6df8014e flags:<a href="/type/%23" >#</a> left:flags.0?true peer:<a href="/type/Peer" >Peer</a> kicked_by:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> = <a href="/type/ChannelParticipant" >ChannelParticipant</a>; +<a href="/constructor/channelParticipantLeft" >channelParticipantLeft</a>#1b03f006 peer:<a href="/type/Peer" >Peer</a> = <a href="/type/ChannelParticipant" >ChannelParticipant</a>; + +<a href="/constructor/channelParticipantsRecent" >channelParticipantsRecent</a>#de3f3c79 = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a>; +<a href="/constructor/channelParticipantsAdmins" >channelParticipantsAdmins</a>#b4608969 = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a>; +<a href="/constructor/channelParticipantsKicked" >channelParticipantsKicked</a>#a3b54985 q:<a href="/type/string" >string</a> = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a>; +<a href="/constructor/channelParticipantsBots" >channelParticipantsBots</a>#b0d1865b = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a>; +<a href="/constructor/channelParticipantsBanned" >channelParticipantsBanned</a>#1427a5e1 q:<a href="/type/string" >string</a> = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a>; +<a href="/constructor/channelParticipantsSearch" >channelParticipantsSearch</a>#656ac4b q:<a href="/type/string" >string</a> = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a>; +<a href="/constructor/channelParticipantsContacts" >channelParticipantsContacts</a>#bb6ae88d q:<a href="/type/string" >string</a> = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a>; +<a href="/constructor/channelParticipantsMentions" >channelParticipantsMentions</a>#e04b5ceb flags:<a href="/type/%23" >#</a> q:flags.0?<a href="/type/string" >string</a> top_msg_id:flags.1?<a href="/type/int" >int</a> = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a>; + +<a href="/constructor/channels.channelParticipants" >channels.channelParticipants</a>#9ab0feaf count:<a href="/type/int" >int</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChannelParticipant" >ChannelParticipant</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/channels.ChannelParticipants" >channels.ChannelParticipants</a>; +<a href="/constructor/channels.channelParticipantsNotModified" >channels.channelParticipantsNotModified</a>#f0173fe9 = <a href="/type/channels.ChannelParticipants" >channels.ChannelParticipants</a>; + +<a href="/constructor/channels.channelParticipant" >channels.channelParticipant</a>#dfb80317 participant:<a href="/type/ChannelParticipant" >ChannelParticipant</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/channels.ChannelParticipant" >channels.ChannelParticipant</a>; + +<a href="/constructor/help.termsOfService" >help.termsOfService</a>#780a0310 flags:<a href="/type/%23" >#</a> popup:flags.0?true id:<a href="/type/DataJSON" >DataJSON</a> text:<a href="/type/string" >string</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> min_age_confirm:flags.1?<a href="/type/int" >int</a> = <a href="/type/help.TermsOfService" >help.TermsOfService</a>; + +<a href="/constructor/messages.savedGifsNotModified" >messages.savedGifsNotModified</a>#e8025ca2 = <a href="/type/messages.SavedGifs" >messages.SavedGifs</a>; +<a href="/constructor/messages.savedGifs" >messages.savedGifs</a>#84a02a0d hash:<a href="/type/long" >long</a> gifs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/messages.SavedGifs" >messages.SavedGifs</a>; + +<a href="/constructor/inputBotInlineMessageMediaAuto" >inputBotInlineMessageMediaAuto</a>#3380c786 flags:<a href="/type/%23" >#</a> message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a>; +<a href="/constructor/inputBotInlineMessageText" >inputBotInlineMessageText</a>#3dcd7a87 flags:<a href="/type/%23" >#</a> no_webpage:flags.0?true message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a>; +<a href="/constructor/inputBotInlineMessageMediaGeo" >inputBotInlineMessageMediaGeo</a>#96929a85 flags:<a href="/type/%23" >#</a> geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> heading:flags.0?<a href="/type/int" >int</a> period:flags.1?<a href="/type/int" >int</a> proximity_notification_radius:flags.3?<a href="/type/int" >int</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a>; +<a href="/constructor/inputBotInlineMessageMediaVenue" >inputBotInlineMessageMediaVenue</a>#417bbf11 flags:<a href="/type/%23" >#</a> geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> title:<a href="/type/string" >string</a> address:<a href="/type/string" >string</a> provider:<a href="/type/string" >string</a> venue_id:<a href="/type/string" >string</a> venue_type:<a href="/type/string" >string</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a>; +<a href="/constructor/inputBotInlineMessageMediaContact" >inputBotInlineMessageMediaContact</a>#a6edbffd flags:<a href="/type/%23" >#</a> phone_number:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> vcard:<a href="/type/string" >string</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a>; +<a href="/constructor/inputBotInlineMessageGame" >inputBotInlineMessageGame</a>#4b425864 flags:<a href="/type/%23" >#</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a>; +<a href="/constructor/inputBotInlineMessageMediaInvoice" >inputBotInlineMessageMediaInvoice</a>#d7e78225 flags:<a href="/type/%23" >#</a> title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.0?<a href="/type/InputWebDocument" >InputWebDocument</a> invoice:<a href="/type/Invoice" >Invoice</a> payload:<a href="/type/bytes" >bytes</a> provider:<a href="/type/string" >string</a> provider_data:<a href="/type/DataJSON" >DataJSON</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a>; + +<a href="/constructor/inputBotInlineResult" >inputBotInlineResult</a>#88bf9319 flags:<a href="/type/%23" >#</a> id:<a href="/type/string" >string</a> type:<a href="/type/string" >string</a> title:flags.1?<a href="/type/string" >string</a> description:flags.2?<a href="/type/string" >string</a> url:flags.3?<a href="/type/string" >string</a> thumb:flags.4?<a href="/type/InputWebDocument" >InputWebDocument</a> content:flags.5?<a href="/type/InputWebDocument" >InputWebDocument</a> send_message:<a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a> = <a href="/type/InputBotInlineResult" >InputBotInlineResult</a>; +<a href="/constructor/inputBotInlineResultPhoto" >inputBotInlineResultPhoto</a>#a8d864a7 id:<a href="/type/string" >string</a> type:<a href="/type/string" >string</a> photo:<a href="/type/InputPhoto" >InputPhoto</a> send_message:<a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a> = <a href="/type/InputBotInlineResult" >InputBotInlineResult</a>; +<a href="/constructor/inputBotInlineResultDocument" >inputBotInlineResultDocument</a>#fff8fdc4 flags:<a href="/type/%23" >#</a> id:<a href="/type/string" >string</a> type:<a href="/type/string" >string</a> title:flags.1?<a href="/type/string" >string</a> description:flags.2?<a href="/type/string" >string</a> document:<a href="/type/InputDocument" >InputDocument</a> send_message:<a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a> = <a href="/type/InputBotInlineResult" >InputBotInlineResult</a>; +<a href="/constructor/inputBotInlineResultGame" >inputBotInlineResultGame</a>#4fa417f2 id:<a href="/type/string" >string</a> short_name:<a href="/type/string" >string</a> send_message:<a href="/type/InputBotInlineMessage" >InputBotInlineMessage</a> = <a href="/type/InputBotInlineResult" >InputBotInlineResult</a>; + +<a href="/constructor/botInlineMessageMediaAuto" >botInlineMessageMediaAuto</a>#764cf810 flags:<a href="/type/%23" >#</a> message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageText" >botInlineMessageText</a>#8c7f65e2 flags:<a href="/type/%23" >#</a> no_webpage:flags.0?true message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageMediaGeo" >botInlineMessageMediaGeo</a>#51846fd flags:<a href="/type/%23" >#</a> geo:<a href="/type/GeoPoint" >GeoPoint</a> heading:flags.0?<a href="/type/int" >int</a> period:flags.1?<a href="/type/int" >int</a> proximity_notification_radius:flags.3?<a href="/type/int" >int</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageMediaVenue" >botInlineMessageMediaVenue</a>#8a86659c flags:<a href="/type/%23" >#</a> geo:<a href="/type/GeoPoint" >GeoPoint</a> title:<a href="/type/string" >string</a> address:<a href="/type/string" >string</a> provider:<a href="/type/string" >string</a> venue_id:<a href="/type/string" >string</a> venue_type:<a href="/type/string" >string</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageMediaContact" >botInlineMessageMediaContact</a>#18d1cdc2 flags:<a href="/type/%23" >#</a> phone_number:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> vcard:<a href="/type/string" >string</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageMediaInvoice" >botInlineMessageMediaInvoice</a>#354a9b09 flags:<a href="/type/%23" >#</a> shipping_address_requested:flags.1?true test:flags.3?true title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.0?<a href="/type/WebDocument" >WebDocument</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" >BotInlineMessage</a>; + +<a href="/constructor/botInlineResult" >botInlineResult</a>#11965f3a flags:<a href="/type/%23" >#</a> id:<a href="/type/string" >string</a> type:<a href="/type/string" >string</a> title:flags.1?<a href="/type/string" >string</a> description:flags.2?<a href="/type/string" >string</a> url:flags.3?<a href="/type/string" >string</a> thumb:flags.4?<a href="/type/WebDocument" >WebDocument</a> content:flags.5?<a href="/type/WebDocument" >WebDocument</a> send_message:<a href="/type/BotInlineMessage" >BotInlineMessage</a> = <a href="/type/BotInlineResult" >BotInlineResult</a>; +<a href="/constructor/botInlineMediaResult" >botInlineMediaResult</a>#17db940b flags:<a href="/type/%23" >#</a> id:<a href="/type/string" >string</a> type:<a href="/type/string" >string</a> photo:flags.0?<a href="/type/Photo" >Photo</a> document:flags.1?<a href="/type/Document" >Document</a> title:flags.2?<a href="/type/string" >string</a> description:flags.3?<a href="/type/string" >string</a> send_message:<a href="/type/BotInlineMessage" >BotInlineMessage</a> = <a href="/type/BotInlineResult" >BotInlineResult</a>; + +<a href="/constructor/messages.botResults" >messages.botResults</a>#947ca848 flags:<a href="/type/%23" >#</a> gallery:flags.0?true query_id:<a href="/type/long" >long</a> next_offset:flags.1?<a href="/type/string" >string</a> switch_pm:flags.2?<a href="/type/InlineBotSwitchPM" >InlineBotSwitchPM</a> results:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotInlineResult" >BotInlineResult</a>> cache_time:<a href="/type/int" >int</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.BotResults" >messages.BotResults</a>; + +<a href="/constructor/exportedMessageLink" >exportedMessageLink</a>#5dab1af4 link:<a href="/type/string" >string</a> html:<a href="/type/string" >string</a> = <a href="/type/ExportedMessageLink" >ExportedMessageLink</a>; + +<a href="/constructor/messageFwdHeader" >messageFwdHeader</a>#5f777dce flags:<a href="/type/%23" >#</a> imported:flags.7?true 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/auth.codeTypeSms" >auth.codeTypeSms</a>#72a3158c = <a href="/type/auth.CodeType" >auth.CodeType</a>; +<a href="/constructor/auth.codeTypeCall" >auth.codeTypeCall</a>#741cd3e3 = <a href="/type/auth.CodeType" >auth.CodeType</a>; +<a href="/constructor/auth.codeTypeFlashCall" >auth.codeTypeFlashCall</a>#226ccefb = <a href="/type/auth.CodeType" >auth.CodeType</a>; + +<a href="/constructor/auth.sentCodeTypeApp" >auth.sentCodeTypeApp</a>#3dbb5986 length:<a href="/type/int" >int</a> = <a href="/type/auth.SentCodeType" >auth.SentCodeType</a>; +<a href="/constructor/auth.sentCodeTypeSms" >auth.sentCodeTypeSms</a>#c000bba2 length:<a href="/type/int" >int</a> = <a href="/type/auth.SentCodeType" >auth.SentCodeType</a>; +<a href="/constructor/auth.sentCodeTypeCall" >auth.sentCodeTypeCall</a>#5353e5a7 length:<a href="/type/int" >int</a> = <a href="/type/auth.SentCodeType" >auth.SentCodeType</a>; +<a href="/constructor/auth.sentCodeTypeFlashCall" >auth.sentCodeTypeFlashCall</a>#ab03c6d9 pattern:<a href="/type/string" >string</a> = <a href="/type/auth.SentCodeType" >auth.SentCodeType</a>; + +<a href="/constructor/messages.botCallbackAnswer" >messages.botCallbackAnswer</a>#36585ea4 flags:<a href="/type/%23" >#</a> alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?<a href="/type/string" >string</a> url:flags.2?<a href="/type/string" >string</a> cache_time:<a href="/type/int" >int</a> = <a href="/type/messages.BotCallbackAnswer" >messages.BotCallbackAnswer</a>; + +<a href="/constructor/messages.messageEditData" >messages.messageEditData</a>#26b5dde6 flags:<a href="/type/%23" >#</a> caption:flags.0?true = <a href="/type/messages.MessageEditData" >messages.MessageEditData</a>; + +<a href="/constructor/inputBotInlineMessageID" >inputBotInlineMessageID</a>#890c3d89 dc_id:<a href="/type/int" >int</a> id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a>; +<a href="/constructor/inputBotInlineMessageID64" >inputBotInlineMessageID64</a>#b6d915d7 dc_id:<a href="/type/int" >int</a> owner_id:<a href="/type/long" >long</a> id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a>; + +<a href="/constructor/inlineBotSwitchPM" >inlineBotSwitchPM</a>#3c20629f text:<a href="/type/string" >string</a> start_param:<a href="/type/string" >string</a> = <a href="/type/InlineBotSwitchPM" >InlineBotSwitchPM</a>; + +<a href="/constructor/messages.peerDialogs" >messages.peerDialogs</a>#3371c354 dialogs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Dialog" >Dialog</a>> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> state:<a href="/type/updates.State" >updates.State</a> = <a href="/type/messages.PeerDialogs" >messages.PeerDialogs</a>; + +<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><<a href="/type/TopPeer" >TopPeer</a>> = <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><<a href="/type/TopPeerCategoryPeers" >TopPeerCategoryPeers</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.TopPeers" >contacts.TopPeers</a>; +<a href="/constructor/contacts.topPeersDisabled" >contacts.topPeersDisabled</a>#b52c939d = <a href="/type/contacts.TopPeers" >contacts.TopPeers</a>; + +<a href="/constructor/draftMessageEmpty" >draftMessageEmpty</a>#1b0c841a flags:<a href="/type/%23" >#</a> date:flags.0?<a href="/type/int" >int</a> = <a href="/type/DraftMessage" >DraftMessage</a>; +<a href="/constructor/draftMessage" >draftMessage</a>#fd8e711f flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true reply_to_msg_id:flags.0?<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> date:<a href="/type/int" >int</a> = <a href="/type/DraftMessage" >DraftMessage</a>; + +<a href="/constructor/messages.featuredStickersNotModified" >messages.featuredStickersNotModified</a>#c6dc0c66 count:<a href="/type/int" >int</a> = <a href="/type/messages.FeaturedStickers" >messages.FeaturedStickers</a>; +<a href="/constructor/messages.featuredStickers" >messages.featuredStickers</a>#84c02310 hash:<a href="/type/long" >long</a> count:<a href="/type/int" >int</a> sets:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerSetCovered" >StickerSetCovered</a>> unread:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/messages.FeaturedStickers" >messages.FeaturedStickers</a>; + +<a href="/constructor/messages.recentStickersNotModified" >messages.recentStickersNotModified</a>#b17f890 = <a href="/type/messages.RecentStickers" >messages.RecentStickers</a>; +<a href="/constructor/messages.recentStickers" >messages.recentStickers</a>#88d37c56 hash:<a href="/type/long" >long</a> packs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerPack" >StickerPack</a>> stickers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> dates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.RecentStickers" >messages.RecentStickers</a>; + +<a href="/constructor/messages.archivedStickers" >messages.archivedStickers</a>#4fcba9c8 count:<a href="/type/int" >int</a> sets:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerSetCovered" >StickerSetCovered</a>> = <a href="/type/messages.ArchivedStickers" >messages.ArchivedStickers</a>; + +<a href="/constructor/messages.stickerSetInstallResultSuccess" >messages.stickerSetInstallResultSuccess</a>#38641628 = <a href="/type/messages.StickerSetInstallResult" >messages.StickerSetInstallResult</a>; +<a href="/constructor/messages.stickerSetInstallResultArchive" >messages.stickerSetInstallResultArchive</a>#35e410a8 sets:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerSetCovered" >StickerSetCovered</a>> = <a href="/type/messages.StickerSetInstallResult" >messages.StickerSetInstallResult</a>; + +<a href="/constructor/stickerSetCovered" >stickerSetCovered</a>#6410a5d2 set:<a href="/type/StickerSet" >StickerSet</a> cover:<a href="/type/Document" >Document</a> = <a href="/type/StickerSetCovered" >StickerSetCovered</a>; +<a href="/constructor/stickerSetMultiCovered" >stickerSetMultiCovered</a>#3407e51b set:<a href="/type/StickerSet" >StickerSet</a> covers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/StickerSetCovered" >StickerSetCovered</a>; + +<a href="/constructor/maskCoords" >maskCoords</a>#aed6dbb2 n:<a href="/type/int" >int</a> x:<a href="/type/double" >double</a> y:<a href="/type/double" >double</a> zoom:<a href="/type/double" >double</a> = <a href="/type/MaskCoords" >MaskCoords</a>; + +<a href="/constructor/inputStickeredMediaPhoto" >inputStickeredMediaPhoto</a>#4a992157 id:<a href="/type/InputPhoto" >InputPhoto</a> = <a href="/type/InputStickeredMedia" >InputStickeredMedia</a>; +<a href="/constructor/inputStickeredMediaDocument" >inputStickeredMediaDocument</a>#438865b id:<a href="/type/InputDocument" >InputDocument</a> = <a href="/type/InputStickeredMedia" >InputStickeredMedia</a>; + +<a href="/constructor/game" >game</a>#bdf9653b flags:<a href="/type/%23" >#</a> id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> short_name:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:<a href="/type/Photo" >Photo</a> document:flags.0?<a href="/type/Document" >Document</a> = <a href="/type/Game" >Game</a>; + +<a href="/constructor/inputGameID" >inputGameID</a>#32c3e77 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputGame" >InputGame</a>; +<a href="/constructor/inputGameShortName" >inputGameShortName</a>#c331e80a bot_id:<a href="/type/InputUser" >InputUser</a> short_name:<a href="/type/string" >string</a> = <a href="/type/InputGame" >InputGame</a>; + +<a href="/constructor/highScore" >highScore</a>#73a379eb pos:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> score:<a href="/type/int" >int</a> = <a href="/type/HighScore" >HighScore</a>; + +<a href="/constructor/messages.highScores" >messages.highScores</a>#9a3bfd99 scores:<a href="/type/Vector%20t" >Vector</a><<a href="/type/HighScore" >HighScore</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.HighScores" >messages.HighScores</a>; + +<a href="/constructor/textEmpty" >textEmpty</a>#dc3d824f = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textPlain" >textPlain</a>#744694e0 text:<a href="/type/string" >string</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textBold" >textBold</a>#6724abc4 text:<a href="/type/RichText" >RichText</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textItalic" >textItalic</a>#d912a59c text:<a href="/type/RichText" >RichText</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textUnderline" >textUnderline</a>#c12622c4 text:<a href="/type/RichText" >RichText</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textStrike" >textStrike</a>#9bf8bb95 text:<a href="/type/RichText" >RichText</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textFixed" >textFixed</a>#6c3f19b9 text:<a href="/type/RichText" >RichText</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textUrl" >textUrl</a>#3c2884c1 text:<a href="/type/RichText" >RichText</a> url:<a href="/type/string" >string</a> webpage_id:<a href="/type/long" >long</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textEmail" >textEmail</a>#de5a0dd6 text:<a href="/type/RichText" >RichText</a> email:<a href="/type/string" >string</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textConcat" >textConcat</a>#7e6260d7 texts:<a href="/type/Vector%20t" >Vector</a><<a href="/type/RichText" >RichText</a>> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textSubscript" >textSubscript</a>#ed6a8504 text:<a href="/type/RichText" >RichText</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textSuperscript" >textSuperscript</a>#c7fb5e01 text:<a href="/type/RichText" >RichText</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textMarked" >textMarked</a>#34b8621 text:<a href="/type/RichText" >RichText</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textPhone" >textPhone</a>#1ccb966a text:<a href="/type/RichText" >RichText</a> phone:<a href="/type/string" >string</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textImage" >textImage</a>#81ccf4f document_id:<a href="/type/long" >long</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> = <a href="/type/RichText" >RichText</a>; +<a href="/constructor/textAnchor" >textAnchor</a>#35553762 text:<a href="/type/RichText" >RichText</a> name:<a href="/type/string" >string</a> = <a href="/type/RichText" >RichText</a>; + +<a href="/constructor/pageBlockUnsupported" >pageBlockUnsupported</a>#13567e8a = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockTitle" >pageBlockTitle</a>#70abc3fd text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockSubtitle" >pageBlockSubtitle</a>#8ffa9a1f text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockAuthorDate" >pageBlockAuthorDate</a>#baafe5e0 author:<a href="/type/RichText" >RichText</a> published_date:<a href="/type/int" >int</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockHeader" >pageBlockHeader</a>#bfd064ec text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockSubheader" >pageBlockSubheader</a>#f12bb6e1 text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockParagraph" >pageBlockParagraph</a>#467a0766 text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockPreformatted" >pageBlockPreformatted</a>#c070d93e text:<a href="/type/RichText" >RichText</a> language:<a href="/type/string" >string</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockFooter" >pageBlockFooter</a>#48870999 text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockDivider" >pageBlockDivider</a>#db20b188 = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockAnchor" >pageBlockAnchor</a>#ce0d37b0 name:<a href="/type/string" >string</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockList" >pageBlockList</a>#e4e88011 items:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageListItem" >PageListItem</a>> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockBlockquote" >pageBlockBlockquote</a>#263d7c26 text:<a href="/type/RichText" >RichText</a> caption:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockPullquote" >pageBlockPullquote</a>#4f4456d3 text:<a href="/type/RichText" >RichText</a> caption:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockPhoto" >pageBlockPhoto</a>#1759c560 flags:<a href="/type/%23" >#</a> photo_id:<a href="/type/long" >long</a> caption:<a href="/type/PageCaption" >PageCaption</a> url:flags.0?<a href="/type/string" >string</a> webpage_id:flags.0?<a href="/type/long" >long</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockVideo" >pageBlockVideo</a>#7c8fe7b6 flags:<a href="/type/%23" >#</a> autoplay:flags.0?true loop:flags.1?true video_id:<a href="/type/long" >long</a> caption:<a href="/type/PageCaption" >PageCaption</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockCover" >pageBlockCover</a>#39f23300 cover:<a href="/type/PageBlock" >PageBlock</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockEmbed" >pageBlockEmbed</a>#a8718dc5 flags:<a href="/type/%23" >#</a> full_width:flags.0?true allow_scrolling:flags.3?true url:flags.1?<a href="/type/string" >string</a> html:flags.2?<a href="/type/string" >string</a> poster_photo_id:flags.4?<a href="/type/long" >long</a> w:flags.5?<a href="/type/int" >int</a> h:flags.5?<a href="/type/int" >int</a> caption:<a href="/type/PageCaption" >PageCaption</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockEmbedPost" >pageBlockEmbedPost</a>#f259a80b url:<a href="/type/string" >string</a> webpage_id:<a href="/type/long" >long</a> author_photo_id:<a href="/type/long" >long</a> author:<a href="/type/string" >string</a> date:<a href="/type/int" >int</a> blocks:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> caption:<a href="/type/PageCaption" >PageCaption</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockCollage" >pageBlockCollage</a>#65a0fa4d items:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> caption:<a href="/type/PageCaption" >PageCaption</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockSlideshow" >pageBlockSlideshow</a>#31f9590 items:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> caption:<a href="/type/PageCaption" >PageCaption</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockChannel" >pageBlockChannel</a>#ef1751b5 channel:<a href="/type/Chat" >Chat</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockAudio" >pageBlockAudio</a>#804361ea audio_id:<a href="/type/long" >long</a> caption:<a href="/type/PageCaption" >PageCaption</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockKicker" >pageBlockKicker</a>#1e148390 text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockTable" >pageBlockTable</a>#bf4dea82 flags:<a href="/type/%23" >#</a> bordered:flags.0?true striped:flags.1?true title:<a href="/type/RichText" >RichText</a> rows:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageTableRow" >PageTableRow</a>> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockOrderedList" >pageBlockOrderedList</a>#9a8ae1e1 items:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageListOrderedItem" >PageListOrderedItem</a>> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockDetails" >pageBlockDetails</a>#76768bed flags:<a href="/type/%23" >#</a> open:flags.0?true blocks:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> title:<a href="/type/RichText" >RichText</a> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockRelatedArticles" >pageBlockRelatedArticles</a>#16115a96 title:<a href="/type/RichText" >RichText</a> articles:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageRelatedArticle" >PageRelatedArticle</a>> = <a href="/type/PageBlock" >PageBlock</a>; +<a href="/constructor/pageBlockMap" >pageBlockMap</a>#a44f3ef6 geo:<a href="/type/GeoPoint" >GeoPoint</a> zoom:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> caption:<a href="/type/PageCaption" >PageCaption</a> = <a href="/type/PageBlock" >PageBlock</a>; + +<a href="/constructor/phoneCallDiscardReasonMissed" >phoneCallDiscardReasonMissed</a>#85e42301 = <a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a>; +<a href="/constructor/phoneCallDiscardReasonDisconnect" >phoneCallDiscardReasonDisconnect</a>#e095c1a0 = <a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a>; +<a href="/constructor/phoneCallDiscardReasonHangup" >phoneCallDiscardReasonHangup</a>#57adc690 = <a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a>; +<a href="/constructor/phoneCallDiscardReasonBusy" >phoneCallDiscardReasonBusy</a>#faf7e8c9 = <a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a>; + +<a href="/constructor/dataJSON" >dataJSON</a>#7d748d04 data:<a href="/type/string" >string</a> = <a href="/type/DataJSON" >DataJSON</a>; + +<a href="/constructor/labeledPrice" >labeledPrice</a>#cb296bf8 label:<a href="/type/string" >string</a> amount:<a href="/type/long" >long</a> = <a href="/type/LabeledPrice" >LabeledPrice</a>; + +<a href="/constructor/invoice" >invoice</a>#cd886e0 flags:<a href="/type/%23" >#</a> test:flags.0?true name_requested:flags.1?true phone_requested:flags.2?true email_requested:flags.3?true shipping_address_requested:flags.4?true flexible:flags.5?true phone_to_provider:flags.6?true email_to_provider:flags.7?true currency:<a href="/type/string" >string</a> prices:<a href="/type/Vector%20t" >Vector</a><<a href="/type/LabeledPrice" >LabeledPrice</a>> max_tip_amount:flags.8?<a href="/type/long" >long</a> suggested_tip_amounts:flags.8?<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/Invoice" >Invoice</a>; + +<a href="/constructor/paymentCharge" >paymentCharge</a>#ea02c27e id:<a href="/type/string" >string</a> provider_charge_id:<a href="/type/string" >string</a> = <a href="/type/PaymentCharge" >PaymentCharge</a>; + +<a href="/constructor/postAddress" >postAddress</a>#1e8caaeb street_line1:<a href="/type/string" >string</a> street_line2:<a href="/type/string" >string</a> city:<a href="/type/string" >string</a> state:<a href="/type/string" >string</a> country_iso2:<a href="/type/string" >string</a> post_code:<a href="/type/string" >string</a> = <a href="/type/PostAddress" >PostAddress</a>; + +<a href="/constructor/paymentRequestedInfo" >paymentRequestedInfo</a>#909c3f94 flags:<a href="/type/%23" >#</a> name:flags.0?<a href="/type/string" >string</a> phone:flags.1?<a href="/type/string" >string</a> email:flags.2?<a href="/type/string" >string</a> shipping_address:flags.3?<a href="/type/PostAddress" >PostAddress</a> = <a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a>; + +<a href="/constructor/paymentSavedCredentialsCard" >paymentSavedCredentialsCard</a>#cdc27a1f id:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> = <a href="/type/PaymentSavedCredentials" >PaymentSavedCredentials</a>; + +<a href="/constructor/webDocument" >webDocument</a>#1c570ed1 url:<a href="/type/string" >string</a> access_hash:<a href="/type/long" >long</a> size:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> = <a href="/type/WebDocument" >WebDocument</a>; +<a href="/constructor/webDocumentNoProxy" >webDocumentNoProxy</a>#f9c8bcc6 url:<a href="/type/string" >string</a> size:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> = <a href="/type/WebDocument" >WebDocument</a>; + +<a href="/constructor/inputWebDocument" >inputWebDocument</a>#9bed434d url:<a href="/type/string" >string</a> size:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> = <a href="/type/InputWebDocument" >InputWebDocument</a>; + +<a href="/constructor/inputWebFileLocation" >inputWebFileLocation</a>#c239d686 url:<a href="/type/string" >string</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputWebFileLocation" >InputWebFileLocation</a>; +<a href="/constructor/inputWebFileGeoPointLocation" >inputWebFileGeoPointLocation</a>#9f2221c9 geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> access_hash:<a href="/type/long" >long</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> zoom:<a href="/type/int" >int</a> scale:<a href="/type/int" >int</a> = <a href="/type/InputWebFileLocation" >InputWebFileLocation</a>; + +<a href="/constructor/upload.webFile" >upload.webFile</a>#21e753bc size:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> file_type:<a href="/type/storage.FileType" >storage.FileType</a> mtime:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/upload.WebFile" >upload.WebFile</a>; + +<a href="/constructor/payments.paymentForm" >payments.paymentForm</a>#1694761b flags:<a href="/type/%23" >#</a> can_save_credentials:flags.2?true password_missing:flags.3?true form_id:<a href="/type/long" >long</a> bot_id:<a href="/type/long" >long</a> invoice:<a href="/type/Invoice" >Invoice</a> provider_id:<a href="/type/long" >long</a> url:<a href="/type/string" >string</a> native_provider:flags.4?<a href="/type/string" >string</a> native_params:flags.4?<a href="/type/DataJSON" >DataJSON</a> saved_info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> saved_credentials:flags.1?<a href="/type/PaymentSavedCredentials" >PaymentSavedCredentials</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/payments.PaymentForm" >payments.PaymentForm</a>; + +<a href="/constructor/payments.validatedRequestedInfo" >payments.validatedRequestedInfo</a>#d1451883 flags:<a href="/type/%23" >#</a> id:flags.0?<a href="/type/string" >string</a> shipping_options:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/ShippingOption" >ShippingOption</a>> = <a href="/type/payments.ValidatedRequestedInfo" >payments.ValidatedRequestedInfo</a>; + +<a href="/constructor/payments.paymentResult" >payments.paymentResult</a>#4e5f810d updates:<a href="/type/Updates" >Updates</a> = <a href="/type/payments.PaymentResult" >payments.PaymentResult</a>; +<a href="/constructor/payments.paymentVerificationNeeded" >payments.paymentVerificationNeeded</a>#d8411139 url:<a href="/type/string" >string</a> = <a href="/type/payments.PaymentResult" >payments.PaymentResult</a>; + +<a href="/constructor/payments.paymentReceipt" >payments.paymentReceipt</a>#70c4fe03 flags:<a href="/type/%23" >#</a> date:<a href="/type/int" >int</a> bot_id:<a href="/type/long" >long</a> provider_id:<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.2?<a href="/type/WebDocument" >WebDocument</a> invoice:<a href="/type/Invoice" >Invoice</a> info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> shipping:flags.1?<a href="/type/ShippingOption" >ShippingOption</a> tip_amount:flags.3?<a href="/type/long" >long</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> credentials_title:<a href="/type/string" >string</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/payments.PaymentReceipt" >payments.PaymentReceipt</a>; + +<a href="/constructor/payments.savedInfo" >payments.savedInfo</a>#fb8fe43c flags:<a href="/type/%23" >#</a> has_saved_credentials:flags.1?true saved_info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> = <a href="/type/payments.SavedInfo" >payments.SavedInfo</a>; + +<a href="/constructor/inputPaymentCredentialsSaved" >inputPaymentCredentialsSaved</a>#c10eb2cf id:<a href="/type/string" >string</a> tmp_password:<a href="/type/bytes" >bytes</a> = <a href="/type/InputPaymentCredentials" >InputPaymentCredentials</a>; +<a href="/constructor/inputPaymentCredentials" >inputPaymentCredentials</a>#3417d728 flags:<a href="/type/%23" >#</a> save:flags.0?true data:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/InputPaymentCredentials" >InputPaymentCredentials</a>; +<a href="/constructor/inputPaymentCredentialsApplePay" >inputPaymentCredentialsApplePay</a>#aa1c39f payment_data:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/InputPaymentCredentials" >InputPaymentCredentials</a>; +<a href="/constructor/inputPaymentCredentialsGooglePay" >inputPaymentCredentialsGooglePay</a>#8ac32801 payment_token:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/InputPaymentCredentials" >InputPaymentCredentials</a>; + +<a href="/constructor/account.tmpPassword" >account.tmpPassword</a>#db64fd34 tmp_password:<a href="/type/bytes" >bytes</a> valid_until:<a href="/type/int" >int</a> = <a href="/type/account.TmpPassword" >account.TmpPassword</a>; + +<a href="/constructor/shippingOption" >shippingOption</a>#b6213cdf id:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> prices:<a href="/type/Vector%20t" >Vector</a><<a href="/type/LabeledPrice" >LabeledPrice</a>> = <a href="/type/ShippingOption" >ShippingOption</a>; + +<a href="/constructor/inputStickerSetItem" >inputStickerSetItem</a>#ffa0a496 flags:<a href="/type/%23" >#</a> document:<a href="/type/InputDocument" >InputDocument</a> emoji:<a href="/type/string" >string</a> mask_coords:flags.0?<a href="/type/MaskCoords" >MaskCoords</a> = <a href="/type/InputStickerSetItem" >InputStickerSetItem</a>; + +<a href="/constructor/inputPhoneCall" >inputPhoneCall</a>#1e36fded id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputPhoneCall" >InputPhoneCall</a>; + +<a href="/constructor/phoneCallEmpty" >phoneCallEmpty</a>#5366c915 id:<a href="/type/long" >long</a> = <a href="/type/PhoneCall" >PhoneCall</a>; +<a href="/constructor/phoneCallWaiting" >phoneCallWaiting</a>#c5226f17 flags:<a href="/type/%23" >#</a> video:flags.6?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> receive_date:flags.0?<a href="/type/int" >int</a> = <a href="/type/PhoneCall" >PhoneCall</a>; +<a href="/constructor/phoneCallRequested" >phoneCallRequested</a>#14b0ed0c flags:<a href="/type/%23" >#</a> video:flags.6?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_a_hash:<a href="/type/bytes" >bytes</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/PhoneCall" >PhoneCall</a>; +<a href="/constructor/phoneCallAccepted" >phoneCallAccepted</a>#3660c311 flags:<a href="/type/%23" >#</a> video:flags.6?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_b:<a href="/type/bytes" >bytes</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/PhoneCall" >PhoneCall</a>; +<a href="/constructor/phoneCall" >phoneCall</a>#967f7c67 flags:<a href="/type/%23" >#</a> p2p_allowed:flags.5?true video:flags.6?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_a_or_b:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> connections:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PhoneConnection" >PhoneConnection</a>> start_date:<a href="/type/int" >int</a> = <a href="/type/PhoneCall" >PhoneCall</a>; +<a href="/constructor/phoneCallDiscarded" >phoneCallDiscarded</a>#50ca4de1 flags:<a href="/type/%23" >#</a> need_rating:flags.2?true need_debug:flags.3?true video:flags.6?true id:<a href="/type/long" >long</a> reason:flags.0?<a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a> duration:flags.1?<a href="/type/int" >int</a> = <a href="/type/PhoneCall" >PhoneCall</a>; + +<a href="/constructor/phoneConnection" >phoneConnection</a>#9d4c17c0 id:<a href="/type/long" >long</a> ip:<a href="/type/string" >string</a> ipv6:<a href="/type/string" >string</a> port:<a href="/type/int" >int</a> peer_tag:<a href="/type/bytes" >bytes</a> = <a href="/type/PhoneConnection" >PhoneConnection</a>; +<a href="/constructor/phoneConnectionWebrtc" >phoneConnectionWebrtc</a>#635fe375 flags:<a href="/type/%23" >#</a> turn:flags.0?true stun:flags.1?true id:<a href="/type/long" >long</a> ip:<a href="/type/string" >string</a> ipv6:<a href="/type/string" >string</a> port:<a href="/type/int" >int</a> username:<a href="/type/string" >string</a> password:<a href="/type/string" >string</a> = <a href="/type/PhoneConnection" >PhoneConnection</a>; + +<a href="/constructor/phoneCallProtocol" >phoneCallProtocol</a>#fc878fc8 flags:<a href="/type/%23" >#</a> udp_p2p:flags.0?true udp_reflector:flags.1?true min_layer:<a href="/type/int" >int</a> max_layer:<a href="/type/int" >int</a> library_versions:<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> = <a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a>; + +<a href="/constructor/phone.phoneCall" >phone.phoneCall</a>#ec82e140 phone_call:<a href="/type/PhoneCall" >PhoneCall</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/phone.PhoneCall" >phone.PhoneCall</a>; + +<a href="/constructor/upload.cdnFileReuploadNeeded" >upload.cdnFileReuploadNeeded</a>#eea8e46e request_token:<a href="/type/bytes" >bytes</a> = <a href="/type/upload.CdnFile" >upload.CdnFile</a>; +<a href="/constructor/upload.cdnFile" >upload.cdnFile</a>#a99fca4f bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/upload.CdnFile" >upload.CdnFile</a>; + +<a href="/constructor/cdnPublicKey" >cdnPublicKey</a>#c982eaba dc_id:<a href="/type/int" >int</a> public_key:<a href="/type/string" >string</a> = <a href="/type/CdnPublicKey" >CdnPublicKey</a>; + +<a href="/constructor/cdnConfig" >cdnConfig</a>#5725e40a public_keys:<a href="/type/Vector%20t" >Vector</a><<a href="/type/CdnPublicKey" >CdnPublicKey</a>> = <a href="/type/CdnConfig" >CdnConfig</a>; + +<a href="/constructor/langPackString" >langPackString</a>#cad181f6 key:<a href="/type/string" >string</a> value:<a href="/type/string" >string</a> = <a href="/type/LangPackString" >LangPackString</a>; +<a href="/constructor/langPackStringPluralized" >langPackStringPluralized</a>#6c47ac9f flags:<a href="/type/%23" >#</a> key:<a href="/type/string" >string</a> zero_value:flags.0?<a href="/type/string" >string</a> one_value:flags.1?<a href="/type/string" >string</a> two_value:flags.2?<a href="/type/string" >string</a> few_value:flags.3?<a href="/type/string" >string</a> many_value:flags.4?<a href="/type/string" >string</a> other_value:<a href="/type/string" >string</a> = <a href="/type/LangPackString" >LangPackString</a>; +<a href="/constructor/langPackStringDeleted" >langPackStringDeleted</a>#2979eeb2 key:<a href="/type/string" >string</a> = <a href="/type/LangPackString" >LangPackString</a>; + +<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><<a href="/type/LangPackString" >LangPackString</a>> = <a href="/type/LangPackDifference" >LangPackDifference</a>; + +<a href="/constructor/langPackLanguage" >langPackLanguage</a>#eeca5ce3 flags:<a href="/type/%23" >#</a> official:flags.0?true rtl:flags.2?true beta:flags.3?true name:<a href="/type/string" >string</a> native_name:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> base_lang_code:flags.1?<a href="/type/string" >string</a> plural_code:<a href="/type/string" >string</a> strings_count:<a href="/type/int" >int</a> translated_count:<a href="/type/int" >int</a> translations_url:<a href="/type/string" >string</a> = <a href="/type/LangPackLanguage" >LangPackLanguage</a>; + +<a href="/constructor/channelAdminLogEventActionChangeTitle" >channelAdminLogEventActionChangeTitle</a>#e6dfb825 prev_value:<a href="/type/string" >string</a> new_value:<a href="/type/string" >string</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionChangeAbout" >channelAdminLogEventActionChangeAbout</a>#55188a2e prev_value:<a href="/type/string" >string</a> new_value:<a href="/type/string" >string</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionChangeUsername" >channelAdminLogEventActionChangeUsername</a>#6a4afc38 prev_value:<a href="/type/string" >string</a> new_value:<a href="/type/string" >string</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionChangePhoto" >channelAdminLogEventActionChangePhoto</a>#434bd2af prev_photo:<a href="/type/Photo" >Photo</a> new_photo:<a href="/type/Photo" >Photo</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionToggleInvites" >channelAdminLogEventActionToggleInvites</a>#1b7907ae new_value:<a href="/type/Bool" >Bool</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionToggleSignatures" >channelAdminLogEventActionToggleSignatures</a>#26ae0971 new_value:<a href="/type/Bool" >Bool</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionUpdatePinned" >channelAdminLogEventActionUpdatePinned</a>#e9e82c18 message:<a href="/type/Message" >Message</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionEditMessage" >channelAdminLogEventActionEditMessage</a>#709b2405 prev_message:<a href="/type/Message" >Message</a> new_message:<a href="/type/Message" >Message</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionDeleteMessage" >channelAdminLogEventActionDeleteMessage</a>#42e047bb message:<a href="/type/Message" >Message</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionParticipantJoin" >channelAdminLogEventActionParticipantJoin</a>#183040d3 = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionParticipantLeave" >channelAdminLogEventActionParticipantLeave</a>#f89777f2 = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionParticipantInvite" >channelAdminLogEventActionParticipantInvite</a>#e31c34d8 participant:<a href="/type/ChannelParticipant" >ChannelParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionParticipantToggleBan" >channelAdminLogEventActionParticipantToggleBan</a>#e6d83d7e prev_participant:<a href="/type/ChannelParticipant" >ChannelParticipant</a> new_participant:<a href="/type/ChannelParticipant" >ChannelParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionParticipantToggleAdmin" >channelAdminLogEventActionParticipantToggleAdmin</a>#d5676710 prev_participant:<a href="/type/ChannelParticipant" >ChannelParticipant</a> new_participant:<a href="/type/ChannelParticipant" >ChannelParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionChangeStickerSet" >channelAdminLogEventActionChangeStickerSet</a>#b1c3caa7 prev_stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> new_stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionTogglePreHistoryHidden" >channelAdminLogEventActionTogglePreHistoryHidden</a>#5f5c95f1 new_value:<a href="/type/Bool" >Bool</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionDefaultBannedRights" >channelAdminLogEventActionDefaultBannedRights</a>#2df5fc0a prev_banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> new_banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionStopPoll" >channelAdminLogEventActionStopPoll</a>#8f079643 message:<a href="/type/Message" >Message</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionChangeLinkedChat" >channelAdminLogEventActionChangeLinkedChat</a>#50c7ac8 prev_value:<a href="/type/long" >long</a> new_value:<a href="/type/long" >long</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionChangeLocation" >channelAdminLogEventActionChangeLocation</a>#e6b76ae prev_value:<a href="/type/ChannelLocation" >ChannelLocation</a> new_value:<a href="/type/ChannelLocation" >ChannelLocation</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionToggleSlowMode" >channelAdminLogEventActionToggleSlowMode</a>#53909779 prev_value:<a href="/type/int" >int</a> new_value:<a href="/type/int" >int</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionStartGroupCall" >channelAdminLogEventActionStartGroupCall</a>#23209745 call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionDiscardGroupCall" >channelAdminLogEventActionDiscardGroupCall</a>#db9f9140 call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionParticipantMute" >channelAdminLogEventActionParticipantMute</a>#f92424d2 participant:<a href="/type/GroupCallParticipant" >GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionParticipantUnmute" >channelAdminLogEventActionParticipantUnmute</a>#e64429c0 participant:<a href="/type/GroupCallParticipant" >GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionToggleGroupCallSetting" >channelAdminLogEventActionToggleGroupCallSetting</a>#56d6a247 join_muted:<a href="/type/Bool" >Bool</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionParticipantJoinByInvite" >channelAdminLogEventActionParticipantJoinByInvite</a>#5cdada77 invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionExportedInviteDelete" >channelAdminLogEventActionExportedInviteDelete</a>#5a50fca4 invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionExportedInviteRevoke" >channelAdminLogEventActionExportedInviteRevoke</a>#410a134e invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionExportedInviteEdit" >channelAdminLogEventActionExportedInviteEdit</a>#e90ebb59 prev_invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> new_invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionParticipantVolume" >channelAdminLogEventActionParticipantVolume</a>#3e7f6847 participant:<a href="/type/GroupCallParticipant" >GroupCallParticipant</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; +<a href="/constructor/channelAdminLogEventActionChangeHistoryTTL" >channelAdminLogEventActionChangeHistoryTTL</a>#6e941a38 prev_value:<a href="/type/int" >int</a> new_value:<a href="/type/int" >int</a> = <a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a>; + +<a href="/constructor/channelAdminLogEvent" >channelAdminLogEvent</a>#1fad68cd id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> action:<a href="/type/ChannelAdminLogEventAction" >ChannelAdminLogEventAction</a> = <a href="/type/ChannelAdminLogEvent" >ChannelAdminLogEvent</a>; + +<a href="/constructor/channels.adminLogResults" >channels.adminLogResults</a>#ed8af74d events:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChannelAdminLogEvent" >ChannelAdminLogEvent</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/channels.AdminLogResults" >channels.AdminLogResults</a>; + +<a href="/constructor/channelAdminLogEventsFilter" >channelAdminLogEventsFilter</a>#ea107ae4 flags:<a href="/type/%23" >#</a> join:flags.0?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 send:flags.16?true = <a href="/type/ChannelAdminLogEventsFilter" >ChannelAdminLogEventsFilter</a>; + +<a href="/constructor/popularContact" >popularContact</a>#5ce14175 client_id:<a href="/type/long" >long</a> importers:<a href="/type/int" >int</a> = <a href="/type/PopularContact" >PopularContact</a>; + +<a href="/constructor/messages.favedStickersNotModified" >messages.favedStickersNotModified</a>#9e8fa6d3 = <a href="/type/messages.FavedStickers" >messages.FavedStickers</a>; +<a href="/constructor/messages.favedStickers" >messages.favedStickers</a>#2cb51097 hash:<a href="/type/long" >long</a> packs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerPack" >StickerPack</a>> stickers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/messages.FavedStickers" >messages.FavedStickers</a>; + +<a href="/constructor/recentMeUrlUnknown" >recentMeUrlUnknown</a>#46e1d13d url:<a href="/type/string" >string</a> = <a href="/type/RecentMeUrl" >RecentMeUrl</a>; +<a href="/constructor/recentMeUrlUser" >recentMeUrlUser</a>#b92c09e2 url:<a href="/type/string" >string</a> user_id:<a href="/type/long" >long</a> = <a href="/type/RecentMeUrl" >RecentMeUrl</a>; +<a href="/constructor/recentMeUrlChat" >recentMeUrlChat</a>#b2da71d2 url:<a href="/type/string" >string</a> chat_id:<a href="/type/long" >long</a> = <a href="/type/RecentMeUrl" >RecentMeUrl</a>; +<a href="/constructor/recentMeUrlChatInvite" >recentMeUrlChatInvite</a>#eb49081d url:<a href="/type/string" >string</a> chat_invite:<a href="/type/ChatInvite" >ChatInvite</a> = <a href="/type/RecentMeUrl" >RecentMeUrl</a>; +<a href="/constructor/recentMeUrlStickerSet" >recentMeUrlStickerSet</a>#bc0a57dc url:<a href="/type/string" >string</a> set:<a href="/type/StickerSetCovered" >StickerSetCovered</a> = <a href="/type/RecentMeUrl" >RecentMeUrl</a>; + +<a href="/constructor/help.recentMeUrls" >help.recentMeUrls</a>#e0310d7 urls:<a href="/type/Vector%20t" >Vector</a><<a href="/type/RecentMeUrl" >RecentMeUrl</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/help.RecentMeUrls" >help.RecentMeUrls</a>; + +<a href="/constructor/inputSingleMedia" >inputSingleMedia</a>#1cc6e91f flags:<a href="/type/%23" >#</a> media:<a href="/type/InputMedia" >InputMedia</a> random_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> entities:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/InputSingleMedia" >InputSingleMedia</a>; + +<a href="/constructor/webAuthorization" >webAuthorization</a>#a6f8f452 hash:<a href="/type/long" >long</a> bot_id:<a href="/type/long" >long</a> domain:<a href="/type/string" >string</a> browser:<a href="/type/string" >string</a> platform:<a href="/type/string" >string</a> date_created:<a href="/type/int" >int</a> date_active:<a href="/type/int" >int</a> ip:<a href="/type/string" >string</a> region:<a href="/type/string" >string</a> = <a href="/type/WebAuthorization" >WebAuthorization</a>; + +<a href="/constructor/account.webAuthorizations" >account.webAuthorizations</a>#ed56c9fc authorizations:<a href="/type/Vector%20t" >Vector</a><<a href="/type/WebAuthorization" >WebAuthorization</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/account.WebAuthorizations" >account.WebAuthorizations</a>; + +<a href="/constructor/inputMessageID" >inputMessageID</a>#a676a322 id:<a href="/type/int" >int</a> = <a href="/type/InputMessage" >InputMessage</a>; +<a href="/constructor/inputMessageReplyTo" >inputMessageReplyTo</a>#bad88395 id:<a href="/type/int" >int</a> = <a href="/type/InputMessage" >InputMessage</a>; +<a href="/constructor/inputMessagePinned" >inputMessagePinned</a>#86872538 = <a href="/type/InputMessage" >InputMessage</a>; +<a href="/constructor/inputMessageCallbackQuery" >inputMessageCallbackQuery</a>#acfa1a7e id:<a href="/type/int" >int</a> query_id:<a href="/type/long" >long</a> = <a href="/type/InputMessage" >InputMessage</a>; + +<a href="/constructor/inputDialogPeer" >inputDialogPeer</a>#fcaafeb7 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/InputDialogPeer" >InputDialogPeer</a>; +<a href="/constructor/inputDialogPeerFolder" >inputDialogPeerFolder</a>#64600527 folder_id:<a href="/type/int" >int</a> = <a href="/type/InputDialogPeer" >InputDialogPeer</a>; + +<a href="/constructor/dialogPeer" >dialogPeer</a>#e56dbf05 peer:<a href="/type/Peer" >Peer</a> = <a href="/type/DialogPeer" >DialogPeer</a>; +<a href="/constructor/dialogPeerFolder" >dialogPeerFolder</a>#514519e2 folder_id:<a href="/type/int" >int</a> = <a href="/type/DialogPeer" >DialogPeer</a>; + +<a href="/constructor/messages.foundStickerSetsNotModified" >messages.foundStickerSetsNotModified</a>#d54b65d = <a href="/type/messages.FoundStickerSets" >messages.FoundStickerSets</a>; +<a href="/constructor/messages.foundStickerSets" >messages.foundStickerSets</a>#8af09dd2 hash:<a href="/type/long" >long</a> sets:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerSetCovered" >StickerSetCovered</a>> = <a href="/type/messages.FoundStickerSets" >messages.FoundStickerSets</a>; + +<a href="/constructor/fileHash" >fileHash</a>#6242c773 offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> hash:<a href="/type/bytes" >bytes</a> = <a href="/type/FileHash" >FileHash</a>; + +<a href="/constructor/inputClientProxy" >inputClientProxy</a>#75588b3f address:<a href="/type/string" >string</a> port:<a href="/type/int" >int</a> = <a href="/type/InputClientProxy" >InputClientProxy</a>; + +<a href="/constructor/help.termsOfServiceUpdateEmpty" >help.termsOfServiceUpdateEmpty</a>#e3309f7f expires:<a href="/type/int" >int</a> = <a href="/type/help.TermsOfServiceUpdate" >help.TermsOfServiceUpdate</a>; +<a href="/constructor/help.termsOfServiceUpdate" >help.termsOfServiceUpdate</a>#28ecf961 expires:<a href="/type/int" >int</a> terms_of_service:<a href="/type/help.TermsOfService" >help.TermsOfService</a> = <a href="/type/help.TermsOfServiceUpdate" >help.TermsOfServiceUpdate</a>; + +<a href="/constructor/inputSecureFileUploaded" >inputSecureFileUploaded</a>#3334b0f0 id:<a href="/type/long" >long</a> parts:<a href="/type/int" >int</a> md5_checksum:<a href="/type/string" >string</a> file_hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/InputSecureFile" >InputSecureFile</a>; +<a href="/constructor/inputSecureFile" >inputSecureFile</a>#5367e5be id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputSecureFile" >InputSecureFile</a>; + +<a href="/constructor/secureFileEmpty" >secureFileEmpty</a>#64199744 = <a href="/type/SecureFile" >SecureFile</a>; +<a href="/constructor/secureFile" >secureFile</a>#e0277a62 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> size:<a href="/type/int" >int</a> dc_id:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> file_hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureFile" >SecureFile</a>; + +<a href="/constructor/secureData" >secureData</a>#8aeabec3 data:<a href="/type/bytes" >bytes</a> data_hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureData" >SecureData</a>; + +<a href="/constructor/securePlainPhone" >securePlainPhone</a>#7d6099dd phone:<a href="/type/string" >string</a> = <a href="/type/SecurePlainData" >SecurePlainData</a>; +<a href="/constructor/securePlainEmail" >securePlainEmail</a>#21ec5a5f email:<a href="/type/string" >string</a> = <a href="/type/SecurePlainData" >SecurePlainData</a>; + +<a href="/constructor/secureValueTypePersonalDetails" >secureValueTypePersonalDetails</a>#9d2a81e3 = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypePassport" >secureValueTypePassport</a>#3dac6a00 = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypeDriverLicense" >secureValueTypeDriverLicense</a>#6e425c4 = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypeIdentityCard" >secureValueTypeIdentityCard</a>#a0d0744b = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypeInternalPassport" >secureValueTypeInternalPassport</a>#99a48f23 = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypeAddress" >secureValueTypeAddress</a>#cbe31e26 = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypeUtilityBill" >secureValueTypeUtilityBill</a>#fc36954e = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypeBankStatement" >secureValueTypeBankStatement</a>#89137c0d = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypeRentalAgreement" >secureValueTypeRentalAgreement</a>#8b883488 = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypePassportRegistration" >secureValueTypePassportRegistration</a>#99e3806a = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypeTemporaryRegistration" >secureValueTypeTemporaryRegistration</a>#ea02ec33 = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypePhone" >secureValueTypePhone</a>#b320aadb = <a href="/type/SecureValueType" >SecureValueType</a>; +<a href="/constructor/secureValueTypeEmail" >secureValueTypeEmail</a>#8e3ca7ee = <a href="/type/SecureValueType" >SecureValueType</a>; + +<a href="/constructor/secureValue" >secureValue</a>#187fa0ca flags:<a href="/type/%23" >#</a> type:<a href="/type/SecureValueType" >SecureValueType</a> data:flags.0?<a href="/type/SecureData" >SecureData</a> front_side:flags.1?<a href="/type/SecureFile" >SecureFile</a> reverse_side:flags.2?<a href="/type/SecureFile" >SecureFile</a> selfie:flags.3?<a href="/type/SecureFile" >SecureFile</a> translation:flags.6?<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureFile" >SecureFile</a>> files:flags.4?<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureFile" >SecureFile</a>> plain_data:flags.5?<a href="/type/SecurePlainData" >SecurePlainData</a> hash:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureValue" >SecureValue</a>; + +<a href="/constructor/inputSecureValue" >inputSecureValue</a>#db21d0a7 flags:<a href="/type/%23" >#</a> type:<a href="/type/SecureValueType" >SecureValueType</a> data:flags.0?<a href="/type/SecureData" >SecureData</a> front_side:flags.1?<a href="/type/InputSecureFile" >InputSecureFile</a> reverse_side:flags.2?<a href="/type/InputSecureFile" >InputSecureFile</a> selfie:flags.3?<a href="/type/InputSecureFile" >InputSecureFile</a> translation:flags.6?<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputSecureFile" >InputSecureFile</a>> files:flags.4?<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputSecureFile" >InputSecureFile</a>> plain_data:flags.5?<a href="/type/SecurePlainData" >SecurePlainData</a> = <a href="/type/InputSecureValue" >InputSecureValue</a>; + +<a href="/constructor/secureValueHash" >secureValueHash</a>#ed1ecdb0 type:<a href="/type/SecureValueType" >SecureValueType</a> hash:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureValueHash" >SecureValueHash</a>; + +<a href="/constructor/secureValueErrorData" >secureValueErrorData</a>#e8a40bd9 type:<a href="/type/SecureValueType" >SecureValueType</a> data_hash:<a href="/type/bytes" >bytes</a> field:<a href="/type/string" >string</a> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>; +<a href="/constructor/secureValueErrorFrontSide" >secureValueErrorFrontSide</a>#be3dfa type:<a href="/type/SecureValueType" >SecureValueType</a> file_hash:<a href="/type/bytes" >bytes</a> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>; +<a href="/constructor/secureValueErrorReverseSide" >secureValueErrorReverseSide</a>#868a2aa5 type:<a href="/type/SecureValueType" >SecureValueType</a> file_hash:<a href="/type/bytes" >bytes</a> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>; +<a href="/constructor/secureValueErrorSelfie" >secureValueErrorSelfie</a>#e537ced6 type:<a href="/type/SecureValueType" >SecureValueType</a> file_hash:<a href="/type/bytes" >bytes</a> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>; +<a href="/constructor/secureValueErrorFile" >secureValueErrorFile</a>#7a700873 type:<a href="/type/SecureValueType" >SecureValueType</a> file_hash:<a href="/type/bytes" >bytes</a> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>; +<a href="/constructor/secureValueErrorFiles" >secureValueErrorFiles</a>#666220e9 type:<a href="/type/SecureValueType" >SecureValueType</a> file_hash:<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>; +<a href="/constructor/secureValueError" >secureValueError</a>#869d758f type:<a href="/type/SecureValueType" >SecureValueType</a> hash:<a href="/type/bytes" >bytes</a> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>; +<a href="/constructor/secureValueErrorTranslationFile" >secureValueErrorTranslationFile</a>#a1144770 type:<a href="/type/SecureValueType" >SecureValueType</a> file_hash:<a href="/type/bytes" >bytes</a> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>; +<a href="/constructor/secureValueErrorTranslationFiles" >secureValueErrorTranslationFiles</a>#34636dd8 type:<a href="/type/SecureValueType" >SecureValueType</a> file_hash:<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> text:<a href="/type/string" >string</a> = <a href="/type/SecureValueError" >SecureValueError</a>; + +<a href="/constructor/secureCredentialsEncrypted" >secureCredentialsEncrypted</a>#33f0ea47 data:<a href="/type/bytes" >bytes</a> hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureCredentialsEncrypted" >SecureCredentialsEncrypted</a>; + +<a href="/constructor/account.authorizationForm" >account.authorizationForm</a>#ad2e1cd8 flags:<a href="/type/%23" >#</a> required_types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureRequiredType" >SecureRequiredType</a>> values:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValue" >SecureValue</a>> errors:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueError" >SecureValueError</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> privacy_policy_url:flags.0?<a href="/type/string" >string</a> = <a href="/type/account.AuthorizationForm" >account.AuthorizationForm</a>; + +<a href="/constructor/account.sentEmailCode" >account.sentEmailCode</a>#811f854f email_pattern:<a href="/type/string" >string</a> length:<a href="/type/int" >int</a> = <a href="/type/account.SentEmailCode" >account.SentEmailCode</a>; + +<a href="/constructor/help.deepLinkInfoEmpty" >help.deepLinkInfoEmpty</a>#66afa166 = <a href="/type/help.DeepLinkInfo" >help.DeepLinkInfo</a>; +<a href="/constructor/help.deepLinkInfo" >help.deepLinkInfo</a>#6a4ee832 flags:<a href="/type/%23" >#</a> update_app:flags.0?true message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/help.DeepLinkInfo" >help.DeepLinkInfo</a>; + +<a href="/constructor/savedPhoneContact" >savedPhoneContact</a>#1142bd56 phone:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> date:<a href="/type/int" >int</a> = <a href="/type/SavedContact" >SavedContact</a>; + +<a href="/constructor/account.takeout" >account.takeout</a>#4dba4501 id:<a href="/type/long" >long</a> = <a href="/type/account.Takeout" >account.Takeout</a>; + +<a href="/constructor/passwordKdfAlgoUnknown" >passwordKdfAlgoUnknown</a>#d45ab096 = <a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</a>; +<a href="/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow" >passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</a>#3a912d4a salt1:<a href="/type/bytes" >bytes</a> salt2:<a href="/type/bytes" >bytes</a> g:<a href="/type/int" >int</a> p:<a href="/type/bytes" >bytes</a> = <a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</a>; + +<a href="/constructor/securePasswordKdfAlgoUnknown" >securePasswordKdfAlgoUnknown</a>#4a8537 = <a href="/type/SecurePasswordKdfAlgo" >SecurePasswordKdfAlgo</a>; +<a href="/constructor/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000" >securePasswordKdfAlgoPBKDF2HMACSHA512iter100000</a>#bbf2dda0 salt:<a href="/type/bytes" >bytes</a> = <a href="/type/SecurePasswordKdfAlgo" >SecurePasswordKdfAlgo</a>; +<a href="/constructor/securePasswordKdfAlgoSHA512" >securePasswordKdfAlgoSHA512</a>#86471d92 salt:<a href="/type/bytes" >bytes</a> = <a href="/type/SecurePasswordKdfAlgo" >SecurePasswordKdfAlgo</a>; + +<a href="/constructor/secureSecretSettings" >secureSecretSettings</a>#1527bcac secure_algo:<a href="/type/SecurePasswordKdfAlgo" >SecurePasswordKdfAlgo</a> secure_secret:<a href="/type/bytes" >bytes</a> secure_secret_id:<a href="/type/long" >long</a> = <a href="/type/SecureSecretSettings" >SecureSecretSettings</a>; + +<a href="/constructor/inputCheckPasswordEmpty" >inputCheckPasswordEmpty</a>#9880f658 = <a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a>; +<a href="/constructor/inputCheckPasswordSRP" >inputCheckPasswordSRP</a>#d27ff082 srp_id:<a href="/type/long" >long</a> A:<a href="/type/bytes" >bytes</a> M1:<a href="/type/bytes" >bytes</a> = <a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a>; + +<a href="/constructor/secureRequiredType" >secureRequiredType</a>#829d99da flags:<a href="/type/%23" >#</a> native_names:flags.0?true selfie_required:flags.1?true translation_required:flags.2?true type:<a href="/type/SecureValueType" >SecureValueType</a> = <a href="/type/SecureRequiredType" >SecureRequiredType</a>; +<a href="/constructor/secureRequiredTypeOneOf" >secureRequiredTypeOneOf</a>#27477b4 types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureRequiredType" >SecureRequiredType</a>> = <a href="/type/SecureRequiredType" >SecureRequiredType</a>; + +<a href="/constructor/help.passportConfigNotModified" >help.passportConfigNotModified</a>#bfb9f457 = <a href="/type/help.PassportConfig" >help.PassportConfig</a>; +<a href="/constructor/help.passportConfig" >help.passportConfig</a>#a098d6af hash:<a href="/type/int" >int</a> countries_langs:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/help.PassportConfig" >help.PassportConfig</a>; + +<a href="/constructor/inputAppEvent" >inputAppEvent</a>#1d1b1245 time:<a href="/type/double" >double</a> type:<a href="/type/string" >string</a> peer:<a href="/type/long" >long</a> data:<a href="/type/JSONValue" >JSONValue</a> = <a href="/type/InputAppEvent" >InputAppEvent</a>; + +<a href="/constructor/jsonObjectValue" >jsonObjectValue</a>#c0de1bd9 key:<a href="/type/string" >string</a> value:<a href="/type/JSONValue" >JSONValue</a> = <a href="/type/JSONObjectValue" >JSONObjectValue</a>; + +<a href="/constructor/jsonNull" >jsonNull</a>#3f6d7b68 = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonBool" >jsonBool</a>#c7345e6a value:<a href="/type/Bool" >Bool</a> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonNumber" >jsonNumber</a>#2be0dfa4 value:<a href="/type/double" >double</a> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonString" >jsonString</a>#b71e767a value:<a href="/type/string" >string</a> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonArray" >jsonArray</a>#f7444763 value:<a href="/type/Vector%20t" >Vector</a><<a href="/type/JSONValue" >JSONValue</a>> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonObject" >jsonObject</a>#99c1d49d value:<a href="/type/Vector%20t" >Vector</a><<a href="/type/JSONObjectValue" >JSONObjectValue</a>> = <a href="/type/JSONValue" >JSONValue</a>; + +<a href="/constructor/pageTableCell" >pageTableCell</a>#34566b6a flags:<a href="/type/%23" >#</a> header:flags.0?true align_center:flags.3?true align_right:flags.4?true valign_middle:flags.5?true valign_bottom:flags.6?true text:flags.7?<a href="/type/RichText" >RichText</a> colspan:flags.1?<a href="/type/int" >int</a> rowspan:flags.2?<a href="/type/int" >int</a> = <a href="/type/PageTableCell" >PageTableCell</a>; + +<a href="/constructor/pageTableRow" >pageTableRow</a>#e0c0c5e5 cells:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageTableCell" >PageTableCell</a>> = <a href="/type/PageTableRow" >PageTableRow</a>; + +<a href="/constructor/pageCaption" >pageCaption</a>#6f747657 text:<a href="/type/RichText" >RichText</a> credit:<a href="/type/RichText" >RichText</a> = <a href="/type/PageCaption" >PageCaption</a>; + +<a href="/constructor/pageListItemText" >pageListItemText</a>#b92fb6cd text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageListItem" >PageListItem</a>; +<a href="/constructor/pageListItemBlocks" >pageListItemBlocks</a>#25e073fc blocks:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> = <a href="/type/PageListItem" >PageListItem</a>; + +<a href="/constructor/pageListOrderedItemText" >pageListOrderedItemText</a>#5e068047 num:<a href="/type/string" >string</a> text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageListOrderedItem" >PageListOrderedItem</a>; +<a href="/constructor/pageListOrderedItemBlocks" >pageListOrderedItemBlocks</a>#98dd8936 num:<a href="/type/string" >string</a> blocks:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> = <a href="/type/PageListOrderedItem" >PageListOrderedItem</a>; + +<a href="/constructor/pageRelatedArticle" >pageRelatedArticle</a>#b390dc08 flags:<a href="/type/%23" >#</a> url:<a href="/type/string" >string</a> webpage_id:<a href="/type/long" >long</a> title:flags.0?<a href="/type/string" >string</a> description:flags.1?<a href="/type/string" >string</a> photo_id:flags.2?<a href="/type/long" >long</a> author:flags.3?<a href="/type/string" >string</a> published_date:flags.4?<a href="/type/int" >int</a> = <a href="/type/PageRelatedArticle" >PageRelatedArticle</a>; + +<a href="/constructor/page" >page</a>#98657f0d flags:<a href="/type/%23" >#</a> part:flags.0?true rtl:flags.1?true v2:flags.2?true url:<a href="/type/string" >string</a> blocks:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> photos:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Photo" >Photo</a>> documents:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> views:flags.3?<a href="/type/int" >int</a> = <a href="/type/Page" >Page</a>; + +<a href="/constructor/help.supportName" >help.supportName</a>#8c05f1c9 name:<a href="/type/string" >string</a> = <a href="/type/help.SupportName" >help.SupportName</a>; + +<a href="/constructor/help.userInfoEmpty" >help.userInfoEmpty</a>#f3ae2eed = <a href="/type/help.UserInfo" >help.UserInfo</a>; +<a href="/constructor/help.userInfo" >help.userInfo</a>#1eb3758 message:<a href="/type/string" >string</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> author:<a href="/type/string" >string</a> date:<a href="/type/int" >int</a> = <a href="/type/help.UserInfo" >help.UserInfo</a>; + +<a href="/constructor/pollAnswer" >pollAnswer</a>#6ca9c2e9 text:<a href="/type/string" >string</a> option:<a href="/type/bytes" >bytes</a> = <a href="/type/PollAnswer" >PollAnswer</a>; + +<a href="/constructor/poll" >poll</a>#86e18161 id:<a href="/type/long" >long</a> flags:<a href="/type/%23" >#</a> closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:<a href="/type/string" >string</a> answers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PollAnswer" >PollAnswer</a>> close_period:flags.4?<a href="/type/int" >int</a> close_date:flags.5?<a href="/type/int" >int</a> = <a href="/type/Poll" >Poll</a>; + +<a href="/constructor/pollAnswerVoters" >pollAnswerVoters</a>#3b6ddad2 flags:<a href="/type/%23" >#</a> chosen:flags.0?true correct:flags.1?true option:<a href="/type/bytes" >bytes</a> voters:<a href="/type/int" >int</a> = <a href="/type/PollAnswerVoters" >PollAnswerVoters</a>; + +<a href="/constructor/pollResults" >pollResults</a>#dcb82ea3 flags:<a href="/type/%23" >#</a> min:flags.0?true results:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/PollAnswerVoters" >PollAnswerVoters</a>> total_voters:flags.2?<a href="/type/int" >int</a> recent_voters:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> solution:flags.4?<a href="/type/string" >string</a> solution_entities:flags.4?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/PollResults" >PollResults</a>; + +<a href="/constructor/chatOnlines" >chatOnlines</a>#f041e250 onlines:<a href="/type/int" >int</a> = <a href="/type/ChatOnlines" >ChatOnlines</a>; + +<a href="/constructor/statsURL" >statsURL</a>#47a971e0 url:<a href="/type/string" >string</a> = <a href="/type/StatsURL" >StatsURL</a>; + +<a href="/constructor/chatAdminRights" >chatAdminRights</a>#5fb224d5 flags:<a href="/type/%23" >#</a> change_info:flags.0?true post_messages:flags.1?true edit_messages:flags.2?true delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true manage_call:flags.11?true other:flags.12?true = <a href="/type/ChatAdminRights" >ChatAdminRights</a>; + +<a href="/constructor/chatBannedRights" >chatBannedRights</a>#9f120418 flags:<a href="/type/%23" >#</a> view_messages:flags.0?true send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true invite_users:flags.15?true pin_messages:flags.17?true until_date:<a href="/type/int" >int</a> = <a href="/type/ChatBannedRights" >ChatBannedRights</a>; + +<a href="/constructor/inputWallPaper" >inputWallPaper</a>#e630b979 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputWallPaper" >InputWallPaper</a>; +<a href="/constructor/inputWallPaperSlug" >inputWallPaperSlug</a>#72091c80 slug:<a href="/type/string" >string</a> = <a href="/type/InputWallPaper" >InputWallPaper</a>; +<a href="/constructor/inputWallPaperNoFile" >inputWallPaperNoFile</a>#967a462e id:<a href="/type/long" >long</a> = <a href="/type/InputWallPaper" >InputWallPaper</a>; + +<a href="/constructor/account.wallPapersNotModified" >account.wallPapersNotModified</a>#1c199183 = <a href="/type/account.WallPapers" >account.WallPapers</a>; +<a href="/constructor/account.wallPapers" >account.wallPapers</a>#cdc3858c hash:<a href="/type/long" >long</a> wallpapers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/WallPaper" >WallPaper</a>> = <a href="/type/account.WallPapers" >account.WallPapers</a>; + +<a href="/constructor/codeSettings" >codeSettings</a>#debebe83 flags:<a href="/type/%23" >#</a> allow_flashcall:flags.0?true current_number:flags.1?true allow_app_hash:flags.4?true = <a href="/type/CodeSettings" >CodeSettings</a>; + +<a href="/constructor/wallPaperSettings" >wallPaperSettings</a>#1dc1bca4 flags:<a href="/type/%23" >#</a> blur:flags.1?true motion:flags.2?true background_color:flags.0?<a href="/type/int" >int</a> second_background_color:flags.4?<a href="/type/int" >int</a> third_background_color:flags.5?<a href="/type/int" >int</a> fourth_background_color:flags.6?<a href="/type/int" >int</a> intensity:flags.3?<a href="/type/int" >int</a> rotation:flags.4?<a href="/type/int" >int</a> = <a href="/type/WallPaperSettings" >WallPaperSettings</a>; + +<a href="/constructor/autoDownloadSettings" >autoDownloadSettings</a>#e04232f3 flags:<a href="/type/%23" >#</a> disabled:flags.0?true video_preload_large:flags.1?true audio_preload_next:flags.2?true phonecalls_less_data:flags.3?true photo_size_max:<a href="/type/int" >int</a> video_size_max:<a href="/type/int" >int</a> file_size_max:<a href="/type/int" >int</a> video_upload_maxbitrate:<a href="/type/int" >int</a> = <a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a>; + +<a href="/constructor/account.autoDownloadSettings" >account.autoDownloadSettings</a>#63cacf26 low:<a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a> medium:<a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a> high:<a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a> = <a href="/type/account.AutoDownloadSettings" >account.AutoDownloadSettings</a>; + +<a href="/constructor/emojiKeyword" >emojiKeyword</a>#d5b3b9f9 keyword:<a href="/type/string" >string</a> emoticons:<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> = <a href="/type/EmojiKeyword" >EmojiKeyword</a>; +<a href="/constructor/emojiKeywordDeleted" >emojiKeywordDeleted</a>#236df622 keyword:<a href="/type/string" >string</a> emoticons:<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> = <a href="/type/EmojiKeyword" >EmojiKeyword</a>; + +<a href="/constructor/emojiKeywordsDifference" >emojiKeywordsDifference</a>#5cc761bd lang_code:<a href="/type/string" >string</a> from_version:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> keywords:<a href="/type/Vector%20t" >Vector</a><<a href="/type/EmojiKeyword" >EmojiKeyword</a>> = <a href="/type/EmojiKeywordsDifference" >EmojiKeywordsDifference</a>; + +<a href="/constructor/emojiURL" >emojiURL</a>#a575739d url:<a href="/type/string" >string</a> = <a href="/type/EmojiURL" >EmojiURL</a>; + +<a href="/constructor/emojiLanguage" >emojiLanguage</a>#b3fb5361 lang_code:<a href="/type/string" >string</a> = <a href="/type/EmojiLanguage" >EmojiLanguage</a>; + +<a href="/constructor/folder" >folder</a>#ff544e65 flags:<a href="/type/%23" >#</a> autofill_new_broadcasts:flags.0?true autofill_public_groups:flags.1?true autofill_new_correspondents:flags.2?true id:<a href="/type/int" >int</a> title:<a href="/type/string" >string</a> photo:flags.3?<a href="/type/ChatPhoto" >ChatPhoto</a> = <a href="/type/Folder" >Folder</a>; + +<a href="/constructor/inputFolderPeer" >inputFolderPeer</a>#fbd2c296 peer:<a href="/type/InputPeer" >InputPeer</a> folder_id:<a href="/type/int" >int</a> = <a href="/type/InputFolderPeer" >InputFolderPeer</a>; + +<a href="/constructor/folderPeer" >folderPeer</a>#e9baa668 peer:<a href="/type/Peer" >Peer</a> folder_id:<a href="/type/int" >int</a> = <a href="/type/FolderPeer" >FolderPeer</a>; + +<a href="/constructor/messages.searchCounter" >messages.searchCounter</a>#e844ebff flags:<a href="/type/%23" >#</a> inexact:flags.1?true filter:<a href="/type/MessagesFilter" >MessagesFilter</a> count:<a href="/type/int" >int</a> = <a href="/type/messages.SearchCounter" >messages.SearchCounter</a>; + +<a href="/constructor/urlAuthResultRequest" >urlAuthResultRequest</a>#92d33a0e flags:<a href="/type/%23" >#</a> request_write_access:flags.0?true bot:<a href="/type/User" >User</a> domain:<a href="/type/string" >string</a> = <a href="/type/UrlAuthResult" >UrlAuthResult</a>; +<a href="/constructor/urlAuthResultAccepted" >urlAuthResultAccepted</a>#8f8c0e4e url:<a href="/type/string" >string</a> = <a href="/type/UrlAuthResult" >UrlAuthResult</a>; +<a href="/constructor/urlAuthResultDefault" >urlAuthResultDefault</a>#a9d6db1f = <a href="/type/UrlAuthResult" >UrlAuthResult</a>; + +<a href="/constructor/channelLocationEmpty" >channelLocationEmpty</a>#bfb5ad8b = <a href="/type/ChannelLocation" >ChannelLocation</a>; +<a href="/constructor/channelLocation" >channelLocation</a>#209b82db geo_point:<a href="/type/GeoPoint" >GeoPoint</a> address:<a href="/type/string" >string</a> = <a href="/type/ChannelLocation" >ChannelLocation</a>; + +<a href="/constructor/peerLocated" >peerLocated</a>#ca461b5d peer:<a href="/type/Peer" >Peer</a> expires:<a href="/type/int" >int</a> distance:<a href="/type/int" >int</a> = <a href="/type/PeerLocated" >PeerLocated</a>; +<a href="/constructor/peerSelfLocated" >peerSelfLocated</a>#f8ec284b expires:<a href="/type/int" >int</a> = <a href="/type/PeerLocated" >PeerLocated</a>; + +<a href="/constructor/restrictionReason" >restrictionReason</a>#d072acb4 platform:<a href="/type/string" >string</a> reason:<a href="/type/string" >string</a> text:<a href="/type/string" >string</a> = <a href="/type/RestrictionReason" >RestrictionReason</a>; + +<a href="/constructor/inputTheme" >inputTheme</a>#3c5693e9 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputTheme" >InputTheme</a>; +<a href="/constructor/inputThemeSlug" >inputThemeSlug</a>#f5890df1 slug:<a href="/type/string" >string</a> = <a href="/type/InputTheme" >InputTheme</a>; + +<a href="/constructor/theme" >theme</a>#e802b8dc flags:<a href="/type/%23" >#</a> creator:flags.0?true default:flags.1?true for_chat:flags.5?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> slug:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> document:flags.2?<a href="/type/Document" >Document</a> settings:flags.3?<a href="/type/ThemeSettings" >ThemeSettings</a> installs_count:flags.4?<a href="/type/int" >int</a> = <a href="/type/Theme" >Theme</a>; + +<a href="/constructor/account.themesNotModified" >account.themesNotModified</a>#f41eb622 = <a href="/type/account.Themes" >account.Themes</a>; +<a href="/constructor/account.themes" >account.themes</a>#9a3d8c6d hash:<a href="/type/long" >long</a> themes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Theme" >Theme</a>> = <a href="/type/account.Themes" >account.Themes</a>; + +<a href="/constructor/auth.loginToken" >auth.loginToken</a>#629f1980 expires:<a href="/type/int" >int</a> token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +<a href="/constructor/auth.loginTokenMigrateTo" >auth.loginTokenMigrateTo</a>#68e9916 dc_id:<a href="/type/int" >int</a> token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +<a href="/constructor/auth.loginTokenSuccess" >auth.loginTokenSuccess</a>#390d5c5e authorization:<a href="/type/auth.Authorization" >auth.Authorization</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; + +<a href="/constructor/account.contentSettings" >account.contentSettings</a>#57e28221 flags:<a href="/type/%23" >#</a> sensitive_enabled:flags.0?true sensitive_can_change:flags.1?true = <a href="/type/account.ContentSettings" >account.ContentSettings</a>; + +<a href="/constructor/messages.inactiveChats" >messages.inactiveChats</a>#a927fec5 dates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.InactiveChats" >messages.InactiveChats</a>; + +<a href="/constructor/baseThemeClassic" >baseThemeClassic</a>#c3a12462 = <a href="/type/BaseTheme" >BaseTheme</a>; +<a href="/constructor/baseThemeDay" >baseThemeDay</a>#fbd81688 = <a href="/type/BaseTheme" >BaseTheme</a>; +<a href="/constructor/baseThemeNight" >baseThemeNight</a>#b7b31ea8 = <a href="/type/BaseTheme" >BaseTheme</a>; +<a href="/constructor/baseThemeTinted" >baseThemeTinted</a>#6d5f77ee = <a href="/type/BaseTheme" >BaseTheme</a>; +<a href="/constructor/baseThemeArctic" >baseThemeArctic</a>#5b11125a = <a href="/type/BaseTheme" >BaseTheme</a>; + +<a href="/constructor/inputThemeSettings" >inputThemeSettings</a>#8fde504f flags:<a href="/type/%23" >#</a> message_colors_animated:flags.2?true base_theme:<a href="/type/BaseTheme" >BaseTheme</a> accent_color:<a href="/type/int" >int</a> outbox_accent_color:flags.3?<a href="/type/int" >int</a> message_colors:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> wallpaper:flags.1?<a href="/type/InputWallPaper" >InputWallPaper</a> wallpaper_settings:flags.1?<a href="/type/WallPaperSettings" >WallPaperSettings</a> = <a href="/type/InputThemeSettings" >InputThemeSettings</a>; + +<a href="/constructor/themeSettings" >themeSettings</a>#fa58b6d4 flags:<a href="/type/%23" >#</a> message_colors_animated:flags.2?true base_theme:<a href="/type/BaseTheme" >BaseTheme</a> accent_color:<a href="/type/int" >int</a> outbox_accent_color:flags.3?<a href="/type/int" >int</a> message_colors:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> wallpaper:flags.1?<a href="/type/WallPaper" >WallPaper</a> = <a href="/type/ThemeSettings" >ThemeSettings</a>; + +<a href="/constructor/webPageAttributeTheme" >webPageAttributeTheme</a>#54b56617 flags:<a href="/type/%23" >#</a> documents:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> settings:flags.1?<a href="/type/ThemeSettings" >ThemeSettings</a> = <a href="/type/WebPageAttribute" >WebPageAttribute</a>; + +<a href="/constructor/messageUserVote" >messageUserVote</a>#34d247b4 user_id:<a href="/type/long" >long</a> option:<a href="/type/bytes" >bytes</a> date:<a href="/type/int" >int</a> = <a href="/type/MessageUserVote" >MessageUserVote</a>; +<a href="/constructor/messageUserVoteInputOption" >messageUserVoteInputOption</a>#3ca5b0ec user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/MessageUserVote" >MessageUserVote</a>; +<a href="/constructor/messageUserVoteMultiple" >messageUserVoteMultiple</a>#8a65e557 user_id:<a href="/type/long" >long</a> options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> date:<a href="/type/int" >int</a> = <a href="/type/MessageUserVote" >MessageUserVote</a>; + +<a href="/constructor/messages.votesList" >messages.votesList</a>#823f649 flags:<a href="/type/%23" >#</a> count:<a href="/type/int" >int</a> votes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageUserVote" >MessageUserVote</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> next_offset:flags.0?<a href="/type/string" >string</a> = <a href="/type/messages.VotesList" >messages.VotesList</a>; + +<a href="/constructor/bankCardOpenUrl" >bankCardOpenUrl</a>#f568028a url:<a href="/type/string" >string</a> name:<a href="/type/string" >string</a> = <a href="/type/BankCardOpenUrl" >BankCardOpenUrl</a>; + +<a href="/constructor/payments.bankCardData" >payments.bankCardData</a>#3e24e573 title:<a href="/type/string" >string</a> open_urls:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BankCardOpenUrl" >BankCardOpenUrl</a>> = <a href="/type/payments.BankCardData" >payments.BankCardData</a>; + +<a href="/constructor/dialogFilter" >dialogFilter</a>#7438f7e8 flags:<a href="/type/%23" >#</a> contacts:flags.0?true non_contacts:flags.1?true groups:flags.2?true broadcasts:flags.3?true bots:flags.4?true exclude_muted:flags.11?true exclude_read:flags.12?true exclude_archived:flags.13?true id:<a href="/type/int" >int</a> title:<a href="/type/string" >string</a> emoticon:flags.25?<a href="/type/string" >string</a> pinned_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPeer" >InputPeer</a>> include_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPeer" >InputPeer</a>> exclude_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPeer" >InputPeer</a>> = <a href="/type/DialogFilter" >DialogFilter</a>; + +<a href="/constructor/dialogFilterSuggested" >dialogFilterSuggested</a>#77744d4a filter:<a href="/type/DialogFilter" >DialogFilter</a> description:<a href="/type/string" >string</a> = <a href="/type/DialogFilterSuggested" >DialogFilterSuggested</a>; + +<a href="/constructor/statsDateRangeDays" >statsDateRangeDays</a>#b637edaf min_date:<a href="/type/int" >int</a> max_date:<a href="/type/int" >int</a> = <a href="/type/StatsDateRangeDays" >StatsDateRangeDays</a>; + +<a href="/constructor/statsAbsValueAndPrev" >statsAbsValueAndPrev</a>#cb43acde current:<a href="/type/double" >double</a> previous:<a href="/type/double" >double</a> = <a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a>; + +<a href="/constructor/statsPercentValue" >statsPercentValue</a>#cbce2fe0 part:<a href="/type/double" >double</a> total:<a href="/type/double" >double</a> = <a href="/type/StatsPercentValue" >StatsPercentValue</a>; + +<a href="/constructor/statsGraphAsync" >statsGraphAsync</a>#4a27eb2d token:<a href="/type/string" >string</a> = <a href="/type/StatsGraph" >StatsGraph</a>; +<a href="/constructor/statsGraphError" >statsGraphError</a>#bedc9822 error:<a href="/type/string" >string</a> = <a href="/type/StatsGraph" >StatsGraph</a>; +<a href="/constructor/statsGraph" >statsGraph</a>#8ea464b6 flags:<a href="/type/%23" >#</a> json:<a href="/type/DataJSON" >DataJSON</a> zoom_token:flags.0?<a href="/type/string" >string</a> = <a href="/type/StatsGraph" >StatsGraph</a>; + +<a href="/constructor/messageInteractionCounters" >messageInteractionCounters</a>#ad4fc9bd msg_id:<a href="/type/int" >int</a> views:<a href="/type/int" >int</a> forwards:<a href="/type/int" >int</a> = <a href="/type/MessageInteractionCounters" >MessageInteractionCounters</a>; + +<a href="/constructor/stats.broadcastStats" >stats.broadcastStats</a>#bdf78394 period:<a href="/type/StatsDateRangeDays" >StatsDateRangeDays</a> followers:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> views_per_post:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> shares_per_post:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> enabled_notifications:<a href="/type/StatsPercentValue" >StatsPercentValue</a> growth_graph:<a href="/type/StatsGraph" >StatsGraph</a> followers_graph:<a href="/type/StatsGraph" >StatsGraph</a> mute_graph:<a href="/type/StatsGraph" >StatsGraph</a> top_hours_graph:<a href="/type/StatsGraph" >StatsGraph</a> interactions_graph:<a href="/type/StatsGraph" >StatsGraph</a> iv_interactions_graph:<a href="/type/StatsGraph" >StatsGraph</a> views_by_source_graph:<a href="/type/StatsGraph" >StatsGraph</a> new_followers_by_source_graph:<a href="/type/StatsGraph" >StatsGraph</a> languages_graph:<a href="/type/StatsGraph" >StatsGraph</a> recent_message_interactions:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageInteractionCounters" >MessageInteractionCounters</a>> = <a href="/type/stats.BroadcastStats" >stats.BroadcastStats</a>; + +<a href="/constructor/help.promoDataEmpty" >help.promoDataEmpty</a>#98f6ac75 expires:<a href="/type/int" >int</a> = <a href="/type/help.PromoData" >help.PromoData</a>; +<a href="/constructor/help.promoData" >help.promoData</a>#8c39793f flags:<a href="/type/%23" >#</a> proxy:flags.0?true expires:<a href="/type/int" >int</a> peer:<a href="/type/Peer" >Peer</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> psa_type:flags.1?<a href="/type/string" >string</a> psa_message:flags.2?<a href="/type/string" >string</a> = <a href="/type/help.PromoData" >help.PromoData</a>; + +<a href="/constructor/videoSize" >videoSize</a>#de33b094 flags:<a href="/type/%23" >#</a> type:<a href="/type/string" >string</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> video_start_ts:flags.0?<a href="/type/double" >double</a> = <a href="/type/VideoSize" >VideoSize</a>; + +<a href="/constructor/statsGroupTopPoster" >statsGroupTopPoster</a>#9d04af9b user_id:<a href="/type/long" >long</a> messages:<a href="/type/int" >int</a> avg_chars:<a href="/type/int" >int</a> = <a href="/type/StatsGroupTopPoster" >StatsGroupTopPoster</a>; + +<a href="/constructor/statsGroupTopAdmin" >statsGroupTopAdmin</a>#d7584c87 user_id:<a href="/type/long" >long</a> deleted:<a href="/type/int" >int</a> kicked:<a href="/type/int" >int</a> banned:<a href="/type/int" >int</a> = <a href="/type/StatsGroupTopAdmin" >StatsGroupTopAdmin</a>; + +<a href="/constructor/statsGroupTopInviter" >statsGroupTopInviter</a>#535f779d user_id:<a href="/type/long" >long</a> invitations:<a href="/type/int" >int</a> = <a href="/type/StatsGroupTopInviter" >StatsGroupTopInviter</a>; + +<a href="/constructor/stats.megagroupStats" >stats.megagroupStats</a>#ef7ff916 period:<a href="/type/StatsDateRangeDays" >StatsDateRangeDays</a> members:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> messages:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> viewers:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> posters:<a href="/type/StatsAbsValueAndPrev" >StatsAbsValueAndPrev</a> growth_graph:<a href="/type/StatsGraph" >StatsGraph</a> members_graph:<a href="/type/StatsGraph" >StatsGraph</a> new_members_by_source_graph:<a href="/type/StatsGraph" >StatsGraph</a> languages_graph:<a href="/type/StatsGraph" >StatsGraph</a> messages_graph:<a href="/type/StatsGraph" >StatsGraph</a> actions_graph:<a href="/type/StatsGraph" >StatsGraph</a> top_hours_graph:<a href="/type/StatsGraph" >StatsGraph</a> weekdays_graph:<a href="/type/StatsGraph" >StatsGraph</a> top_posters:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StatsGroupTopPoster" >StatsGroupTopPoster</a>> top_admins:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StatsGroupTopAdmin" >StatsGroupTopAdmin</a>> top_inviters:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StatsGroupTopInviter" >StatsGroupTopInviter</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/stats.MegagroupStats" >stats.MegagroupStats</a>; + +<a href="/constructor/globalPrivacySettings" >globalPrivacySettings</a>#bea2f424 flags:<a href="/type/%23" >#</a> archive_and_mute_new_noncontact_peers:flags.0?<a href="/type/Bool" >Bool</a> = <a href="/type/GlobalPrivacySettings" >GlobalPrivacySettings</a>; + +<a href="/constructor/help.countryCode" >help.countryCode</a>#4203c5ef flags:<a href="/type/%23" >#</a> country_code:<a href="/type/string" >string</a> prefixes:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> patterns:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> = <a href="/type/help.CountryCode" >help.CountryCode</a>; + +<a href="/constructor/help.country" >help.country</a>#c3878e23 flags:<a href="/type/%23" >#</a> hidden:flags.0?true iso2:<a href="/type/string" >string</a> default_name:<a href="/type/string" >string</a> name:flags.1?<a href="/type/string" >string</a> country_codes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/help.CountryCode" >help.CountryCode</a>> = <a href="/type/help.Country" >help.Country</a>; + +<a href="/constructor/help.countriesListNotModified" >help.countriesListNotModified</a>#93cc1f32 = <a href="/type/help.CountriesList" >help.CountriesList</a>; +<a href="/constructor/help.countriesList" >help.countriesList</a>#87d0759e countries:<a href="/type/Vector%20t" >Vector</a><<a href="/type/help.Country" >help.Country</a>> hash:<a href="/type/int" >int</a> = <a href="/type/help.CountriesList" >help.CountriesList</a>; + +<a href="/constructor/messageViews" >messageViews</a>#455b853d flags:<a href="/type/%23" >#</a> views:flags.0?<a href="/type/int" >int</a> forwards:flags.1?<a href="/type/int" >int</a> replies:flags.2?<a href="/type/MessageReplies" >MessageReplies</a> = <a href="/type/MessageViews" >MessageViews</a>; + +<a href="/constructor/messages.messageViews" >messages.messageViews</a>#b6c4f543 views:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageViews" >MessageViews</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.MessageViews" >messages.MessageViews</a>; + +<a href="/constructor/messages.discussionMessage" >messages.discussionMessage</a>#a6341782 flags:<a href="/type/%23" >#</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> max_id:flags.0?<a href="/type/int" >int</a> read_inbox_max_id:flags.1?<a href="/type/int" >int</a> read_outbox_max_id:flags.2?<a href="/type/int" >int</a> unread_count:<a href="/type/int" >int</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.DiscussionMessage" >messages.DiscussionMessage</a>; + +<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?true replies:<a href="/type/int" >int</a> replies_pts:<a href="/type/int" >int</a> recent_repliers:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/Peer" >Peer</a>> channel_id:flags.0?<a href="/type/long" >long</a> max_id:flags.2?<a href="/type/int" >int</a> read_max_id:flags.3?<a href="/type/int" >int</a> = <a href="/type/MessageReplies" >MessageReplies</a>; + +<a href="/constructor/peerBlocked" >peerBlocked</a>#e8fd8014 peer_id:<a href="/type/Peer" >Peer</a> date:<a href="/type/int" >int</a> = <a href="/type/PeerBlocked" >PeerBlocked</a>; + +<a href="/constructor/stats.messageStats" >stats.messageStats</a>#8999f295 views_graph:<a href="/type/StatsGraph" >StatsGraph</a> = <a href="/type/stats.MessageStats" >stats.MessageStats</a>; + +<a href="/constructor/groupCallDiscarded" >groupCallDiscarded</a>#7780bcb4 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> duration:<a href="/type/int" >int</a> = <a href="/type/GroupCall" >GroupCall</a>; +<a href="/constructor/groupCall" >groupCall</a>#d597650c flags:<a href="/type/%23" >#</a> join_muted:flags.1?true can_change_join_muted:flags.2?true join_date_asc:flags.6?true schedule_start_subscribed:flags.8?true can_start_video:flags.9?true record_video_active:flags.11?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> participants_count:<a href="/type/int" >int</a> title:flags.3?<a href="/type/string" >string</a> stream_dc_id:flags.4?<a href="/type/int" >int</a> record_start_date:flags.5?<a href="/type/int" >int</a> schedule_date:flags.7?<a href="/type/int" >int</a> unmuted_video_count:flags.10?<a href="/type/int" >int</a> unmuted_video_limit:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> = <a href="/type/GroupCall" >GroupCall</a>; + +<a href="/constructor/inputGroupCall" >inputGroupCall</a>#d8aa840f id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputGroupCall" >InputGroupCall</a>; + +<a href="/constructor/groupCallParticipant" >groupCallParticipant</a>#eba636fe flags:<a href="/type/%23" >#</a> muted:flags.0?true left:flags.1?true can_self_unmute:flags.2?true just_joined:flags.4?true versioned:flags.5?true min:flags.8?true muted_by_you:flags.9?true volume_by_admin:flags.10?true self:flags.12?true video_joined:flags.15?true peer:<a href="/type/Peer" >Peer</a> date:<a href="/type/int" >int</a> active_date:flags.3?<a href="/type/int" >int</a> source:<a href="/type/int" >int</a> volume:flags.7?<a href="/type/int" >int</a> about:flags.11?<a href="/type/string" >string</a> raise_hand_rating:flags.13?<a href="/type/long" >long</a> video:flags.6?<a href="/type/GroupCallParticipantVideo" >GroupCallParticipantVideo</a> presentation:flags.14?<a href="/type/GroupCallParticipantVideo" >GroupCallParticipantVideo</a> = <a href="/type/GroupCallParticipant" >GroupCallParticipant</a>; + +<a href="/constructor/phone.groupCall" >phone.groupCall</a>#9e727aad call:<a href="/type/GroupCall" >GroupCall</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/GroupCallParticipant" >GroupCallParticipant</a>> participants_next_offset:<a href="/type/string" >string</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/phone.GroupCall" >phone.GroupCall</a>; + +<a href="/constructor/phone.groupParticipants" >phone.groupParticipants</a>#f47751b6 count:<a href="/type/int" >int</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/GroupCallParticipant" >GroupCallParticipant</a>> next_offset:<a href="/type/string" >string</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> version:<a href="/type/int" >int</a> = <a href="/type/phone.GroupParticipants" >phone.GroupParticipants</a>; + +<a href="/constructor/inlineQueryPeerTypeSameBotPM" >inlineQueryPeerTypeSameBotPM</a>#3081ed9d = <a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a>; +<a href="/constructor/inlineQueryPeerTypePM" >inlineQueryPeerTypePM</a>#833c0fac = <a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a>; +<a href="/constructor/inlineQueryPeerTypeChat" >inlineQueryPeerTypeChat</a>#d766c50a = <a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a>; +<a href="/constructor/inlineQueryPeerTypeMegagroup" >inlineQueryPeerTypeMegagroup</a>#5ec4be43 = <a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a>; +<a href="/constructor/inlineQueryPeerTypeBroadcast" >inlineQueryPeerTypeBroadcast</a>#6334ee9a = <a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a>; + +<a href="/constructor/messages.historyImport" >messages.historyImport</a>#1662af0b id:<a href="/type/long" >long</a> = <a href="/type/messages.HistoryImport" >messages.HistoryImport</a>; + +<a href="/constructor/messages.historyImportParsed" >messages.historyImportParsed</a>#5e0fb7b9 flags:<a href="/type/%23" >#</a> pm:flags.0?true group:flags.1?true title:flags.2?<a href="/type/string" >string</a> = <a href="/type/messages.HistoryImportParsed" >messages.HistoryImportParsed</a>; + +<a href="/constructor/messages.affectedFoundMessages" >messages.affectedFoundMessages</a>#ef8d3e6c pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> offset:<a href="/type/int" >int</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.AffectedFoundMessages" >messages.AffectedFoundMessages</a>; + +<a href="/constructor/chatInviteImporter" >chatInviteImporter</a>#b5cd5f4 user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/ChatInviteImporter" >ChatInviteImporter</a>; + +<a href="/constructor/messages.exportedChatInvites" >messages.exportedChatInvites</a>#bdc62dcc count:<a href="/type/int" >int</a> invites:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ExportedChatInvite" >ExportedChatInvite</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ExportedChatInvites" >messages.ExportedChatInvites</a>; + +<a href="/constructor/messages.exportedChatInvite" >messages.exportedChatInvite</a>#1871be50 invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ExportedChatInvite" >messages.ExportedChatInvite</a>; +<a href="/constructor/messages.exportedChatInviteReplaced" >messages.exportedChatInviteReplaced</a>#222600ef invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> new_invite:<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ExportedChatInvite" >messages.ExportedChatInvite</a>; + +<a href="/constructor/messages.chatInviteImporters" >messages.chatInviteImporters</a>#81b6b00a count:<a href="/type/int" >int</a> importers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChatInviteImporter" >ChatInviteImporter</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ChatInviteImporters" >messages.ChatInviteImporters</a>; + +<a href="/constructor/chatAdminWithInvites" >chatAdminWithInvites</a>#f2ecef23 admin_id:<a href="/type/long" >long</a> invites_count:<a href="/type/int" >int</a> revoked_invites_count:<a href="/type/int" >int</a> = <a href="/type/ChatAdminWithInvites" >ChatAdminWithInvites</a>; + +<a href="/constructor/messages.chatAdminsWithInvites" >messages.chatAdminsWithInvites</a>#b69b72d7 admins:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChatAdminWithInvites" >ChatAdminWithInvites</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ChatAdminsWithInvites" >messages.ChatAdminsWithInvites</a>; + +<a href="/constructor/messages.checkedHistoryImportPeer" >messages.checkedHistoryImportPeer</a>#a24de717 confirm_text:<a href="/type/string" >string</a> = <a href="/type/messages.CheckedHistoryImportPeer" >messages.CheckedHistoryImportPeer</a>; + +<a href="/constructor/phone.joinAsPeers" >phone.joinAsPeers</a>#afe5623f peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Peer" >Peer</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/phone.JoinAsPeers" >phone.JoinAsPeers</a>; + +<a href="/constructor/phone.exportedGroupCallInvite" >phone.exportedGroupCallInvite</a>#204bd158 link:<a href="/type/string" >string</a> = <a href="/type/phone.ExportedGroupCallInvite" >phone.ExportedGroupCallInvite</a>; + +<a href="/constructor/groupCallParticipantVideoSourceGroup" >groupCallParticipantVideoSourceGroup</a>#dcb118b7 semantics:<a href="/type/string" >string</a> sources:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/GroupCallParticipantVideoSourceGroup" >GroupCallParticipantVideoSourceGroup</a>; + +<a href="/constructor/groupCallParticipantVideo" >groupCallParticipantVideo</a>#67753ac8 flags:<a href="/type/%23" >#</a> paused:flags.0?true endpoint:<a href="/type/string" >string</a> source_groups:<a href="/type/Vector%20t" >Vector</a><<a href="/type/GroupCallParticipantVideoSourceGroup" >GroupCallParticipantVideoSourceGroup</a>> audio_source:flags.1?<a href="/type/int" >int</a> = <a href="/type/GroupCallParticipantVideo" >GroupCallParticipantVideo</a>; + +<a href="/constructor/stickers.suggestedShortName" >stickers.suggestedShortName</a>#85fea03f short_name:<a href="/type/string" >string</a> = <a href="/type/stickers.SuggestedShortName" >stickers.SuggestedShortName</a>; + +<a href="/constructor/botCommandScopeDefault" >botCommandScopeDefault</a>#2f6cb2ab = <a href="/type/BotCommandScope" >BotCommandScope</a>; +<a href="/constructor/botCommandScopeUsers" >botCommandScopeUsers</a>#3c4f04d8 = <a href="/type/BotCommandScope" >BotCommandScope</a>; +<a href="/constructor/botCommandScopeChats" >botCommandScopeChats</a>#6fe1a881 = <a href="/type/BotCommandScope" >BotCommandScope</a>; +<a href="/constructor/botCommandScopeChatAdmins" >botCommandScopeChatAdmins</a>#b9aa606a = <a href="/type/BotCommandScope" >BotCommandScope</a>; +<a href="/constructor/botCommandScopePeer" >botCommandScopePeer</a>#db9d897d peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/BotCommandScope" >BotCommandScope</a>; +<a href="/constructor/botCommandScopePeerAdmins" >botCommandScopePeerAdmins</a>#3fd863d1 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/BotCommandScope" >BotCommandScope</a>; +<a href="/constructor/botCommandScopePeerUser" >botCommandScopePeerUser</a>#a1321f3 peer:<a href="/type/InputPeer" >InputPeer</a> user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/BotCommandScope" >BotCommandScope</a>; + +<a href="/constructor/account.resetPasswordFailedWait" >account.resetPasswordFailedWait</a>#e3779861 retry_date:<a href="/type/int" >int</a> = <a href="/type/account.ResetPasswordResult" >account.ResetPasswordResult</a>; +<a href="/constructor/account.resetPasswordRequestedWait" >account.resetPasswordRequestedWait</a>#e9effc7d until_date:<a href="/type/int" >int</a> = <a href="/type/account.ResetPasswordResult" >account.ResetPasswordResult</a>; +<a href="/constructor/account.resetPasswordOk" >account.resetPasswordOk</a>#e926d63e = <a href="/type/account.ResetPasswordResult" >account.ResetPasswordResult</a>; + +<a href="/constructor/chatTheme" >chatTheme</a>#ed0b5c33 emoticon:<a href="/type/string" >string</a> theme:<a href="/type/Theme" >Theme</a> dark_theme:<a href="/type/Theme" >Theme</a> = <a href="/type/ChatTheme" >ChatTheme</a>; + +<a href="/constructor/account.chatThemesNotModified" >account.chatThemesNotModified</a>#e011e1c4 = <a href="/type/account.ChatThemes" >account.ChatThemes</a>; +<a href="/constructor/account.chatThemes" >account.chatThemes</a>#fe4cbebd hash:<a href="/type/int" >int</a> themes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChatTheme" >ChatTheme</a>> = <a href="/type/account.ChatThemes" >account.ChatThemes</a>; + +<a href="/constructor/sponsoredMessage" >sponsoredMessage</a>#2a3c381f flags:<a href="/type/%23" >#</a> random_id:<a href="/type/bytes" >bytes</a> from_id:<a href="/type/Peer" >Peer</a> start_param:flags.0?<a href="/type/string" >string</a> message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/SponsoredMessage" >SponsoredMessage</a>; + +<a href="/constructor/messages.sponsoredMessages" >messages.sponsoredMessages</a>#65a4c7d5 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SponsoredMessage" >SponsoredMessage</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.SponsoredMessages" >messages.SponsoredMessages</a>; + +---functions--- + +<a href="/method/invokeAfterMsg" >invokeAfterMsg</a>#cb9f372d {X:Type} msg_id:<a href="/type/long" >long</a> query:!X = X; +<a href="/method/invokeAfterMsgs" >invokeAfterMsgs</a>#3dc4b4f0 {X:Type} msg_ids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> query:!X = X; +<a href="/method/initConnection" >initConnection</a>#c1cd5ea9 {X:Type} flags:<a href="/type/%23" >#</a> api_id:<a href="/type/int" >int</a> device_model:<a href="/type/string" >string</a> system_version:<a href="/type/string" >string</a> app_version:<a href="/type/string" >string</a> system_lang_code:<a href="/type/string" >string</a> lang_pack:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> proxy:flags.0?<a href="/type/InputClientProxy" >InputClientProxy</a> params:flags.1?<a href="/type/JSONValue" >JSONValue</a> query:!X = X; +<a href="/method/invokeWithLayer" >invokeWithLayer</a>#da9b0d0d {X:Type} layer:<a href="/type/int" >int</a> query:!X = X; +<a href="/method/invokeWithoutUpdates" >invokeWithoutUpdates</a>#bf9459b7 {X:Type} query:!X = X; +<a href="/method/invokeWithMessagesRange" >invokeWithMessagesRange</a>#365275f2 {X:Type} range:<a href="/type/MessageRange" >MessageRange</a> query:!X = X; +<a href="/method/invokeWithTakeout" >invokeWithTakeout</a>#aca9fd2e {X:Type} takeout_id:<a href="/type/long" >long</a> query:!X = X; + +<a href="/method/auth.sendCode" >auth.sendCode</a>#a677244f phone_number:<a href="/type/string" >string</a> api_id:<a href="/type/int" >int</a> api_hash:<a href="/type/string" >string</a> settings:<a href="/type/CodeSettings" >CodeSettings</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>; +<a href="/method/auth.signUp" >auth.signUp</a>#80eee427 phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/method/auth.signIn" >auth.signIn</a>#bcd51581 phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> phone_code:<a href="/type/string" >string</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/method/auth.logOut" >auth.logOut</a>#5717da40 = <a href="/type/Bool" >Bool</a>; +<a href="/method/auth.resetAuthorizations" >auth.resetAuthorizations</a>#9fab0d1a = <a href="/type/Bool" >Bool</a>; +<a href="/method/auth.exportAuthorization" >auth.exportAuthorization</a>#e5bfffcd dc_id:<a href="/type/int" >int</a> = <a href="/type/auth.ExportedAuthorization" >auth.ExportedAuthorization</a>; +<a href="/method/auth.importAuthorization" >auth.importAuthorization</a>#a57a7dad id:<a href="/type/long" >long</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/method/auth.bindTempAuthKey" >auth.bindTempAuthKey</a>#cdd42a05 perm_auth_key_id:<a href="/type/long" >long</a> nonce:<a href="/type/long" >long</a> expires_at:<a href="/type/int" >int</a> encrypted_message:<a href="/type/bytes" >bytes</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/auth.importBotAuthorization" >auth.importBotAuthorization</a>#67a3ff2c flags:<a href="/type/int" >int</a> api_id:<a href="/type/int" >int</a> api_hash:<a href="/type/string" >string</a> bot_auth_token:<a href="/type/string" >string</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/method/auth.checkPassword" >auth.checkPassword</a>#d18b4d16 password:<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/method/auth.requestPasswordRecovery" >auth.requestPasswordRecovery</a>#d897bc66 = <a href="/type/auth.PasswordRecovery" >auth.PasswordRecovery</a>; +<a href="/method/auth.recoverPassword" >auth.recoverPassword</a>#37096c70 flags:<a href="/type/%23" >#</a> code:<a href="/type/string" >string</a> new_settings:flags.0?<a href="/type/account.PasswordInputSettings" >account.PasswordInputSettings</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/method/auth.resendCode" >auth.resendCode</a>#3ef1a9bf phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>; +<a href="/method/auth.cancelCode" >auth.cancelCode</a>#1f040578 phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/auth.dropTempAuthKeys" >auth.dropTempAuthKeys</a>#8e48a188 except_auth_keys:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/auth.exportLoginToken" >auth.exportLoginToken</a>#b7e085fe api_id:<a href="/type/int" >int</a> api_hash:<a href="/type/string" >string</a> except_ids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +<a href="/method/auth.importLoginToken" >auth.importLoginToken</a>#95ac5ce4 token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +<a href="/method/auth.acceptLoginToken" >auth.acceptLoginToken</a>#e894ad4d token:<a href="/type/bytes" >bytes</a> = <a href="/type/Authorization" >Authorization</a>; +<a href="/method/auth.checkRecoveryPassword" >auth.checkRecoveryPassword</a>#d36bf79 code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; + +<a href="/method/account.registerDevice" >account.registerDevice</a>#ec86017a flags:<a href="/type/%23" >#</a> no_muted:flags.0?true token_type:<a href="/type/int" >int</a> token:<a href="/type/string" >string</a> app_sandbox:<a href="/type/Bool" >Bool</a> secret:<a href="/type/bytes" >bytes</a> other_uids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.unregisterDevice" >account.unregisterDevice</a>#6a0d3206 token_type:<a href="/type/int" >int</a> token:<a href="/type/string" >string</a> other_uids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.updateNotifySettings" >account.updateNotifySettings</a>#84be5b93 peer:<a href="/type/InputNotifyPeer" >InputNotifyPeer</a> settings:<a href="/type/InputPeerNotifySettings" >InputPeerNotifySettings</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getNotifySettings" >account.getNotifySettings</a>#12b3ad31 peer:<a href="/type/InputNotifyPeer" >InputNotifyPeer</a> = <a href="/type/PeerNotifySettings" >PeerNotifySettings</a>; +<a href="/method/account.resetNotifySettings" >account.resetNotifySettings</a>#db7e1747 = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.updateProfile" >account.updateProfile</a>#78515775 flags:<a href="/type/%23" >#</a> first_name:flags.0?<a href="/type/string" >string</a> last_name:flags.1?<a href="/type/string" >string</a> about:flags.2?<a href="/type/string" >string</a> = <a href="/type/User" >User</a>; +<a href="/method/account.updateStatus" >account.updateStatus</a>#6628562c offline:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getWallPapers" >account.getWallPapers</a>#7967d36 hash:<a href="/type/long" >long</a> = <a href="/type/account.WallPapers" >account.WallPapers</a>; +<a href="/method/account.reportPeer" >account.reportPeer</a>#c5ba3d86 peer:<a href="/type/InputPeer" >InputPeer</a> reason:<a href="/type/ReportReason" >ReportReason</a> message:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.checkUsername" >account.checkUsername</a>#2714d86c username:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.updateUsername" >account.updateUsername</a>#3e0bdd7c username:<a href="/type/string" >string</a> = <a href="/type/User" >User</a>; +<a href="/method/account.getPrivacy" >account.getPrivacy</a>#dadbc950 key:<a href="/type/InputPrivacyKey" >InputPrivacyKey</a> = <a href="/type/account.PrivacyRules" >account.PrivacyRules</a>; +<a href="/method/account.setPrivacy" >account.setPrivacy</a>#c9f81ce8 key:<a href="/type/InputPrivacyKey" >InputPrivacyKey</a> rules:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPrivacyRule" >InputPrivacyRule</a>> = <a href="/type/account.PrivacyRules" >account.PrivacyRules</a>; +<a href="/method/account.deleteAccount" >account.deleteAccount</a>#418d4e0b reason:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getAccountTTL" >account.getAccountTTL</a>#8fc711d = <a href="/type/AccountDaysTTL" >AccountDaysTTL</a>; +<a href="/method/account.setAccountTTL" >account.setAccountTTL</a>#2442485e ttl:<a href="/type/AccountDaysTTL" >AccountDaysTTL</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.sendChangePhoneCode" >account.sendChangePhoneCode</a>#82574ae5 phone_number:<a href="/type/string" >string</a> settings:<a href="/type/CodeSettings" >CodeSettings</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>; +<a href="/method/account.changePhone" >account.changePhone</a>#70c32edb phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> phone_code:<a href="/type/string" >string</a> = <a href="/type/User" >User</a>; +<a href="/method/account.updateDeviceLocked" >account.updateDeviceLocked</a>#38df3532 period:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getAuthorizations" >account.getAuthorizations</a>#e320c158 = <a href="/type/account.Authorizations" >account.Authorizations</a>; +<a href="/method/account.resetAuthorization" >account.resetAuthorization</a>#df77f3bc hash:<a href="/type/long" >long</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getPassword" >account.getPassword</a>#548a30f5 = <a href="/type/account.Password" >account.Password</a>; +<a href="/method/account.getPasswordSettings" >account.getPasswordSettings</a>#9cd4eaf9 password:<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> = <a href="/type/account.PasswordSettings" >account.PasswordSettings</a>; +<a href="/method/account.updatePasswordSettings" >account.updatePasswordSettings</a>#a59b102f password:<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> new_settings:<a href="/type/account.PasswordInputSettings" >account.PasswordInputSettings</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.sendConfirmPhoneCode" >account.sendConfirmPhoneCode</a>#1b3faa88 hash:<a href="/type/string" >string</a> settings:<a href="/type/CodeSettings" >CodeSettings</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>; +<a href="/method/account.confirmPhone" >account.confirmPhone</a>#5f2178c3 phone_code_hash:<a href="/type/string" >string</a> phone_code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getTmpPassword" >account.getTmpPassword</a>#449e0b51 password:<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> period:<a href="/type/int" >int</a> = <a href="/type/account.TmpPassword" >account.TmpPassword</a>; +<a href="/method/account.getWebAuthorizations" >account.getWebAuthorizations</a>#182e6d6f = <a href="/type/account.WebAuthorizations" >account.WebAuthorizations</a>; +<a href="/method/account.resetWebAuthorization" >account.resetWebAuthorization</a>#2d01b9ef hash:<a href="/type/long" >long</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.resetWebAuthorizations" >account.resetWebAuthorizations</a>#682d2594 = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getAllSecureValues" >account.getAllSecureValues</a>#b288bc7d = <a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValue" >SecureValue</a>>; +<a href="/method/account.getSecureValue" >account.getSecureValue</a>#73665bc2 types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueType" >SecureValueType</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValue" >SecureValue</a>>; +<a href="/method/account.saveSecureValue" >account.saveSecureValue</a>#899fe31d value:<a href="/type/InputSecureValue" >InputSecureValue</a> secure_secret_id:<a href="/type/long" >long</a> = <a href="/type/SecureValue" >SecureValue</a>; +<a href="/method/account.deleteSecureValue" >account.deleteSecureValue</a>#b880bc4b types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueType" >SecureValueType</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getAuthorizationForm" >account.getAuthorizationForm</a>#a929597a bot_id:<a href="/type/long" >long</a> scope:<a href="/type/string" >string</a> public_key:<a href="/type/string" >string</a> = <a href="/type/account.AuthorizationForm" >account.AuthorizationForm</a>; +<a href="/method/account.acceptAuthorization" >account.acceptAuthorization</a>#f3ed4c73 bot_id:<a href="/type/long" >long</a> scope:<a href="/type/string" >string</a> public_key:<a href="/type/string" >string</a> value_hashes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueHash" >SecureValueHash</a>> credentials:<a href="/type/SecureCredentialsEncrypted" >SecureCredentialsEncrypted</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.sendVerifyPhoneCode" >account.sendVerifyPhoneCode</a>#a5a356f9 phone_number:<a href="/type/string" >string</a> settings:<a href="/type/CodeSettings" >CodeSettings</a> = <a href="/type/auth.SentCode" >auth.SentCode</a>; +<a href="/method/account.verifyPhone" >account.verifyPhone</a>#4dd3a7f6 phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> phone_code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.sendVerifyEmailCode" >account.sendVerifyEmailCode</a>#7011509f email:<a href="/type/string" >string</a> = <a href="/type/account.SentEmailCode" >account.SentEmailCode</a>; +<a href="/method/account.verifyEmail" >account.verifyEmail</a>#ecba39db email:<a href="/type/string" >string</a> code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.initTakeoutSession" >account.initTakeoutSession</a>#f05b4804 flags:<a href="/type/%23" >#</a> contacts:flags.0?true message_users:flags.1?true message_chats:flags.2?true message_megagroups:flags.3?true message_channels:flags.4?true files:flags.5?true file_max_size:flags.5?<a href="/type/int" >int</a> = <a href="/type/account.Takeout" >account.Takeout</a>; +<a href="/method/account.finishTakeoutSession" >account.finishTakeoutSession</a>#1d2652ee flags:<a href="/type/%23" >#</a> success:flags.0?true = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.confirmPasswordEmail" >account.confirmPasswordEmail</a>#8fdf1920 code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.resendPasswordEmail" >account.resendPasswordEmail</a>#7a7f2a15 = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.cancelPasswordEmail" >account.cancelPasswordEmail</a>#c1cbd5b6 = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getContactSignUpNotification" >account.getContactSignUpNotification</a>#9f07c728 = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.setContactSignUpNotification" >account.setContactSignUpNotification</a>#cff43f61 silent:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getNotifyExceptions" >account.getNotifyExceptions</a>#53577479 flags:<a href="/type/%23" >#</a> compare_sound:flags.1?true peer:flags.0?<a href="/type/InputNotifyPeer" >InputNotifyPeer</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/account.getWallPaper" >account.getWallPaper</a>#fc8ddbea wallpaper:<a href="/type/InputWallPaper" >InputWallPaper</a> = <a href="/type/WallPaper" >WallPaper</a>; +<a href="/method/account.uploadWallPaper" >account.uploadWallPaper</a>#dd853661 file:<a href="/type/InputFile" >InputFile</a> mime_type:<a href="/type/string" >string</a> settings:<a href="/type/WallPaperSettings" >WallPaperSettings</a> = <a href="/type/WallPaper" >WallPaper</a>; +<a href="/method/account.saveWallPaper" >account.saveWallPaper</a>#6c5a5b37 wallpaper:<a href="/type/InputWallPaper" >InputWallPaper</a> unsave:<a href="/type/Bool" >Bool</a> settings:<a href="/type/WallPaperSettings" >WallPaperSettings</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.installWallPaper" >account.installWallPaper</a>#feed5769 wallpaper:<a href="/type/InputWallPaper" >InputWallPaper</a> settings:<a href="/type/WallPaperSettings" >WallPaperSettings</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.resetWallPapers" >account.resetWallPapers</a>#bb3b9804 = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getAutoDownloadSettings" >account.getAutoDownloadSettings</a>#56da0b3f = <a href="/type/account.AutoDownloadSettings" >account.AutoDownloadSettings</a>; +<a href="/method/account.saveAutoDownloadSettings" >account.saveAutoDownloadSettings</a>#76f36233 flags:<a href="/type/%23" >#</a> low:flags.0?true high:flags.1?true settings:<a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.uploadTheme" >account.uploadTheme</a>#1c3db333 flags:<a href="/type/%23" >#</a> file:<a href="/type/InputFile" >InputFile</a> thumb:flags.0?<a href="/type/InputFile" >InputFile</a> file_name:<a href="/type/string" >string</a> mime_type:<a href="/type/string" >string</a> = <a href="/type/Document" >Document</a>; +<a href="/method/account.createTheme" >account.createTheme</a>#8432c21f flags:<a href="/type/%23" >#</a> slug:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> document:flags.2?<a href="/type/InputDocument" >InputDocument</a> settings:flags.3?<a href="/type/InputThemeSettings" >InputThemeSettings</a> = <a href="/type/Theme" >Theme</a>; +<a href="/method/account.updateTheme" >account.updateTheme</a>#5cb367d5 flags:<a href="/type/%23" >#</a> format:<a href="/type/string" >string</a> theme:<a href="/type/InputTheme" >InputTheme</a> slug:flags.0?<a href="/type/string" >string</a> title:flags.1?<a href="/type/string" >string</a> document:flags.2?<a href="/type/InputDocument" >InputDocument</a> settings:flags.3?<a href="/type/InputThemeSettings" >InputThemeSettings</a> = <a href="/type/Theme" >Theme</a>; +<a href="/method/account.saveTheme" >account.saveTheme</a>#f257106c theme:<a href="/type/InputTheme" >InputTheme</a> unsave:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.installTheme" >account.installTheme</a>#7ae43737 flags:<a href="/type/%23" >#</a> dark:flags.0?true format:flags.1?<a href="/type/string" >string</a> theme:flags.1?<a href="/type/InputTheme" >InputTheme</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getTheme" >account.getTheme</a>#8d9d742b format:<a href="/type/string" >string</a> theme:<a href="/type/InputTheme" >InputTheme</a> document_id:<a href="/type/long" >long</a> = <a href="/type/Theme" >Theme</a>; +<a href="/method/account.getThemes" >account.getThemes</a>#7206e458 format:<a href="/type/string" >string</a> hash:<a href="/type/long" >long</a> = <a href="/type/account.Themes" >account.Themes</a>; +<a href="/method/account.setContentSettings" >account.setContentSettings</a>#b574b16b flags:<a href="/type/%23" >#</a> sensitive_enabled:flags.0?true = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getContentSettings" >account.getContentSettings</a>#8b9b4dae = <a href="/type/account.ContentSettings" >account.ContentSettings</a>; +<a href="/method/account.getMultiWallPapers" >account.getMultiWallPapers</a>#65ad71dc wallpapers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputWallPaper" >InputWallPaper</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/WallPaper" >WallPaper</a>>; +<a href="/method/account.getGlobalPrivacySettings" >account.getGlobalPrivacySettings</a>#eb2b4cf6 = <a href="/type/GlobalPrivacySettings" >GlobalPrivacySettings</a>; +<a href="/method/account.setGlobalPrivacySettings" >account.setGlobalPrivacySettings</a>#1edaaac2 settings:<a href="/type/GlobalPrivacySettings" >GlobalPrivacySettings</a> = <a href="/type/GlobalPrivacySettings" >GlobalPrivacySettings</a>; +<a href="/method/account.reportProfilePhoto" >account.reportProfilePhoto</a>#fa8cc6f5 peer:<a href="/type/InputPeer" >InputPeer</a> photo_id:<a href="/type/InputPhoto" >InputPhoto</a> reason:<a href="/type/ReportReason" >ReportReason</a> message:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.resetPassword" >account.resetPassword</a>#9308ce1b = <a href="/type/account.ResetPasswordResult" >account.ResetPasswordResult</a>; +<a href="/method/account.declinePasswordReset" >account.declinePasswordReset</a>#4c9409f6 = <a href="/type/Bool" >Bool</a>; +<a href="/method/account.getChatThemes" >account.getChatThemes</a>#d6d71d7b hash:<a href="/type/int" >int</a> = <a href="/type/account.ChatThemes" >account.ChatThemes</a>; + +<a href="/method/users.getUsers" >users.getUsers</a>#d91a548 id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputUser" >InputUser</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>>; +<a href="/method/users.getFullUser" >users.getFullUser</a>#ca30a5b1 id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/UserFull" >UserFull</a>; +<a href="/method/users.setSecureValueErrors" >users.setSecureValueErrors</a>#90c894b5 id:<a href="/type/InputUser" >InputUser</a> errors:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueError" >SecureValueError</a>> = <a href="/type/Bool" >Bool</a>; + +<a href="/method/contacts.getContactIDs" >contacts.getContactIDs</a>#7adc669d hash:<a href="/type/long" >long</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>>; +<a href="/method/contacts.getStatuses" >contacts.getStatuses</a>#c4a353ee = <a href="/type/Vector%20t" >Vector</a><<a href="/type/ContactStatus" >ContactStatus</a>>; +<a href="/method/contacts.getContacts" >contacts.getContacts</a>#5dd69e12 hash:<a href="/type/long" >long</a> = <a href="/type/contacts.Contacts" >contacts.Contacts</a>; +<a href="/method/contacts.importContacts" >contacts.importContacts</a>#2c800be5 contacts:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputContact" >InputContact</a>> = <a href="/type/contacts.ImportedContacts" >contacts.ImportedContacts</a>; +<a href="/method/contacts.deleteContacts" >contacts.deleteContacts</a>#96a0e00 id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputUser" >InputUser</a>> = <a href="/type/Updates" >Updates</a>; +<a href="/method/contacts.deleteByPhones" >contacts.deleteByPhones</a>#1013fd9e phones:<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/contacts.block" >contacts.block</a>#68cc1411 id:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/contacts.unblock" >contacts.unblock</a>#bea65d50 id:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/contacts.getBlocked" >contacts.getBlocked</a>#f57c350f offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/contacts.Blocked" >contacts.Blocked</a>; +<a href="/method/contacts.search" >contacts.search</a>#11f812d8 q:<a href="/type/string" >string</a> limit:<a href="/type/int" >int</a> = <a href="/type/contacts.Found" >contacts.Found</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>; +<a href="/method/contacts.getTopPeers" >contacts.getTopPeers</a>#973478b6 flags:<a href="/type/%23" >#</a> correspondents:flags.0?true bots_pm:flags.1?true bots_inline:flags.2?true phone_calls:flags.3?true forward_users:flags.4?true forward_chats:flags.5?true groups:flags.10?true channels:flags.15?true 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>; +<a href="/method/contacts.resetTopPeerRating" >contacts.resetTopPeerRating</a>#1ae373ac category:<a href="/type/TopPeerCategory" >TopPeerCategory</a> peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/contacts.resetSaved" >contacts.resetSaved</a>#879537f1 = <a href="/type/Bool" >Bool</a>; +<a href="/method/contacts.getSaved" >contacts.getSaved</a>#82f1e39f = <a href="/type/Vector%20t" >Vector</a><<a href="/type/SavedContact" >SavedContact</a>>; +<a href="/method/contacts.toggleTopPeers" >contacts.toggleTopPeers</a>#8514bdda enabled:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/contacts.addContact" >contacts.addContact</a>#e8f463d0 flags:<a href="/type/%23" >#</a> add_phone_privacy_exception:flags.0?true id:<a href="/type/InputUser" >InputUser</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> phone:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/contacts.acceptContact" >contacts.acceptContact</a>#f831a20f id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/contacts.getLocated" >contacts.getLocated</a>#d348bc44 flags:<a href="/type/%23" >#</a> background:flags.1?true geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> self_expires:flags.0?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/contacts.blockFromReplies" >contacts.blockFromReplies</a>#29a8962c flags:<a href="/type/%23" >#</a> delete_message:flags.0?true delete_history:flags.1?true report_spam:flags.2?true msg_id:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; + +<a href="/method/messages.getMessages" >messages.getMessages</a>#63c66506 id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputMessage" >InputMessage</a>> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/messages.getDialogs" >messages.getDialogs</a>#a0f4cb4f flags:<a href="/type/%23" >#</a> exclude_pinned:flags.0?true folder_id:flags.1?<a href="/type/int" >int</a> offset_date:<a href="/type/int" >int</a> offset_id:<a href="/type/int" >int</a> offset_peer:<a href="/type/InputPeer" >InputPeer</a> limit:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Dialogs" >messages.Dialogs</a>; +<a href="/method/messages.getHistory" >messages.getHistory</a>#4423e6c5 peer:<a href="/type/InputPeer" >InputPeer</a> offset_id:<a href="/type/int" >int</a> offset_date:<a href="/type/int" >int</a> add_offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> max_id:<a href="/type/int" >int</a> min_id:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/messages.search" >messages.search</a>#a0fda762 flags:<a href="/type/%23" >#</a> peer:<a href="/type/InputPeer" >InputPeer</a> q:<a href="/type/string" >string</a> from_id:flags.0?<a href="/type/InputPeer" >InputPeer</a> top_msg_id:flags.1?<a href="/type/int" >int</a> filter:<a href="/type/MessagesFilter" >MessagesFilter</a> min_date:<a href="/type/int" >int</a> max_date:<a href="/type/int" >int</a> offset_id:<a href="/type/int" >int</a> add_offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> max_id:<a href="/type/int" >int</a> min_id:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/messages.readHistory" >messages.readHistory</a>#e306d3a peer:<a href="/type/InputPeer" >InputPeer</a> max_id:<a href="/type/int" >int</a> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>; +<a href="/method/messages.deleteHistory" >messages.deleteHistory</a>#1c015b09 flags:<a href="/type/%23" >#</a> just_clear:flags.0?true revoke:flags.1?true peer:<a href="/type/InputPeer" >InputPeer</a> max_id:<a href="/type/int" >int</a> = <a href="/type/messages.AffectedHistory" >messages.AffectedHistory</a>; +<a href="/method/messages.deleteMessages" >messages.deleteMessages</a>#e58e95d2 flags:<a href="/type/%23" >#</a> revoke:flags.0?true id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>; +<a href="/method/messages.receivedMessages" >messages.receivedMessages</a>#5a954c0 max_id:<a href="/type/int" >int</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/ReceivedNotifyMessage" >ReceivedNotifyMessage</a>>; +<a href="/method/messages.setTyping" >messages.setTyping</a>#58943ee2 flags:<a href="/type/%23" >#</a> peer:<a href="/type/InputPeer" >InputPeer</a> top_msg_id:flags.0?<a href="/type/int" >int</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.sendMessage" >messages.sendMessage</a>#520c3870 flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> random_id:<a href="/type/long" >long</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.sendMedia" >messages.sendMedia</a>#3491eba9 flags:<a href="/type/%23" >#</a> silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> media:<a href="/type/InputMedia" >InputMedia</a> message:<a href="/type/string" >string</a> random_id:<a href="/type/long" >long</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.forwardMessages" >messages.forwardMessages</a>#d9fee60e flags:<a href="/type/%23" >#</a> silent:flags.5?true background:flags.6?true with_my_score:flags.8?true drop_author:flags.11?true drop_media_captions:flags.12?true from_peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> random_id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> to_peer:<a href="/type/InputPeer" >InputPeer</a> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.reportSpam" >messages.reportSpam</a>#cf1592db peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getPeerSettings" >messages.getPeerSettings</a>#3672e09c peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/PeerSettings" >PeerSettings</a>; +<a href="/method/messages.report" >messages.report</a>#8953ab4e peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> reason:<a href="/type/ReportReason" >ReportReason</a> message:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getChats" >messages.getChats</a>#49e9528f id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/messages.Chats" >messages.Chats</a>; +<a href="/method/messages.getFullChat" >messages.getFullChat</a>#aeb00b34 chat_id:<a href="/type/long" >long</a> = <a href="/type/messages.ChatFull" >messages.ChatFull</a>; +<a href="/method/messages.editChatTitle" >messages.editChatTitle</a>#73783ffd chat_id:<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.editChatPhoto" >messages.editChatPhoto</a>#35ddd674 chat_id:<a href="/type/long" >long</a> photo:<a href="/type/InputChatPhoto" >InputChatPhoto</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.addChatUser" >messages.addChatUser</a>#f24753e3 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/InputUser" >InputUser</a> fwd_limit:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.deleteChatUser" >messages.deleteChatUser</a>#a2185cab flags:<a href="/type/%23" >#</a> revoke_history:flags.0?true chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.createChat" >messages.createChat</a>#9cb126e users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputUser" >InputUser</a>> title:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getDhConfig" >messages.getDhConfig</a>#26cf8950 version:<a href="/type/int" >int</a> random_length:<a href="/type/int" >int</a> = <a href="/type/messages.DhConfig" >messages.DhConfig</a>; +<a href="/method/messages.requestEncryption" >messages.requestEncryption</a>#f64daf43 user_id:<a href="/type/InputUser" >InputUser</a> random_id:<a href="/type/int" >int</a> g_a:<a href="/type/bytes" >bytes</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/method/messages.acceptEncryption" >messages.acceptEncryption</a>#3dbc0415 peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> g_b:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/method/messages.discardEncryption" >messages.discardEncryption</a>#f393aea0 flags:<a href="/type/%23" >#</a> delete_history:flags.0?true chat_id:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.setEncryptedTyping" >messages.setEncryptedTyping</a>#791451ed peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> typing:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.readEncryptedHistory" >messages.readEncryptedHistory</a>#7f4b690a peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> max_date:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.sendEncrypted" >messages.sendEncrypted</a>#44fa7a15 flags:<a href="/type/%23" >#</a> silent:flags.0?true peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> random_id:<a href="/type/long" >long</a> data:<a href="/type/bytes" >bytes</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>; +<a href="/method/messages.sendEncryptedFile" >messages.sendEncryptedFile</a>#5559481d flags:<a href="/type/%23" >#</a> silent:flags.0?true peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> random_id:<a href="/type/long" >long</a> data:<a href="/type/bytes" >bytes</a> file:<a href="/type/InputEncryptedFile" >InputEncryptedFile</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>; +<a href="/method/messages.sendEncryptedService" >messages.sendEncryptedService</a>#32d439a4 peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> random_id:<a href="/type/long" >long</a> data:<a href="/type/bytes" >bytes</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>; +<a href="/method/messages.receivedQueue" >messages.receivedQueue</a>#55a5bb66 max_qts:<a href="/type/int" >int</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>>; +<a href="/method/messages.reportEncryptedSpam" >messages.reportEncryptedSpam</a>#4b0c8c0f peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.readMessageContents" >messages.readMessageContents</a>#36a73f77 id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>; +<a href="/method/messages.getStickers" >messages.getStickers</a>#d5a5d3a1 emoticon:<a href="/type/string" >string</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Stickers" >messages.Stickers</a>; +<a href="/method/messages.getAllStickers" >messages.getAllStickers</a>#b8a0a1a8 hash:<a href="/type/long" >long</a> = <a href="/type/messages.AllStickers" >messages.AllStickers</a>; +<a href="/method/messages.getWebPagePreview" >messages.getWebPagePreview</a>#8b68b0cc flags:<a href="/type/%23" >#</a> message:<a href="/type/string" >string</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/method/messages.exportChatInvite" >messages.exportChatInvite</a>#14b9bcd7 flags:<a href="/type/%23" >#</a> legacy_revoke_permanent:flags.2?true peer:<a href="/type/InputPeer" >InputPeer</a> expire_date:flags.0?<a href="/type/int" >int</a> usage_limit:flags.1?<a href="/type/int" >int</a> = <a href="/type/ExportedChatInvite" >ExportedChatInvite</a>; +<a href="/method/messages.checkChatInvite" >messages.checkChatInvite</a>#3eadb1bb hash:<a href="/type/string" >string</a> = <a href="/type/ChatInvite" >ChatInvite</a>; +<a href="/method/messages.importChatInvite" >messages.importChatInvite</a>#6c50051c hash:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getStickerSet" >messages.getStickerSet</a>#2619a90e stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>; +<a href="/method/messages.installStickerSet" >messages.installStickerSet</a>#c78fe460 stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> archived:<a href="/type/Bool" >Bool</a> = <a href="/type/messages.StickerSetInstallResult" >messages.StickerSetInstallResult</a>; +<a href="/method/messages.uninstallStickerSet" >messages.uninstallStickerSet</a>#f96e55de stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.startBot" >messages.startBot</a>#e6df7378 bot:<a href="/type/InputUser" >InputUser</a> peer:<a href="/type/InputPeer" >InputPeer</a> random_id:<a href="/type/long" >long</a> start_param:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getMessagesViews" >messages.getMessagesViews</a>#5784d3e1 peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> increment:<a href="/type/Bool" >Bool</a> = <a href="/type/messages.MessageViews" >messages.MessageViews</a>; +<a href="/method/messages.editChatAdmin" >messages.editChatAdmin</a>#a85bd1c2 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/InputUser" >InputUser</a> is_admin:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.migrateChat" >messages.migrateChat</a>#a2875319 chat_id:<a href="/type/long" >long</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.searchGlobal" >messages.searchGlobal</a>#4bc6589a flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> q:<a href="/type/string" >string</a> filter:<a href="/type/MessagesFilter" >MessagesFilter</a> min_date:<a href="/type/int" >int</a> max_date:<a href="/type/int" >int</a> offset_rate:<a href="/type/int" >int</a> offset_peer:<a href="/type/InputPeer" >InputPeer</a> offset_id:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/messages.reorderStickerSets" >messages.reorderStickerSets</a>#78337739 flags:<a href="/type/%23" >#</a> masks:flags.0?true order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getDocumentByHash" >messages.getDocumentByHash</a>#338e2464 sha256:<a href="/type/bytes" >bytes</a> size:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> = <a href="/type/Document" >Document</a>; +<a href="/method/messages.getSavedGifs" >messages.getSavedGifs</a>#5cf09635 hash:<a href="/type/long" >long</a> = <a href="/type/messages.SavedGifs" >messages.SavedGifs</a>; +<a href="/method/messages.saveGif" >messages.saveGif</a>#327a30cb id:<a href="/type/InputDocument" >InputDocument</a> unsave:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getInlineBotResults" >messages.getInlineBotResults</a>#514e999d flags:<a href="/type/%23" >#</a> bot:<a href="/type/InputUser" >InputUser</a> peer:<a href="/type/InputPeer" >InputPeer</a> geo_point:flags.0?<a href="/type/InputGeoPoint" >InputGeoPoint</a> query:<a href="/type/string" >string</a> offset:<a href="/type/string" >string</a> = <a href="/type/messages.BotResults" >messages.BotResults</a>; +<a href="/method/messages.setInlineBotResults" >messages.setInlineBotResults</a>#eb5ea206 flags:<a href="/type/%23" >#</a> gallery:flags.0?true private:flags.1?true query_id:<a href="/type/long" >long</a> results:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputBotInlineResult" >InputBotInlineResult</a>> cache_time:<a href="/type/int" >int</a> next_offset:flags.2?<a href="/type/string" >string</a> switch_pm:flags.3?<a href="/type/InlineBotSwitchPM" >InlineBotSwitchPM</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.sendInlineBotResult" >messages.sendInlineBotResult</a>#220815b0 flags:<a href="/type/%23" >#</a> silent:flags.5?true background:flags.6?true clear_draft:flags.7?true hide_via:flags.11?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> random_id:<a href="/type/long" >long</a> query_id:<a href="/type/long" >long</a> id:<a href="/type/string" >string</a> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getMessageEditData" >messages.getMessageEditData</a>#fda68d36 peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/int" >int</a> = <a href="/type/messages.MessageEditData" >messages.MessageEditData</a>; +<a href="/method/messages.editMessage" >messages.editMessage</a>#48f71778 flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/int" >int</a> message:flags.11?<a href="/type/string" >string</a> media:flags.14?<a href="/type/InputMedia" >InputMedia</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> schedule_date:flags.15?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.editInlineBotMessage" >messages.editInlineBotMessage</a>#83557dba flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true id:<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> message:flags.11?<a href="/type/string" >string</a> media:flags.14?<a href="/type/InputMedia" >InputMedia</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getBotCallbackAnswer" >messages.getBotCallbackAnswer</a>#9342ca07 flags:<a href="/type/%23" >#</a> game:flags.1?true peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> data:flags.0?<a href="/type/bytes" >bytes</a> password:flags.2?<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> = <a href="/type/messages.BotCallbackAnswer" >messages.BotCallbackAnswer</a>; +<a href="/method/messages.setBotCallbackAnswer" >messages.setBotCallbackAnswer</a>#d58f130a flags:<a href="/type/%23" >#</a> alert:flags.1?true query_id:<a href="/type/long" >long</a> message:flags.0?<a href="/type/string" >string</a> url:flags.2?<a href="/type/string" >string</a> cache_time:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getPeerDialogs" >messages.getPeerDialogs</a>#e470bcfd peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputDialogPeer" >InputDialogPeer</a>> = <a href="/type/messages.PeerDialogs" >messages.PeerDialogs</a>; +<a href="/method/messages.saveDraft" >messages.saveDraft</a>#bc39e14b flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true reply_to_msg_id:flags.0?<a href="/type/int" >int</a> peer:<a href="/type/InputPeer" >InputPeer</a> message:<a href="/type/string" >string</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getAllDrafts" >messages.getAllDrafts</a>#6a3f8d65 = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getFeaturedStickers" >messages.getFeaturedStickers</a>#64780b14 hash:<a href="/type/long" >long</a> = <a href="/type/messages.FeaturedStickers" >messages.FeaturedStickers</a>; +<a href="/method/messages.readFeaturedStickers" >messages.readFeaturedStickers</a>#5b118126 id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getRecentStickers" >messages.getRecentStickers</a>#9da9403b flags:<a href="/type/%23" >#</a> attached:flags.0?true hash:<a href="/type/long" >long</a> = <a href="/type/messages.RecentStickers" >messages.RecentStickers</a>; +<a href="/method/messages.saveRecentSticker" >messages.saveRecentSticker</a>#392718f8 flags:<a href="/type/%23" >#</a> attached:flags.0?true id:<a href="/type/InputDocument" >InputDocument</a> unsave:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.clearRecentStickers" >messages.clearRecentStickers</a>#8999602d flags:<a href="/type/%23" >#</a> attached:flags.0?true = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getArchivedStickers" >messages.getArchivedStickers</a>#57f17692 flags:<a href="/type/%23" >#</a> masks:flags.0?true offset_id:<a href="/type/long" >long</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.ArchivedStickers" >messages.ArchivedStickers</a>; +<a href="/method/messages.getMaskStickers" >messages.getMaskStickers</a>#640f82b8 hash:<a href="/type/long" >long</a> = <a href="/type/messages.AllStickers" >messages.AllStickers</a>; +<a href="/method/messages.getAttachedStickers" >messages.getAttachedStickers</a>#cc5b67cc media:<a href="/type/InputStickeredMedia" >InputStickeredMedia</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerSetCovered" >StickerSetCovered</a>>; +<a href="/method/messages.setGameScore" >messages.setGameScore</a>#8ef8ecc0 flags:<a href="/type/%23" >#</a> edit_message:flags.0?true force:flags.1?true peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/int" >int</a> user_id:<a href="/type/InputUser" >InputUser</a> score:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.setInlineGameScore" >messages.setInlineGameScore</a>#15ad9f64 flags:<a href="/type/%23" >#</a> edit_message:flags.0?true force:flags.1?true id:<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> user_id:<a href="/type/InputUser" >InputUser</a> score:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getGameHighScores" >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>; +<a href="/method/messages.getInlineGameHighScores" >messages.getInlineGameHighScores</a>#f635e1b id:<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/messages.HighScores" >messages.HighScores</a>; +<a href="/method/messages.getCommonChats" >messages.getCommonChats</a>#e40ca104 user_id:<a href="/type/InputUser" >InputUser</a> max_id:<a href="/type/long" >long</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.Chats" >messages.Chats</a>; +<a href="/method/messages.getAllChats" >messages.getAllChats</a>#875f74be except_ids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/messages.Chats" >messages.Chats</a>; +<a href="/method/messages.getWebPage" >messages.getWebPage</a>#32ca8f91 url:<a href="/type/string" >string</a> hash:<a href="/type/int" >int</a> = <a href="/type/WebPage" >WebPage</a>; +<a href="/method/messages.toggleDialogPin" >messages.toggleDialogPin</a>#a731e257 flags:<a href="/type/%23" >#</a> pinned:flags.0?true peer:<a href="/type/InputDialogPeer" >InputDialogPeer</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.reorderPinnedDialogs" >messages.reorderPinnedDialogs</a>#3b1adf37 flags:<a href="/type/%23" >#</a> force:flags.0?true folder_id:<a href="/type/int" >int</a> order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputDialogPeer" >InputDialogPeer</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getPinnedDialogs" >messages.getPinnedDialogs</a>#d6b94df2 folder_id:<a href="/type/int" >int</a> = <a href="/type/messages.PeerDialogs" >messages.PeerDialogs</a>; +<a href="/method/messages.setBotShippingResults" >messages.setBotShippingResults</a>#e5f672fa flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> error:flags.0?<a href="/type/string" >string</a> shipping_options:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/ShippingOption" >ShippingOption</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.setBotPrecheckoutResults" >messages.setBotPrecheckoutResults</a>#9c2dd95 flags:<a href="/type/%23" >#</a> success:flags.1?true query_id:<a href="/type/long" >long</a> error:flags.0?<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.uploadMedia" >messages.uploadMedia</a>#519bc2b1 peer:<a href="/type/InputPeer" >InputPeer</a> media:<a href="/type/InputMedia" >InputMedia</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/method/messages.sendScreenshotNotification" >messages.sendScreenshotNotification</a>#c97df020 peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:<a href="/type/int" >int</a> random_id:<a href="/type/long" >long</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getFavedStickers" >messages.getFavedStickers</a>#4f1aaa9 hash:<a href="/type/long" >long</a> = <a href="/type/messages.FavedStickers" >messages.FavedStickers</a>; +<a href="/method/messages.faveSticker" >messages.faveSticker</a>#b9ffc55b id:<a href="/type/InputDocument" >InputDocument</a> unfave:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getUnreadMentions" >messages.getUnreadMentions</a>#46578472 peer:<a href="/type/InputPeer" >InputPeer</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> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/messages.readMentions" >messages.readMentions</a>#f0189d3 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/messages.AffectedHistory" >messages.AffectedHistory</a>; +<a href="/method/messages.getRecentLocations" >messages.getRecentLocations</a>#702a40e0 peer:<a href="/type/InputPeer" >InputPeer</a> limit:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/messages.sendMultiMedia" >messages.sendMultiMedia</a>#cc0110cb flags:<a href="/type/%23" >#</a> silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> multi_media:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputSingleMedia" >InputSingleMedia</a>> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.uploadEncryptedFile" >messages.uploadEncryptedFile</a>#5057c497 peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> file:<a href="/type/InputEncryptedFile" >InputEncryptedFile</a> = <a href="/type/EncryptedFile" >EncryptedFile</a>; +<a href="/method/messages.searchStickerSets" >messages.searchStickerSets</a>#35705b8a flags:<a href="/type/%23" >#</a> exclude_featured:flags.0?true q:<a href="/type/string" >string</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.FoundStickerSets" >messages.FoundStickerSets</a>; +<a href="/method/messages.getSplitRanges" >messages.getSplitRanges</a>#1cff7e08 = <a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageRange" >MessageRange</a>>; +<a href="/method/messages.markDialogUnread" >messages.markDialogUnread</a>#c286d98f flags:<a href="/type/%23" >#</a> unread:flags.0?true peer:<a href="/type/InputDialogPeer" >InputDialogPeer</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getDialogUnreadMarks" >messages.getDialogUnreadMarks</a>#22e24e22 = <a href="/type/Vector%20t" >Vector</a><<a href="/type/DialogPeer" >DialogPeer</a>>; +<a href="/method/messages.clearAllDrafts" >messages.clearAllDrafts</a>#7e58ee9c = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.updatePinnedMessage" >messages.updatePinnedMessage</a>#d2aaf7ec flags:<a href="/type/%23" >#</a> silent:flags.0?true unpin:flags.1?true pm_oneside:flags.2?true peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.sendVote" >messages.sendVote</a>#10ea6184 peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getPollResults" >messages.getPollResults</a>#73bb643b peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getOnlines" >messages.getOnlines</a>#6e2be050 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/ChatOnlines" >ChatOnlines</a>; +<a href="/method/messages.editChatAbout" >messages.editChatAbout</a>#def60797 peer:<a href="/type/InputPeer" >InputPeer</a> about:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.editChatDefaultBannedRights" >messages.editChatDefaultBannedRights</a>#a5866b41 peer:<a href="/type/InputPeer" >InputPeer</a> banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getEmojiKeywords" >messages.getEmojiKeywords</a>#35a0e062 lang_code:<a href="/type/string" >string</a> = <a href="/type/EmojiKeywordsDifference" >EmojiKeywordsDifference</a>; +<a href="/method/messages.getEmojiKeywordsDifference" >messages.getEmojiKeywordsDifference</a>#1508b6af lang_code:<a href="/type/string" >string</a> from_version:<a href="/type/int" >int</a> = <a href="/type/EmojiKeywordsDifference" >EmojiKeywordsDifference</a>; +<a href="/method/messages.getEmojiKeywordsLanguages" >messages.getEmojiKeywordsLanguages</a>#4e9963b2 lang_codes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/EmojiLanguage" >EmojiLanguage</a>>; +<a href="/method/messages.getEmojiURL" >messages.getEmojiURL</a>#d5b10c26 lang_code:<a href="/type/string" >string</a> = <a href="/type/EmojiURL" >EmojiURL</a>; +<a href="/method/messages.getSearchCounters" >messages.getSearchCounters</a>#732eef00 peer:<a href="/type/InputPeer" >InputPeer</a> filters:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessagesFilter" >MessagesFilter</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/messages.SearchCounter" >messages.SearchCounter</a>>; +<a href="/method/messages.requestUrlAuth" >messages.requestUrlAuth</a>#198fb446 flags:<a href="/type/%23" >#</a> peer:flags.1?<a href="/type/InputPeer" >InputPeer</a> msg_id:flags.1?<a href="/type/int" >int</a> button_id:flags.1?<a href="/type/int" >int</a> url:flags.2?<a href="/type/string" >string</a> = <a href="/type/UrlAuthResult" >UrlAuthResult</a>; +<a href="/method/messages.acceptUrlAuth" >messages.acceptUrlAuth</a>#b12c7125 flags:<a href="/type/%23" >#</a> write_allowed:flags.0?true peer:flags.1?<a href="/type/InputPeer" >InputPeer</a> msg_id:flags.1?<a href="/type/int" >int</a> button_id:flags.1?<a href="/type/int" >int</a> url:flags.2?<a href="/type/string" >string</a> = <a href="/type/UrlAuthResult" >UrlAuthResult</a>; +<a href="/method/messages.hidePeerSettingsBar" >messages.hidePeerSettingsBar</a>#4facb138 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getScheduledHistory" >messages.getScheduledHistory</a>#f516760b peer:<a href="/type/InputPeer" >InputPeer</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/messages.getScheduledMessages" >messages.getScheduledMessages</a>#bdbb0464 peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/messages.sendScheduledMessages" >messages.sendScheduledMessages</a>#bd38850a peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.deleteScheduledMessages" >messages.deleteScheduledMessages</a>#59ae2b16 peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getPollVotes" >messages.getPollVotes</a>#b86e380e flags:<a href="/type/%23" >#</a> peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/int" >int</a> option:flags.0?<a href="/type/bytes" >bytes</a> offset:flags.1?<a href="/type/string" >string</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.VotesList" >messages.VotesList</a>; +<a href="/method/messages.toggleStickerSets" >messages.toggleStickerSets</a>#b5052fea flags:<a href="/type/%23" >#</a> uninstall:flags.0?true archive:flags.1?true unarchive:flags.2?true stickersets:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputStickerSet" >InputStickerSet</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getDialogFilters" >messages.getDialogFilters</a>#f19ed96d = <a href="/type/Vector%20t" >Vector</a><<a href="/type/DialogFilter" >DialogFilter</a>>; +<a href="/method/messages.getSuggestedDialogFilters" >messages.getSuggestedDialogFilters</a>#a29cd42c = <a href="/type/Vector%20t" >Vector</a><<a href="/type/DialogFilterSuggested" >DialogFilterSuggested</a>>; +<a href="/method/messages.updateDialogFilter" >messages.updateDialogFilter</a>#1ad4a04a flags:<a href="/type/%23" >#</a> id:<a href="/type/int" >int</a> filter:flags.0?<a href="/type/DialogFilter" >DialogFilter</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.updateDialogFiltersOrder" >messages.updateDialogFiltersOrder</a>#c563c1e4 order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getOldFeaturedStickers" >messages.getOldFeaturedStickers</a>#7ed094a1 offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.FeaturedStickers" >messages.FeaturedStickers</a>; +<a href="/method/messages.getReplies" >messages.getReplies</a>#22ddd30c peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> offset_id:<a href="/type/int" >int</a> offset_date:<a href="/type/int" >int</a> add_offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> max_id:<a href="/type/int" >int</a> min_id:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/messages.getDiscussionMessage" >messages.getDiscussionMessage</a>#446972fd peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/messages.DiscussionMessage" >messages.DiscussionMessage</a>; +<a href="/method/messages.readDiscussion" >messages.readDiscussion</a>#f731a9f4 peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> read_max_id:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.unpinAllMessages" >messages.unpinAllMessages</a>#f025bc8b peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/messages.AffectedHistory" >messages.AffectedHistory</a>; +<a href="/method/messages.deleteChat" >messages.deleteChat</a>#5bd0ee50 chat_id:<a href="/type/long" >long</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.deletePhoneCallHistory" >messages.deletePhoneCallHistory</a>#f9cbe409 flags:<a href="/type/%23" >#</a> revoke:flags.0?true = <a href="/type/messages.AffectedFoundMessages" >messages.AffectedFoundMessages</a>; +<a href="/method/messages.checkHistoryImport" >messages.checkHistoryImport</a>#43fe19f3 import_head:<a href="/type/string" >string</a> = <a href="/type/messages.HistoryImportParsed" >messages.HistoryImportParsed</a>; +<a href="/method/messages.initHistoryImport" >messages.initHistoryImport</a>#34090c3b peer:<a href="/type/InputPeer" >InputPeer</a> file:<a href="/type/InputFile" >InputFile</a> media_count:<a href="/type/int" >int</a> = <a href="/type/messages.HistoryImport" >messages.HistoryImport</a>; +<a href="/method/messages.uploadImportedMedia" >messages.uploadImportedMedia</a>#2a862092 peer:<a href="/type/InputPeer" >InputPeer</a> import_id:<a href="/type/long" >long</a> file_name:<a href="/type/string" >string</a> media:<a href="/type/InputMedia" >InputMedia</a> = <a href="/type/MessageMedia" >MessageMedia</a>; +<a href="/method/messages.startHistoryImport" >messages.startHistoryImport</a>#b43df344 peer:<a href="/type/InputPeer" >InputPeer</a> import_id:<a href="/type/long" >long</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getExportedChatInvites" >messages.getExportedChatInvites</a>#a2b5a3f6 flags:<a href="/type/%23" >#</a> revoked:flags.3?true peer:<a href="/type/InputPeer" >InputPeer</a> admin_id:<a href="/type/InputUser" >InputUser</a> offset_date:flags.2?<a href="/type/int" >int</a> offset_link:flags.2?<a href="/type/string" >string</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.ExportedChatInvites" >messages.ExportedChatInvites</a>; +<a href="/method/messages.getExportedChatInvite" >messages.getExportedChatInvite</a>#73746f5c peer:<a href="/type/InputPeer" >InputPeer</a> link:<a href="/type/string" >string</a> = <a href="/type/messages.ExportedChatInvite" >messages.ExportedChatInvite</a>; +<a href="/method/messages.editExportedChatInvite" >messages.editExportedChatInvite</a>#2e4ffbe flags:<a href="/type/%23" >#</a> revoked:flags.2?true peer:<a href="/type/InputPeer" >InputPeer</a> link:<a href="/type/string" >string</a> expire_date:flags.0?<a href="/type/int" >int</a> usage_limit:flags.1?<a href="/type/int" >int</a> = <a href="/type/messages.ExportedChatInvite" >messages.ExportedChatInvite</a>; +<a href="/method/messages.deleteRevokedExportedChatInvites" >messages.deleteRevokedExportedChatInvites</a>#56987bd5 peer:<a href="/type/InputPeer" >InputPeer</a> admin_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.deleteExportedChatInvite" >messages.deleteExportedChatInvite</a>#d464a42b peer:<a href="/type/InputPeer" >InputPeer</a> link:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/messages.getAdminsWithInvites" >messages.getAdminsWithInvites</a>#3920e6ef peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/messages.ChatAdminsWithInvites" >messages.ChatAdminsWithInvites</a>; +<a href="/method/messages.getChatInviteImporters" >messages.getChatInviteImporters</a>#26fb7289 peer:<a href="/type/InputPeer" >InputPeer</a> link:<a href="/type/string" >string</a> offset_date:<a href="/type/int" >int</a> offset_user:<a href="/type/InputUser" >InputUser</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.ChatInviteImporters" >messages.ChatInviteImporters</a>; +<a href="/method/messages.setHistoryTTL" >messages.setHistoryTTL</a>#b80e5fe4 peer:<a href="/type/InputPeer" >InputPeer</a> period:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.checkHistoryImportPeer" >messages.checkHistoryImportPeer</a>#5dc60f03 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/messages.CheckedHistoryImportPeer" >messages.CheckedHistoryImportPeer</a>; +<a href="/method/messages.setChatTheme" >messages.setChatTheme</a>#e63be13f peer:<a href="/type/InputPeer" >InputPeer</a> emoticon:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/messages.getMessageReadParticipants" >messages.getMessageReadParticipants</a>#2c6f97b7 peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>>; + +<a href="/method/updates.getState" >updates.getState</a>#edd4882a = <a href="/type/updates.State" >updates.State</a>; +<a href="/method/updates.getDifference" >updates.getDifference</a>#25939651 flags:<a href="/type/%23" >#</a> pts:<a href="/type/int" >int</a> pts_total_limit:flags.0?<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> qts:<a href="/type/int" >int</a> = <a href="/type/updates.Difference" >updates.Difference</a>; +<a href="/method/updates.getChannelDifference" >updates.getChannelDifference</a>#3173d78 flags:<a href="/type/%23" >#</a> force:flags.0?true channel:<a href="/type/InputChannel" >InputChannel</a> filter:<a href="/type/ChannelMessagesFilter" >ChannelMessagesFilter</a> pts:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/updates.ChannelDifference" >updates.ChannelDifference</a>; + +<a href="/method/photos.updateProfilePhoto" >photos.updateProfilePhoto</a>#72d4742c id:<a href="/type/InputPhoto" >InputPhoto</a> = <a href="/type/photos.Photo" >photos.Photo</a>; +<a href="/method/photos.uploadProfilePhoto" >photos.uploadProfilePhoto</a>#89f30f69 flags:<a href="/type/%23" >#</a> file:flags.0?<a href="/type/InputFile" >InputFile</a> video:flags.1?<a href="/type/InputFile" >InputFile</a> video_start_ts:flags.2?<a href="/type/double" >double</a> = <a href="/type/photos.Photo" >photos.Photo</a>; +<a href="/method/photos.deletePhotos" >photos.deletePhotos</a>#87cf7f2f id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPhoto" >InputPhoto</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>>; +<a href="/method/photos.getUserPhotos" >photos.getUserPhotos</a>#91cd32a8 user_id:<a href="/type/InputUser" >InputUser</a> offset:<a href="/type/int" >int</a> max_id:<a href="/type/long" >long</a> limit:<a href="/type/int" >int</a> = <a href="/type/photos.Photos" >photos.Photos</a>; + +<a href="/method/upload.saveFilePart" >upload.saveFilePart</a>#b304a621 file_id:<a href="/type/long" >long</a> file_part:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/upload.getFile" >upload.getFile</a>#b15a9afc flags:<a href="/type/%23" >#</a> precise:flags.0?true cdn_supported:flags.1?true location:<a href="/type/InputFileLocation" >InputFileLocation</a> offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/upload.File" >upload.File</a>; +<a href="/method/upload.saveBigFilePart" >upload.saveBigFilePart</a>#de7b673d file_id:<a href="/type/long" >long</a> file_part:<a href="/type/int" >int</a> file_total_parts:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/upload.getWebFile" >upload.getWebFile</a>#24e6818d location:<a href="/type/InputWebFileLocation" >InputWebFileLocation</a> offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/upload.WebFile" >upload.WebFile</a>; +<a href="/method/upload.getCdnFile" >upload.getCdnFile</a>#2000bcc3 file_token:<a href="/type/bytes" >bytes</a> offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/upload.CdnFile" >upload.CdnFile</a>; +<a href="/method/upload.reuploadCdnFile" >upload.reuploadCdnFile</a>#9b2754a8 file_token:<a href="/type/bytes" >bytes</a> request_token:<a href="/type/bytes" >bytes</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/FileHash" >FileHash</a>>; +<a href="/method/upload.getCdnFileHashes" >upload.getCdnFileHashes</a>#4da54231 file_token:<a href="/type/bytes" >bytes</a> offset:<a href="/type/int" >int</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/FileHash" >FileHash</a>>; +<a href="/method/upload.getFileHashes" >upload.getFileHashes</a>#c7025931 location:<a href="/type/InputFileLocation" >InputFileLocation</a> offset:<a href="/type/int" >int</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/FileHash" >FileHash</a>>; + +<a href="/method/help.getConfig" >help.getConfig</a>#c4f9186b = <a href="/type/Config" >Config</a>; +<a href="/method/help.getNearestDc" >help.getNearestDc</a>#1fb33026 = <a href="/type/NearestDc" >NearestDc</a>; +<a href="/method/help.getAppUpdate" >help.getAppUpdate</a>#522d5a7d source:<a href="/type/string" >string</a> = <a href="/type/help.AppUpdate" >help.AppUpdate</a>; +<a href="/method/help.getInviteText" >help.getInviteText</a>#4d392343 = <a href="/type/help.InviteText" >help.InviteText</a>; +<a href="/method/help.getSupport" >help.getSupport</a>#9cdf08cd = <a href="/type/help.Support" >help.Support</a>; +<a href="/method/help.getAppChangelog" >help.getAppChangelog</a>#9010ef6f prev_app_version:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/help.setBotUpdatesStatus" >help.setBotUpdatesStatus</a>#ec22cfcd pending_updates_count:<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/help.getCdnConfig" >help.getCdnConfig</a>#52029342 = <a href="/type/CdnConfig" >CdnConfig</a>; +<a href="/method/help.getRecentMeUrls" >help.getRecentMeUrls</a>#3dc0f114 referer:<a href="/type/string" >string</a> = <a href="/type/help.RecentMeUrls" >help.RecentMeUrls</a>; +<a href="/method/help.getTermsOfServiceUpdate" >help.getTermsOfServiceUpdate</a>#2ca51fd1 = <a href="/type/help.TermsOfServiceUpdate" >help.TermsOfServiceUpdate</a>; +<a href="/method/help.acceptTermsOfService" >help.acceptTermsOfService</a>#ee72f79a id:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/help.getDeepLinkInfo" >help.getDeepLinkInfo</a>#3fedc75f path:<a href="/type/string" >string</a> = <a href="/type/help.DeepLinkInfo" >help.DeepLinkInfo</a>; +<a href="/method/help.getAppConfig" >help.getAppConfig</a>#98914110 = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/method/help.saveAppLog" >help.saveAppLog</a>#6f02f748 events:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputAppEvent" >InputAppEvent</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/help.getPassportConfig" >help.getPassportConfig</a>#c661ad08 hash:<a href="/type/int" >int</a> = <a href="/type/help.PassportConfig" >help.PassportConfig</a>; +<a href="/method/help.getSupportName" >help.getSupportName</a>#d360e72c = <a href="/type/help.SupportName" >help.SupportName</a>; +<a href="/method/help.getUserInfo" >help.getUserInfo</a>#38a08d3 user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/help.UserInfo" >help.UserInfo</a>; +<a href="/method/help.editUserInfo" >help.editUserInfo</a>#66b91b70 user_id:<a href="/type/InputUser" >InputUser</a> message:<a href="/type/string" >string</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/help.UserInfo" >help.UserInfo</a>; +<a href="/method/help.getPromoData" >help.getPromoData</a>#c0977421 = <a href="/type/help.PromoData" >help.PromoData</a>; +<a href="/method/help.hidePromoData" >help.hidePromoData</a>#1e251c95 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/help.dismissSuggestion" >help.dismissSuggestion</a>#f50dbaa1 peer:<a href="/type/InputPeer" >InputPeer</a> suggestion:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/help.getCountriesList" >help.getCountriesList</a>#735787a8 lang_code:<a href="/type/string" >string</a> hash:<a href="/type/int" >int</a> = <a href="/type/help.CountriesList" >help.CountriesList</a>; + +<a href="/method/channels.readHistory" >channels.readHistory</a>#cc104937 channel:<a href="/type/InputChannel" >InputChannel</a> max_id:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.deleteMessages" >channels.deleteMessages</a>#84c1fd4e channel:<a href="/type/InputChannel" >InputChannel</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>; +<a href="/method/channels.deleteUserHistory" >channels.deleteUserHistory</a>#d10dd71b channel:<a href="/type/InputChannel" >InputChannel</a> user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/messages.AffectedHistory" >messages.AffectedHistory</a>; +<a href="/method/channels.reportSpam" >channels.reportSpam</a>#fe087810 channel:<a href="/type/InputChannel" >InputChannel</a> user_id:<a href="/type/InputUser" >InputUser</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.getMessages" >channels.getMessages</a>#ad8c9a23 channel:<a href="/type/InputChannel" >InputChannel</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputMessage" >InputMessage</a>> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/channels.getParticipants" >channels.getParticipants</a>#77ced9d0 channel:<a href="/type/InputChannel" >InputChannel</a> filter:<a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a> offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/channels.ChannelParticipants" >channels.ChannelParticipants</a>; +<a href="/method/channels.getParticipant" >channels.getParticipant</a>#a0ab6cc6 channel:<a href="/type/InputChannel" >InputChannel</a> participant:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/channels.ChannelParticipant" >channels.ChannelParticipant</a>; +<a href="/method/channels.getChannels" >channels.getChannels</a>#a7f6bbb id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputChannel" >InputChannel</a>> = <a href="/type/messages.Chats" >messages.Chats</a>; +<a href="/method/channels.getFullChannel" >channels.getFullChannel</a>#8736a09 channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/messages.ChatFull" >messages.ChatFull</a>; +<a href="/method/channels.createChannel" >channels.createChannel</a>#3d5fb10f flags:<a href="/type/%23" >#</a> broadcast:flags.0?true megagroup:flags.1?true for_import:flags.3?true title:<a href="/type/string" >string</a> about:<a href="/type/string" >string</a> geo_point:flags.2?<a href="/type/InputGeoPoint" >InputGeoPoint</a> address:flags.2?<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.editAdmin" >channels.editAdmin</a>#d33c8902 channel:<a href="/type/InputChannel" >InputChannel</a> user_id:<a href="/type/InputUser" >InputUser</a> admin_rights:<a href="/type/ChatAdminRights" >ChatAdminRights</a> rank:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.editTitle" >channels.editTitle</a>#566decd0 channel:<a href="/type/InputChannel" >InputChannel</a> title:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.editPhoto" >channels.editPhoto</a>#f12e57c9 channel:<a href="/type/InputChannel" >InputChannel</a> photo:<a href="/type/InputChatPhoto" >InputChatPhoto</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.checkUsername" >channels.checkUsername</a>#10e6bd2c channel:<a href="/type/InputChannel" >InputChannel</a> username:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.updateUsername" >channels.updateUsername</a>#3514b3de channel:<a href="/type/InputChannel" >InputChannel</a> username:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.joinChannel" >channels.joinChannel</a>#24b524c5 channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.leaveChannel" >channels.leaveChannel</a>#f836aa95 channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.inviteToChannel" >channels.inviteToChannel</a>#199f3a6c channel:<a href="/type/InputChannel" >InputChannel</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputUser" >InputUser</a>> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.deleteChannel" >channels.deleteChannel</a>#c0111fe3 channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.exportMessageLink" >channels.exportMessageLink</a>#e63fadeb flags:<a href="/type/%23" >#</a> grouped:flags.0?true thread:flags.1?true channel:<a href="/type/InputChannel" >InputChannel</a> id:<a href="/type/int" >int</a> = <a href="/type/ExportedMessageLink" >ExportedMessageLink</a>; +<a href="/method/channels.toggleSignatures" >channels.toggleSignatures</a>#1f69b606 channel:<a href="/type/InputChannel" >InputChannel</a> enabled:<a href="/type/Bool" >Bool</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.getAdminedPublicChannels" >channels.getAdminedPublicChannels</a>#f8b036af flags:<a href="/type/%23" >#</a> by_location:flags.0?true check_limit:flags.1?true = <a href="/type/messages.Chats" >messages.Chats</a>; +<a href="/method/channels.editBanned" >channels.editBanned</a>#96e6cd81 channel:<a href="/type/InputChannel" >InputChannel</a> participant:<a href="/type/InputPeer" >InputPeer</a> banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.getAdminLog" >channels.getAdminLog</a>#33ddf480 flags:<a href="/type/%23" >#</a> channel:<a href="/type/InputChannel" >InputChannel</a> q:<a href="/type/string" >string</a> events_filter:flags.0?<a href="/type/ChannelAdminLogEventsFilter" >ChannelAdminLogEventsFilter</a> admins:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputUser" >InputUser</a>> max_id:<a href="/type/long" >long</a> min_id:<a href="/type/long" >long</a> limit:<a href="/type/int" >int</a> = <a href="/type/channels.AdminLogResults" >channels.AdminLogResults</a>; +<a href="/method/channels.setStickers" >channels.setStickers</a>#ea8ca4f9 channel:<a href="/type/InputChannel" >InputChannel</a> stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.readMessageContents" >channels.readMessageContents</a>#eab5dc38 channel:<a href="/type/InputChannel" >InputChannel</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.deleteHistory" >channels.deleteHistory</a>#af369d42 channel:<a href="/type/InputChannel" >InputChannel</a> max_id:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.togglePreHistoryHidden" >channels.togglePreHistoryHidden</a>#eabbb94c channel:<a href="/type/InputChannel" >InputChannel</a> enabled:<a href="/type/Bool" >Bool</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.getLeftChannels" >channels.getLeftChannels</a>#8341ecc0 offset:<a href="/type/int" >int</a> = <a href="/type/messages.Chats" >messages.Chats</a>; +<a href="/method/channels.getGroupsForDiscussion" >channels.getGroupsForDiscussion</a>#f5dad378 = <a href="/type/messages.Chats" >messages.Chats</a>; +<a href="/method/channels.setDiscussionGroup" >channels.setDiscussionGroup</a>#40582bb2 broadcast:<a href="/type/InputChannel" >InputChannel</a> group:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.editCreator" >channels.editCreator</a>#8f38cd1f channel:<a href="/type/InputChannel" >InputChannel</a> user_id:<a href="/type/InputUser" >InputUser</a> password:<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.editLocation" >channels.editLocation</a>#58e63f6d channel:<a href="/type/InputChannel" >InputChannel</a> geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> address:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.toggleSlowMode" >channels.toggleSlowMode</a>#edd49ef0 channel:<a href="/type/InputChannel" >InputChannel</a> seconds:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.getInactiveChannels" >channels.getInactiveChannels</a>#11e831ee = <a href="/type/messages.InactiveChats" >messages.InactiveChats</a>; +<a href="/method/channels.convertToGigagroup" >channels.convertToGigagroup</a>#b290c69 channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/channels.viewSponsoredMessage" >channels.viewSponsoredMessage</a>#beaedb94 channel:<a href="/type/InputChannel" >InputChannel</a> random_id:<a href="/type/bytes" >bytes</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/channels.getSponsoredMessages" >channels.getSponsoredMessages</a>#ec210fbf channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/messages.SponsoredMessages" >messages.SponsoredMessages</a>; + +<a href="/method/bots.sendCustomRequest" >bots.sendCustomRequest</a>#aa2769ed custom_method:<a href="/type/string" >string</a> params:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/DataJSON" >DataJSON</a>; +<a href="/method/bots.answerWebhookJSONQuery" >bots.answerWebhookJSONQuery</a>#e6213f4d query_id:<a href="/type/long" >long</a> data:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/bots.setBotCommands" >bots.setBotCommands</a>#517165a scope:<a href="/type/BotCommandScope" >BotCommandScope</a> lang_code:<a href="/type/string" >string</a> commands:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotCommand" >BotCommand</a>> = <a href="/type/Bool" >Bool</a>; +<a href="/method/bots.resetBotCommands" >bots.resetBotCommands</a>#3d8de0f9 scope:<a href="/type/BotCommandScope" >BotCommandScope</a> lang_code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/bots.getBotCommands" >bots.getBotCommands</a>#e34c0dd6 scope:<a href="/type/BotCommandScope" >BotCommandScope</a> lang_code:<a href="/type/string" >string</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/BotCommand" >BotCommand</a>>; + +<a href="/method/payments.getPaymentForm" >payments.getPaymentForm</a>#8a333c8d flags:<a href="/type/%23" >#</a> peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> theme_params:flags.0?<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/payments.PaymentForm" >payments.PaymentForm</a>; +<a href="/method/payments.getPaymentReceipt" >payments.getPaymentReceipt</a>#2478d1cc peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/payments.PaymentReceipt" >payments.PaymentReceipt</a>; +<a href="/method/payments.validateRequestedInfo" >payments.validateRequestedInfo</a>#db103170 flags:<a href="/type/%23" >#</a> save:flags.0?true peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> info:<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> = <a href="/type/payments.ValidatedRequestedInfo" >payments.ValidatedRequestedInfo</a>; +<a href="/method/payments.sendPaymentForm" >payments.sendPaymentForm</a>#30c3bc9d flags:<a href="/type/%23" >#</a> form_id:<a href="/type/long" >long</a> peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> requested_info_id:flags.0?<a href="/type/string" >string</a> shipping_option_id:flags.1?<a href="/type/string" >string</a> credentials:<a href="/type/InputPaymentCredentials" >InputPaymentCredentials</a> tip_amount:flags.2?<a href="/type/long" >long</a> = <a href="/type/payments.PaymentResult" >payments.PaymentResult</a>; +<a href="/method/payments.getSavedInfo" >payments.getSavedInfo</a>#227d824b = <a href="/type/payments.SavedInfo" >payments.SavedInfo</a>; +<a href="/method/payments.clearSavedInfo" >payments.clearSavedInfo</a>#d83d70c1 flags:<a href="/type/%23" >#</a> credentials:flags.0?true info:flags.1?true = <a href="/type/Bool" >Bool</a>; +<a href="/method/payments.getBankCardData" >payments.getBankCardData</a>#2e79d779 number:<a href="/type/string" >string</a> = <a href="/type/payments.BankCardData" >payments.BankCardData</a>; + +<a href="/method/stickers.createStickerSet" >stickers.createStickerSet</a>#9021ab67 flags:<a href="/type/%23" >#</a> masks:flags.0?true animated:flags.1?true videos:flags.4?true user_id:<a href="/type/InputUser" >InputUser</a> title:<a href="/type/string" >string</a> short_name:<a href="/type/string" >string</a> thumb:flags.2?<a href="/type/InputDocument" >InputDocument</a> stickers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputStickerSetItem" >InputStickerSetItem</a>> software:flags.3?<a href="/type/string" >string</a> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>; +<a href="/method/stickers.removeStickerFromSet" >stickers.removeStickerFromSet</a>#f7760f51 sticker:<a href="/type/InputDocument" >InputDocument</a> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>; +<a href="/method/stickers.changeStickerPosition" >stickers.changeStickerPosition</a>#ffb6d4ca sticker:<a href="/type/InputDocument" >InputDocument</a> position:<a href="/type/int" >int</a> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>; +<a href="/method/stickers.addStickerToSet" >stickers.addStickerToSet</a>#8653febe stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> sticker:<a href="/type/InputStickerSetItem" >InputStickerSetItem</a> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>; +<a href="/method/stickers.setStickerSetThumb" >stickers.setStickerSetThumb</a>#9a364e30 stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> thumb:<a href="/type/InputDocument" >InputDocument</a> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>; +<a href="/method/stickers.checkShortName" >stickers.checkShortName</a>#284b3639 short_name:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/stickers.suggestShortName" >stickers.suggestShortName</a>#4dafc503 title:<a href="/type/string" >string</a> = <a href="/type/stickers.SuggestedShortName" >stickers.SuggestedShortName</a>; + +<a href="/method/phone.getCallConfig" >phone.getCallConfig</a>#55451fa9 = <a href="/type/DataJSON" >DataJSON</a>; +<a href="/method/phone.requestCall" >phone.requestCall</a>#42ff96ed flags:<a href="/type/%23" >#</a> video:flags.0?true user_id:<a href="/type/InputUser" >InputUser</a> random_id:<a href="/type/int" >int</a> g_a_hash:<a href="/type/bytes" >bytes</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/phone.PhoneCall" >phone.PhoneCall</a>; +<a href="/method/phone.acceptCall" >phone.acceptCall</a>#3bd2b4a0 peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> g_b:<a href="/type/bytes" >bytes</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/phone.PhoneCall" >phone.PhoneCall</a>; +<a href="/method/phone.confirmCall" >phone.confirmCall</a>#2efe1722 peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> g_a:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/phone.PhoneCall" >phone.PhoneCall</a>; +<a href="/method/phone.receivedCall" >phone.receivedCall</a>#17d54f61 peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/phone.discardCall" >phone.discardCall</a>#b2cbc1c0 flags:<a href="/type/%23" >#</a> video:flags.0?true peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> duration:<a href="/type/int" >int</a> reason:<a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a> connection_id:<a href="/type/long" >long</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.setCallRating" >phone.setCallRating</a>#59ead627 flags:<a href="/type/%23" >#</a> user_initiative:flags.0?true peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> rating:<a href="/type/int" >int</a> comment:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.saveCallDebug" >phone.saveCallDebug</a>#277add7e peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> debug:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/phone.sendSignalingData" >phone.sendSignalingData</a>#ff7a9383 peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> data:<a href="/type/bytes" >bytes</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/phone.createGroupCall" >phone.createGroupCall</a>#48cdc6d8 flags:<a href="/type/%23" >#</a> peer:<a href="/type/InputPeer" >InputPeer</a> random_id:<a href="/type/int" >int</a> title:flags.0?<a href="/type/string" >string</a> schedule_date:flags.1?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.joinGroupCall" >phone.joinGroupCall</a>#b132ff7b flags:<a href="/type/%23" >#</a> muted:flags.0?true video_stopped:flags.2?true call:<a href="/type/InputGroupCall" >InputGroupCall</a> join_as:<a href="/type/InputPeer" >InputPeer</a> invite_hash:flags.1?<a href="/type/string" >string</a> params:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.leaveGroupCall" >phone.leaveGroupCall</a>#500377f9 call:<a href="/type/InputGroupCall" >InputGroupCall</a> source:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.inviteToGroupCall" >phone.inviteToGroupCall</a>#7b393160 call:<a href="/type/InputGroupCall" >InputGroupCall</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputUser" >InputUser</a>> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.discardGroupCall" >phone.discardGroupCall</a>#7a777135 call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.toggleGroupCallSettings" >phone.toggleGroupCallSettings</a>#74bbb43d flags:<a href="/type/%23" >#</a> reset_invite_hash:flags.1?true call:<a href="/type/InputGroupCall" >InputGroupCall</a> join_muted:flags.0?<a href="/type/Bool" >Bool</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.getGroupCall" >phone.getGroupCall</a>#41845db call:<a href="/type/InputGroupCall" >InputGroupCall</a> limit:<a href="/type/int" >int</a> = <a href="/type/phone.GroupCall" >phone.GroupCall</a>; +<a href="/method/phone.getGroupParticipants" >phone.getGroupParticipants</a>#c558d8ab call:<a href="/type/InputGroupCall" >InputGroupCall</a> ids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPeer" >InputPeer</a>> sources:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> offset:<a href="/type/string" >string</a> limit:<a href="/type/int" >int</a> = <a href="/type/phone.GroupParticipants" >phone.GroupParticipants</a>; +<a href="/method/phone.checkGroupCall" >phone.checkGroupCall</a>#b59cf977 call:<a href="/type/InputGroupCall" >InputGroupCall</a> sources:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>>; +<a href="/method/phone.toggleGroupCallRecord" >phone.toggleGroupCallRecord</a>#f128c708 flags:<a href="/type/%23" >#</a> start:flags.0?true video:flags.2?true call:<a href="/type/InputGroupCall" >InputGroupCall</a> title:flags.1?<a href="/type/string" >string</a> video_portrait:flags.2?<a href="/type/Bool" >Bool</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.editGroupCallParticipant" >phone.editGroupCallParticipant</a>#a5273abf flags:<a href="/type/%23" >#</a> call:<a href="/type/InputGroupCall" >InputGroupCall</a> participant:<a href="/type/InputPeer" >InputPeer</a> muted:flags.0?<a href="/type/Bool" >Bool</a> volume:flags.1?<a href="/type/int" >int</a> raise_hand:flags.2?<a href="/type/Bool" >Bool</a> video_stopped:flags.3?<a href="/type/Bool" >Bool</a> video_paused:flags.4?<a href="/type/Bool" >Bool</a> presentation_paused:flags.5?<a href="/type/Bool" >Bool</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.editGroupCallTitle" >phone.editGroupCallTitle</a>#1ca6ac0a call:<a href="/type/InputGroupCall" >InputGroupCall</a> title:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.getGroupCallJoinAs" >phone.getGroupCallJoinAs</a>#ef7c213a peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/phone.JoinAsPeers" >phone.JoinAsPeers</a>; +<a href="/method/phone.exportGroupCallInvite" >phone.exportGroupCallInvite</a>#e6aa647f flags:<a href="/type/%23" >#</a> can_self_unmute:flags.0?true call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/phone.ExportedGroupCallInvite" >phone.ExportedGroupCallInvite</a>; +<a href="/method/phone.toggleGroupCallStartSubscription" >phone.toggleGroupCallStartSubscription</a>#219c34e6 call:<a href="/type/InputGroupCall" >InputGroupCall</a> subscribed:<a href="/type/Bool" >Bool</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.startScheduledGroupCall" >phone.startScheduledGroupCall</a>#5680e342 call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.saveDefaultGroupCallJoinAs" >phone.saveDefaultGroupCallJoinAs</a>#575e1f8c peer:<a href="/type/InputPeer" >InputPeer</a> join_as:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/Bool" >Bool</a>; +<a href="/method/phone.joinGroupCallPresentation" >phone.joinGroupCallPresentation</a>#cbea6bc4 call:<a href="/type/InputGroupCall" >InputGroupCall</a> params:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Updates" >Updates</a>; +<a href="/method/phone.leaveGroupCallPresentation" >phone.leaveGroupCallPresentation</a>#1c50d144 call:<a href="/type/InputGroupCall" >InputGroupCall</a> = <a href="/type/Updates" >Updates</a>; + +<a href="/method/langpack.getLangPack" >langpack.getLangPack</a>#f2f2330a lang_pack:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> = <a href="/type/LangPackDifference" >LangPackDifference</a>; +<a href="/method/langpack.getStrings" >langpack.getStrings</a>#efea3803 lang_pack:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> keys:<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/LangPackString" >LangPackString</a>>; +<a href="/method/langpack.getDifference" >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>; +<a href="/method/langpack.getLanguages" >langpack.getLanguages</a>#42c6978f lang_pack:<a href="/type/string" >string</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/LangPackLanguage" >LangPackLanguage</a>>; +<a href="/method/langpack.getLanguage" >langpack.getLanguage</a>#6a596502 lang_pack:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> = <a href="/type/LangPackLanguage" >LangPackLanguage</a>; + +<a href="/method/folders.editPeerFolders" >folders.editPeerFolders</a>#6847d0ab folder_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputFolderPeer" >InputFolderPeer</a>> = <a href="/type/Updates" >Updates</a>; +<a href="/method/folders.deleteFolder" >folders.deleteFolder</a>#1c295881 folder_id:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; + +<a href="/method/stats.getBroadcastStats" >stats.getBroadcastStats</a>#ab42441a flags:<a href="/type/%23" >#</a> dark:flags.0?true channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/stats.BroadcastStats" >stats.BroadcastStats</a>; +<a href="/method/stats.loadAsyncGraph" >stats.loadAsyncGraph</a>#621d5fa0 flags:<a href="/type/%23" >#</a> token:<a href="/type/string" >string</a> x:flags.0?<a href="/type/long" >long</a> = <a href="/type/StatsGraph" >StatsGraph</a>; +<a href="/method/stats.getMegagroupStats" >stats.getMegagroupStats</a>#dcdf8607 flags:<a href="/type/%23" >#</a> dark:flags.0?true channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/stats.MegagroupStats" >stats.MegagroupStats</a>; +<a href="/method/stats.getMessagePublicForwards" >stats.getMessagePublicForwards</a>#5630281b channel:<a href="/type/InputChannel" >InputChannel</a> msg_id:<a href="/type/int" >int</a> offset_rate:<a href="/type/int" >int</a> offset_peer:<a href="/type/InputPeer" >InputPeer</a> offset_id:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.Messages" >messages.Messages</a>; +<a href="/method/stats.getMessageStats" >stats.getMessageStats</a>#b6e0a3f5 flags:<a href="/type/%23" >#</a> dark:flags.0?true channel:<a href="/type/InputChannel" >InputChannel</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/stats.MessageStats" >stats.MessageStats</a>;</code></pre> +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/schema/json.html b/data/core.telegram.org/schema/json.html new file mode 100644 index 0000000000..a6e0156ccf --- /dev/null +++ b/data/core.telegram.org/schema/json.html @@ -0,0 +1 @@ +{"constructors":[{"id":"-1132882121","predicate":"boolFalse","params":[],"type":"Bool"},{"id":"-1720552011","predicate":"boolTrue","params":[],"type":"Bool"},{"id":"1072550713","predicate":"true","params":[],"type":"True"},{"id":"481674261","predicate":"vector","params":[],"type":"Vector t"},{"id":"-994444869","predicate":"error","params":[{"name":"code","type":"int"},{"name":"text","type":"string"}],"type":"Error"},{"id":"1450380236","predicate":"null","params":[],"type":"Null"},{"id":"2134579434","predicate":"inputPeerEmpty","params":[],"type":"InputPeer"},{"id":"2107670217","predicate":"inputPeerSelf","params":[],"type":"InputPeer"},{"id":"900291769","predicate":"inputPeerChat","params":[{"name":"chat_id","type":"long"}],"type":"InputPeer"},{"id":"-1182234929","predicate":"inputUserEmpty","params":[],"type":"InputUser"},{"id":"-138301121","predicate":"inputUserSelf","params":[],"type":"InputUser"},{"id":"-208488460","predicate":"inputPhoneContact","params":[{"name":"client_id","type":"long"},{"name":"phone","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"}],"type":"InputContact"},{"id":"-181407105","predicate":"inputFile","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"name","type":"string"},{"name":"md5_checksum","type":"string"}],"type":"InputFile"},{"id":"-1771768449","predicate":"inputMediaEmpty","params":[],"type":"InputMedia"},{"id":"505969924","predicate":"inputMediaUploadedPhoto","params":[{"name":"flags","type":"#"},{"name":"file","type":"InputFile"},{"name":"stickers","type":"flags.0?Vector<InputDocument>"},{"name":"ttl_seconds","type":"flags.1?int"}],"type":"InputMedia"},{"id":"-1279654347","predicate":"inputMediaPhoto","params":[{"name":"flags","type":"#"},{"name":"id","type":"InputPhoto"},{"name":"ttl_seconds","type":"flags.0?int"}],"type":"InputMedia"},{"id":"-104578748","predicate":"inputMediaGeoPoint","params":[{"name":"geo_point","type":"InputGeoPoint"}],"type":"InputMedia"},{"id":"-122978821","predicate":"inputMediaContact","params":[{"name":"phone_number","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"vcard","type":"string"}],"type":"InputMedia"},{"id":"480546647","predicate":"inputChatPhotoEmpty","params":[],"type":"InputChatPhoto"},{"id":"-968723890","predicate":"inputChatUploadedPhoto","params":[{"name":"flags","type":"#"},{"name":"file","type":"flags.0?InputFile"},{"name":"video","type":"flags.1?InputFile"},{"name":"video_start_ts","type":"flags.2?double"}],"type":"InputChatPhoto"},{"id":"-1991004873","predicate":"inputChatPhoto","params":[{"name":"id","type":"InputPhoto"}],"type":"InputChatPhoto"},{"id":"-457104426","predicate":"inputGeoPointEmpty","params":[],"type":"InputGeoPoint"},{"id":"1210199983","predicate":"inputGeoPoint","params":[{"name":"flags","type":"#"},{"name":"lat","type":"double"},{"name":"long","type":"double"},{"name":"accuracy_radius","type":"flags.0?int"}],"type":"InputGeoPoint"},{"id":"483901197","predicate":"inputPhotoEmpty","params":[],"type":"InputPhoto"},{"id":"1001634122","predicate":"inputPhoto","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"}],"type":"InputPhoto"},{"id":"-539317279","predicate":"inputFileLocation","params":[{"name":"volume_id","type":"long"},{"name":"local_id","type":"int"},{"name":"secret","type":"long"},{"name":"file_reference","type":"bytes"}],"type":"InputFileLocation"},{"id":"1498486562","predicate":"peerUser","params":[{"name":"user_id","type":"long"}],"type":"Peer"},{"id":"918946202","predicate":"peerChat","params":[{"name":"chat_id","type":"long"}],"type":"Peer"},{"id":"-1432995067","predicate":"storage.fileUnknown","params":[],"type":"storage.FileType"},{"id":"1086091090","predicate":"storage.filePartial","params":[],"type":"storage.FileType"},{"id":"8322574","predicate":"storage.fileJpeg","params":[],"type":"storage.FileType"},{"id":"-891180321","predicate":"storage.fileGif","params":[],"type":"storage.FileType"},{"id":"172975040","predicate":"storage.filePng","params":[],"type":"storage.FileType"},{"id":"-1373745011","predicate":"storage.filePdf","params":[],"type":"storage.FileType"},{"id":"1384777335","predicate":"storage.fileMp3","params":[],"type":"storage.FileType"},{"id":"1258941372","predicate":"storage.fileMov","params":[],"type":"storage.FileType"},{"id":"-1278304028","predicate":"storage.fileMp4","params":[],"type":"storage.FileType"},{"id":"276907596","predicate":"storage.fileWebp","params":[],"type":"storage.FileType"},{"id":"-742634630","predicate":"userEmpty","params":[{"name":"id","type":"long"}],"type":"User"},{"id":"1326562017","predicate":"userProfilePhotoEmpty","params":[],"type":"UserProfilePhoto"},{"id":"-2100168954","predicate":"userProfilePhoto","params":[{"name":"flags","type":"#"},{"name":"has_video","type":"flags.0?true"},{"name":"photo_id","type":"long"},{"name":"stripped_thumb","type":"flags.1?bytes"},{"name":"dc_id","type":"int"}],"type":"UserProfilePhoto"},{"id":"164646985","predicate":"userStatusEmpty","params":[],"type":"UserStatus"},{"id":"-306628279","predicate":"userStatusOnline","params":[{"name":"expires","type":"int"}],"type":"UserStatus"},{"id":"9203775","predicate":"userStatusOffline","params":[{"name":"was_online","type":"int"}],"type":"UserStatus"},{"id":"693512293","predicate":"chatEmpty","params":[{"name":"id","type":"long"}],"type":"Chat"},{"id":"1103884886","predicate":"chat","params":[{"name":"flags","type":"#"},{"name":"creator","type":"flags.0?true"},{"name":"kicked","type":"flags.1?true"},{"name":"left","type":"flags.2?true"},{"name":"deactivated","type":"flags.5?true"},{"name":"call_active","type":"flags.23?true"},{"name":"call_not_empty","type":"flags.24?true"},{"name":"noforwards","type":"flags.25?true"},{"name":"id","type":"long"},{"name":"title","type":"string"},{"name":"photo","type":"ChatPhoto"},{"name":"participants_count","type":"int"},{"name":"date","type":"int"},{"name":"version","type":"int"},{"name":"migrated_to","type":"flags.6?InputChannel"},{"name":"admin_rights","type":"flags.14?ChatAdminRights"},{"name":"default_banned_rights","type":"flags.18?ChatBannedRights"}],"type":"Chat"},{"id":"1704108455","predicate":"chatForbidden","params":[{"name":"id","type":"long"},{"name":"title","type":"string"}],"type":"Chat"},{"id":"1304281241","predicate":"chatFull","params":[{"name":"flags","type":"#"},{"name":"can_set_username","type":"flags.7?true"},{"name":"has_scheduled","type":"flags.8?true"},{"name":"id","type":"long"},{"name":"about","type":"string"},{"name":"participants","type":"ChatParticipants"},{"name":"chat_photo","type":"flags.2?Photo"},{"name":"notify_settings","type":"PeerNotifySettings"},{"name":"exported_invite","type":"flags.13?ExportedChatInvite"},{"name":"bot_info","type":"flags.3?Vector<BotInfo>"},{"name":"pinned_msg_id","type":"flags.6?int"},{"name":"folder_id","type":"flags.11?int"},{"name":"call","type":"flags.12?InputGroupCall"},{"name":"ttl_period","type":"flags.14?int"},{"name":"groupcall_default_join_as","type":"flags.15?Peer"},{"name":"theme_emoticon","type":"flags.16?string"}],"type":"ChatFull"},{"id":"-1070776313","predicate":"chatParticipant","params":[{"name":"user_id","type":"long"},{"name":"inviter_id","type":"long"},{"name":"date","type":"int"}],"type":"ChatParticipant"},{"id":"-2023500831","predicate":"chatParticipantsForbidden","params":[{"name":"flags","type":"#"},{"name":"chat_id","type":"long"},{"name":"self_participant","type":"flags.0?ChatParticipant"}],"type":"ChatParticipants"},{"id":"1018991608","predicate":"chatParticipants","params":[{"name":"chat_id","type":"long"},{"name":"participants","type":"Vector<ChatParticipant>"},{"name":"version","type":"int"}],"type":"ChatParticipants"},{"id":"935395612","predicate":"chatPhotoEmpty","params":[],"type":"ChatPhoto"},{"id":"476978193","predicate":"chatPhoto","params":[{"name":"flags","type":"#"},{"name":"has_video","type":"flags.0?true"},{"name":"photo_id","type":"long"},{"name":"stripped_thumb","type":"flags.1?bytes"},{"name":"dc_id","type":"int"}],"type":"ChatPhoto"},{"id":"-1868117372","predicate":"messageEmpty","params":[{"name":"flags","type":"#"},{"name":"id","type":"int"},{"name":"peer_id","type":"flags.0?Peer"}],"type":"Message"},{"id":"-2049520670","predicate":"message","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"mentioned","type":"flags.4?true"},{"name":"media_unread","type":"flags.5?true"},{"name":"silent","type":"flags.13?true"},{"name":"post","type":"flags.14?true"},{"name":"from_scheduled","type":"flags.18?true"},{"name":"legacy","type":"flags.19?true"},{"name":"edit_hide","type":"flags.21?true"},{"name":"pinned","type":"flags.24?true"},{"name":"noforwards","type":"flags.26?true"},{"name":"id","type":"int"},{"name":"from_id","type":"flags.8?Peer"},{"name":"peer_id","type":"Peer"},{"name":"fwd_from","type":"flags.2?MessageFwdHeader"},{"name":"via_bot_id","type":"flags.11?long"},{"name":"reply_to","type":"flags.3?MessageReplyHeader"},{"name":"date","type":"int"},{"name":"message","type":"string"},{"name":"media","type":"flags.9?MessageMedia"},{"name":"reply_markup","type":"flags.6?ReplyMarkup"},{"name":"entities","type":"flags.7?Vector<MessageEntity>"},{"name":"views","type":"flags.10?int"},{"name":"forwards","type":"flags.10?int"},{"name":"replies","type":"flags.23?MessageReplies"},{"name":"edit_date","type":"flags.15?int"},{"name":"post_author","type":"flags.16?string"},{"name":"grouped_id","type":"flags.17?long"},{"name":"restriction_reason","type":"flags.22?Vector<RestrictionReason>"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Message"},{"id":"721967202","predicate":"messageService","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"mentioned","type":"flags.4?true"},{"name":"media_unread","type":"flags.5?true"},{"name":"silent","type":"flags.13?true"},{"name":"post","type":"flags.14?true"},{"name":"legacy","type":"flags.19?true"},{"name":"id","type":"int"},{"name":"from_id","type":"flags.8?Peer"},{"name":"peer_id","type":"Peer"},{"name":"reply_to","type":"flags.3?MessageReplyHeader"},{"name":"date","type":"int"},{"name":"action","type":"MessageAction"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Message"},{"id":"1038967584","predicate":"messageMediaEmpty","params":[],"type":"MessageMedia"},{"id":"1766936791","predicate":"messageMediaPhoto","params":[{"name":"flags","type":"#"},{"name":"photo","type":"flags.0?Photo"},{"name":"ttl_seconds","type":"flags.2?int"}],"type":"MessageMedia"},{"id":"1457575028","predicate":"messageMediaGeo","params":[{"name":"geo","type":"GeoPoint"}],"type":"MessageMedia"},{"id":"1882335561","predicate":"messageMediaContact","params":[{"name":"phone_number","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"vcard","type":"string"},{"name":"user_id","type":"long"}],"type":"MessageMedia"},{"id":"-1618676578","predicate":"messageMediaUnsupported","params":[],"type":"MessageMedia"},{"id":"-1230047312","predicate":"messageActionEmpty","params":[],"type":"MessageAction"},{"id":"-1119368275","predicate":"messageActionChatCreate","params":[{"name":"title","type":"string"},{"name":"users","type":"Vector<long>"}],"type":"MessageAction"},{"id":"-1247687078","predicate":"messageActionChatEditTitle","params":[{"name":"title","type":"string"}],"type":"MessageAction"},{"id":"2144015272","predicate":"messageActionChatEditPhoto","params":[{"name":"photo","type":"Photo"}],"type":"MessageAction"},{"id":"-1780220945","predicate":"messageActionChatDeletePhoto","params":[],"type":"MessageAction"},{"id":"365886720","predicate":"messageActionChatAddUser","params":[{"name":"users","type":"Vector<long>"}],"type":"MessageAction"},{"id":"-1539362612","predicate":"messageActionChatDeleteUser","params":[{"name":"user_id","type":"long"}],"type":"MessageAction"},{"id":"739712882","predicate":"dialog","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.2?true"},{"name":"unread_mark","type":"flags.3?true"},{"name":"peer","type":"Peer"},{"name":"top_message","type":"int"},{"name":"read_inbox_max_id","type":"int"},{"name":"read_outbox_max_id","type":"int"},{"name":"unread_count","type":"int"},{"name":"unread_mentions_count","type":"int"},{"name":"notify_settings","type":"PeerNotifySettings"},{"name":"pts","type":"flags.0?int"},{"name":"draft","type":"flags.1?DraftMessage"},{"name":"folder_id","type":"flags.4?int"}],"type":"Dialog"},{"id":"590459437","predicate":"photoEmpty","params":[{"name":"id","type":"long"}],"type":"Photo"},{"id":"-82216347","predicate":"photo","params":[{"name":"flags","type":"#"},{"name":"has_stickers","type":"flags.0?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"date","type":"int"},{"name":"sizes","type":"Vector<PhotoSize>"},{"name":"video_sizes","type":"flags.1?Vector<VideoSize>"},{"name":"dc_id","type":"int"}],"type":"Photo"},{"id":"236446268","predicate":"photoSizeEmpty","params":[{"name":"type","type":"string"}],"type":"PhotoSize"},{"id":"1976012384","predicate":"photoSize","params":[{"name":"type","type":"string"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"size","type":"int"}],"type":"PhotoSize"},{"id":"35527382","predicate":"photoCachedSize","params":[{"name":"type","type":"string"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"bytes","type":"bytes"}],"type":"PhotoSize"},{"id":"286776671","predicate":"geoPointEmpty","params":[],"type":"GeoPoint"},{"id":"-1297942941","predicate":"geoPoint","params":[{"name":"flags","type":"#"},{"name":"long","type":"double"},{"name":"lat","type":"double"},{"name":"access_hash","type":"long"},{"name":"accuracy_radius","type":"flags.0?int"}],"type":"GeoPoint"},{"id":"1577067778","predicate":"auth.sentCode","params":[{"name":"flags","type":"#"},{"name":"type","type":"auth.SentCodeType"},{"name":"phone_code_hash","type":"string"},{"name":"next_type","type":"flags.1?auth.CodeType"},{"name":"timeout","type":"flags.2?int"}],"type":"auth.SentCode"},{"id":"-855308010","predicate":"auth.authorization","params":[{"name":"flags","type":"#"},{"name":"tmp_sessions","type":"flags.0?int"},{"name":"user","type":"User"}],"type":"auth.Authorization"},{"id":"-1271602504","predicate":"auth.exportedAuthorization","params":[{"name":"id","type":"long"},{"name":"bytes","type":"bytes"}],"type":"auth.ExportedAuthorization"},{"id":"-1195615476","predicate":"inputNotifyPeer","params":[{"name":"peer","type":"InputPeer"}],"type":"InputNotifyPeer"},{"id":"423314455","predicate":"inputNotifyUsers","params":[],"type":"InputNotifyPeer"},{"id":"1251338318","predicate":"inputNotifyChats","params":[],"type":"InputNotifyPeer"},{"id":"-1673717362","predicate":"inputPeerNotifySettings","params":[{"name":"flags","type":"#"},{"name":"show_previews","type":"flags.0?Bool"},{"name":"silent","type":"flags.1?Bool"},{"name":"mute_until","type":"flags.2?int"},{"name":"sound","type":"flags.3?string"}],"type":"InputPeerNotifySettings"},{"id":"-1353671392","predicate":"peerNotifySettings","params":[{"name":"flags","type":"#"},{"name":"show_previews","type":"flags.0?Bool"},{"name":"silent","type":"flags.1?Bool"},{"name":"mute_until","type":"flags.2?int"},{"name":"sound","type":"flags.3?string"}],"type":"PeerNotifySettings"},{"id":"1933519201","predicate":"peerSettings","params":[{"name":"flags","type":"#"},{"name":"report_spam","type":"flags.0?true"},{"name":"add_contact","type":"flags.1?true"},{"name":"block_contact","type":"flags.2?true"},{"name":"share_contact","type":"flags.3?true"},{"name":"need_contacts_exception","type":"flags.4?true"},{"name":"report_geo","type":"flags.5?true"},{"name":"autoarchived","type":"flags.7?true"},{"name":"invite_members","type":"flags.8?true"},{"name":"geo_distance","type":"flags.6?int"}],"type":"PeerSettings"},{"id":"-1539849235","predicate":"wallPaper","params":[{"name":"id","type":"long"},{"name":"flags","type":"#"},{"name":"creator","type":"flags.0?true"},{"name":"default","type":"flags.1?true"},{"name":"pattern","type":"flags.3?true"},{"name":"dark","type":"flags.4?true"},{"name":"access_hash","type":"long"},{"name":"slug","type":"string"},{"name":"document","type":"Document"},{"name":"settings","type":"flags.2?WallPaperSettings"}],"type":"WallPaper"},{"id":"1490799288","predicate":"inputReportReasonSpam","params":[],"type":"ReportReason"},{"id":"505595789","predicate":"inputReportReasonViolence","params":[],"type":"ReportReason"},{"id":"777640226","predicate":"inputReportReasonPornography","params":[],"type":"ReportReason"},{"id":"-1376497949","predicate":"inputReportReasonChildAbuse","params":[],"type":"ReportReason"},{"id":"-1041980751","predicate":"inputReportReasonOther","params":[],"type":"ReportReason"},{"id":"-694681851","predicate":"userFull","params":[{"name":"flags","type":"#"},{"name":"blocked","type":"flags.0?true"},{"name":"phone_calls_available","type":"flags.4?true"},{"name":"phone_calls_private","type":"flags.5?true"},{"name":"can_pin_message","type":"flags.7?true"},{"name":"has_scheduled","type":"flags.12?true"},{"name":"video_calls_available","type":"flags.13?true"},{"name":"user","type":"User"},{"name":"about","type":"flags.1?string"},{"name":"settings","type":"PeerSettings"},{"name":"profile_photo","type":"flags.2?Photo"},{"name":"notify_settings","type":"PeerNotifySettings"},{"name":"bot_info","type":"flags.3?BotInfo"},{"name":"pinned_msg_id","type":"flags.6?int"},{"name":"common_chats_count","type":"int"},{"name":"folder_id","type":"flags.11?int"},{"name":"ttl_period","type":"flags.14?int"},{"name":"theme_emoticon","type":"flags.15?string"}],"type":"UserFull"},{"id":"341499403","predicate":"contact","params":[{"name":"user_id","type":"long"},{"name":"mutual","type":"Bool"}],"type":"Contact"},{"id":"-1052885936","predicate":"importedContact","params":[{"name":"user_id","type":"long"},{"name":"client_id","type":"long"}],"type":"ImportedContact"},{"id":"383348795","predicate":"contactStatus","params":[{"name":"user_id","type":"long"},{"name":"status","type":"UserStatus"}],"type":"ContactStatus"},{"id":"-1219778094","predicate":"contacts.contactsNotModified","params":[],"type":"contacts.Contacts"},{"id":"-353862078","predicate":"contacts.contacts","params":[{"name":"contacts","type":"Vector<Contact>"},{"name":"saved_count","type":"int"},{"name":"users","type":"Vector<User>"}],"type":"contacts.Contacts"},{"id":"2010127419","predicate":"contacts.importedContacts","params":[{"name":"imported","type":"Vector<ImportedContact>"},{"name":"popular_invites","type":"Vector<PopularContact>"},{"name":"retry_contacts","type":"Vector<long>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.ImportedContacts"},{"id":"182326673","predicate":"contacts.blocked","params":[{"name":"blocked","type":"Vector<PeerBlocked>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.Blocked"},{"id":"-513392236","predicate":"contacts.blockedSlice","params":[{"name":"count","type":"int"},{"name":"blocked","type":"Vector<PeerBlocked>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.Blocked"},{"id":"364538944","predicate":"messages.dialogs","params":[{"name":"dialogs","type":"Vector<Dialog>"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Dialogs"},{"id":"1910543603","predicate":"messages.dialogsSlice","params":[{"name":"count","type":"int"},{"name":"dialogs","type":"Vector<Dialog>"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Dialogs"},{"id":"-1938715001","predicate":"messages.messages","params":[{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Messages"},{"id":"978610270","predicate":"messages.messagesSlice","params":[{"name":"flags","type":"#"},{"name":"inexact","type":"flags.1?true"},{"name":"count","type":"int"},{"name":"next_rate","type":"flags.0?int"},{"name":"offset_id_offset","type":"flags.2?int"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Messages"},{"id":"1694474197","predicate":"messages.chats","params":[{"name":"chats","type":"Vector<Chat>"}],"type":"messages.Chats"},{"id":"-438840932","predicate":"messages.chatFull","params":[{"name":"full_chat","type":"ChatFull"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.ChatFull"},{"id":"-1269012015","predicate":"messages.affectedHistory","params":[{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"offset","type":"int"}],"type":"messages.AffectedHistory"},{"id":"1474492012","predicate":"inputMessagesFilterEmpty","params":[],"type":"MessagesFilter"},{"id":"-1777752804","predicate":"inputMessagesFilterPhotos","params":[],"type":"MessagesFilter"},{"id":"-1614803355","predicate":"inputMessagesFilterVideo","params":[],"type":"MessagesFilter"},{"id":"1458172132","predicate":"inputMessagesFilterPhotoVideo","params":[],"type":"MessagesFilter"},{"id":"-1629621880","predicate":"inputMessagesFilterDocument","params":[],"type":"MessagesFilter"},{"id":"2129714567","predicate":"inputMessagesFilterUrl","params":[],"type":"MessagesFilter"},{"id":"-3644025","predicate":"inputMessagesFilterGif","params":[],"type":"MessagesFilter"},{"id":"522914557","predicate":"updateNewMessage","params":[{"name":"message","type":"Message"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"1318109142","predicate":"updateMessageID","params":[{"name":"id","type":"int"},{"name":"random_id","type":"long"}],"type":"Update"},{"id":"-1576161051","predicate":"updateDeleteMessages","params":[{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1071741569","predicate":"updateUserTyping","params":[{"name":"user_id","type":"long"},{"name":"action","type":"SendMessageAction"}],"type":"Update"},{"id":"-2092401936","predicate":"updateChatUserTyping","params":[{"name":"chat_id","type":"long"},{"name":"from_id","type":"Peer"},{"name":"action","type":"SendMessageAction"}],"type":"Update"},{"id":"125178264","predicate":"updateChatParticipants","params":[{"name":"participants","type":"ChatParticipants"}],"type":"Update"},{"id":"-440534818","predicate":"updateUserStatus","params":[{"name":"user_id","type":"long"},{"name":"status","type":"UserStatus"}],"type":"Update"},{"id":"-1007549728","predicate":"updateUserName","params":[{"name":"user_id","type":"long"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"username","type":"string"}],"type":"Update"},{"id":"-232290676","predicate":"updateUserPhoto","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"},{"name":"photo","type":"UserProfilePhoto"},{"name":"previous","type":"Bool"}],"type":"Update"},{"id":"-1519637954","predicate":"updates.state","params":[{"name":"pts","type":"int"},{"name":"qts","type":"int"},{"name":"date","type":"int"},{"name":"seq","type":"int"},{"name":"unread_count","type":"int"}],"type":"updates.State"},{"id":"1567990072","predicate":"updates.differenceEmpty","params":[{"name":"date","type":"int"},{"name":"seq","type":"int"}],"type":"updates.Difference"},{"id":"16030880","predicate":"updates.difference","params":[{"name":"new_messages","type":"Vector<Message>"},{"name":"new_encrypted_messages","type":"Vector<EncryptedMessage>"},{"name":"other_updates","type":"Vector<Update>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"state","type":"updates.State"}],"type":"updates.Difference"},{"id":"-1459938943","predicate":"updates.differenceSlice","params":[{"name":"new_messages","type":"Vector<Message>"},{"name":"new_encrypted_messages","type":"Vector<EncryptedMessage>"},{"name":"other_updates","type":"Vector<Update>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"intermediate_state","type":"updates.State"}],"type":"updates.Difference"},{"id":"-484987010","predicate":"updatesTooLong","params":[],"type":"Updates"},{"id":"826001400","predicate":"updateShortMessage","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"mentioned","type":"flags.4?true"},{"name":"media_unread","type":"flags.5?true"},{"name":"silent","type":"flags.13?true"},{"name":"id","type":"int"},{"name":"user_id","type":"long"},{"name":"message","type":"string"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"date","type":"int"},{"name":"fwd_from","type":"flags.2?MessageFwdHeader"},{"name":"via_bot_id","type":"flags.11?long"},{"name":"reply_to","type":"flags.3?MessageReplyHeader"},{"name":"entities","type":"flags.7?Vector<MessageEntity>"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Updates"},{"id":"1299050149","predicate":"updateShortChatMessage","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"mentioned","type":"flags.4?true"},{"name":"media_unread","type":"flags.5?true"},{"name":"silent","type":"flags.13?true"},{"name":"id","type":"int"},{"name":"from_id","type":"long"},{"name":"chat_id","type":"long"},{"name":"message","type":"string"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"date","type":"int"},{"name":"fwd_from","type":"flags.2?MessageFwdHeader"},{"name":"via_bot_id","type":"flags.11?long"},{"name":"reply_to","type":"flags.3?MessageReplyHeader"},{"name":"entities","type":"flags.7?Vector<MessageEntity>"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Updates"},{"id":"2027216577","predicate":"updateShort","params":[{"name":"update","type":"Update"},{"name":"date","type":"int"}],"type":"Updates"},{"id":"1918567619","predicate":"updatesCombined","params":[{"name":"updates","type":"Vector<Update>"},{"name":"users","type":"Vector<User>"},{"name":"chats","type":"Vector<Chat>"},{"name":"date","type":"int"},{"name":"seq_start","type":"int"},{"name":"seq","type":"int"}],"type":"Updates"},{"id":"1957577280","predicate":"updates","params":[{"name":"updates","type":"Vector<Update>"},{"name":"users","type":"Vector<User>"},{"name":"chats","type":"Vector<Chat>"},{"name":"date","type":"int"},{"name":"seq","type":"int"}],"type":"Updates"},{"id":"-1916114267","predicate":"photos.photos","params":[{"name":"photos","type":"Vector<Photo>"},{"name":"users","type":"Vector<User>"}],"type":"photos.Photos"},{"id":"352657236","predicate":"photos.photosSlice","params":[{"name":"count","type":"int"},{"name":"photos","type":"Vector<Photo>"},{"name":"users","type":"Vector<User>"}],"type":"photos.Photos"},{"id":"539045032","predicate":"photos.photo","params":[{"name":"photo","type":"Photo"},{"name":"users","type":"Vector<User>"}],"type":"photos.Photo"},{"id":"157948117","predicate":"upload.file","params":[{"name":"type","type":"storage.FileType"},{"name":"mtime","type":"int"},{"name":"bytes","type":"bytes"}],"type":"upload.File"},{"id":"414687501","predicate":"dcOption","params":[{"name":"flags","type":"#"},{"name":"ipv6","type":"flags.0?true"},{"name":"media_only","type":"flags.1?true"},{"name":"tcpo_only","type":"flags.2?true"},{"name":"cdn","type":"flags.3?true"},{"name":"static","type":"flags.4?true"},{"name":"id","type":"int"},{"name":"ip_address","type":"string"},{"name":"port","type":"int"},{"name":"secret","type":"flags.10?bytes"}],"type":"DcOption"},{"id":"856375399","predicate":"config","params":[{"name":"flags","type":"#"},{"name":"phonecalls_enabled","type":"flags.1?true"},{"name":"default_p2p_contacts","type":"flags.3?true"},{"name":"preload_featured_stickers","type":"flags.4?true"},{"name":"ignore_phone_entities","type":"flags.5?true"},{"name":"revoke_pm_inbox","type":"flags.6?true"},{"name":"blocked_mode","type":"flags.8?true"},{"name":"pfs_enabled","type":"flags.13?true"},{"name":"date","type":"int"},{"name":"expires","type":"int"},{"name":"test_mode","type":"Bool"},{"name":"this_dc","type":"int"},{"name":"dc_options","type":"Vector<DcOption>"},{"name":"dc_txt_domain_name","type":"string"},{"name":"chat_size_max","type":"int"},{"name":"megagroup_size_max","type":"int"},{"name":"forwarded_count_max","type":"int"},{"name":"online_update_period_ms","type":"int"},{"name":"offline_blur_timeout_ms","type":"int"},{"name":"offline_idle_timeout_ms","type":"int"},{"name":"online_cloud_timeout_ms","type":"int"},{"name":"notify_cloud_delay_ms","type":"int"},{"name":"notify_default_delay_ms","type":"int"},{"name":"push_chat_period_ms","type":"int"},{"name":"push_chat_limit","type":"int"},{"name":"saved_gifs_limit","type":"int"},{"name":"edit_time_limit","type":"int"},{"name":"revoke_time_limit","type":"int"},{"name":"revoke_pm_time_limit","type":"int"},{"name":"rating_e_decay","type":"int"},{"name":"stickers_recent_limit","type":"int"},{"name":"stickers_faved_limit","type":"int"},{"name":"channels_read_media_period","type":"int"},{"name":"tmp_sessions","type":"flags.0?int"},{"name":"pinned_dialogs_count_max","type":"int"},{"name":"pinned_infolder_count_max","type":"int"},{"name":"call_receive_timeout_ms","type":"int"},{"name":"call_ring_timeout_ms","type":"int"},{"name":"call_connect_timeout_ms","type":"int"},{"name":"call_packet_timeout_ms","type":"int"},{"name":"me_url_prefix","type":"string"},{"name":"autoupdate_url_prefix","type":"flags.7?string"},{"name":"gif_search_username","type":"flags.9?string"},{"name":"venue_search_username","type":"flags.10?string"},{"name":"img_search_username","type":"flags.11?string"},{"name":"static_maps_provider","type":"flags.12?string"},{"name":"caption_length_max","type":"int"},{"name":"message_length_max","type":"int"},{"name":"webfile_dc_id","type":"int"},{"name":"suggested_lang_code","type":"flags.2?string"},{"name":"lang_pack_version","type":"flags.2?int"},{"name":"base_lang_pack_version","type":"flags.2?int"}],"type":"Config"},{"id":"-1910892683","predicate":"nearestDc","params":[{"name":"country","type":"string"},{"name":"this_dc","type":"int"},{"name":"nearest_dc","type":"int"}],"type":"NearestDc"},{"id":"-860107216","predicate":"help.appUpdate","params":[{"name":"flags","type":"#"},{"name":"can_not_skip","type":"flags.0?true"},{"name":"id","type":"int"},{"name":"version","type":"string"},{"name":"text","type":"string"},{"name":"entities","type":"Vector<MessageEntity>"},{"name":"document","type":"flags.1?Document"},{"name":"url","type":"flags.2?string"},{"name":"sticker","type":"flags.3?Document"}],"type":"help.AppUpdate"},{"id":"-1000708810","predicate":"help.noAppUpdate","params":[],"type":"help.AppUpdate"},{"id":"415997816","predicate":"help.inviteText","params":[{"name":"message","type":"string"}],"type":"help.InviteText"},{"id":"314359194","predicate":"updateNewEncryptedMessage","params":[{"name":"message","type":"EncryptedMessage"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"386986326","predicate":"updateEncryptedChatTyping","params":[{"name":"chat_id","type":"int"}],"type":"Update"},{"id":"-1264392051","predicate":"updateEncryption","params":[{"name":"chat","type":"EncryptedChat"},{"name":"date","type":"int"}],"type":"Update"},{"id":"956179895","predicate":"updateEncryptedMessagesRead","params":[{"name":"chat_id","type":"int"},{"name":"max_date","type":"int"},{"name":"date","type":"int"}],"type":"Update"},{"id":"-1417756512","predicate":"encryptedChatEmpty","params":[{"name":"id","type":"int"}],"type":"EncryptedChat"},{"id":"1722964307","predicate":"encryptedChatWaiting","params":[{"name":"id","type":"int"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"}],"type":"EncryptedChat"},{"id":"1223809356","predicate":"encryptedChatRequested","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.0?int"},{"name":"id","type":"int"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_a","type":"bytes"}],"type":"EncryptedChat"},{"id":"1643173063","predicate":"encryptedChat","params":[{"name":"id","type":"int"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_a_or_b","type":"bytes"},{"name":"key_fingerprint","type":"long"}],"type":"EncryptedChat"},{"id":"505183301","predicate":"encryptedChatDiscarded","params":[{"name":"flags","type":"#"},{"name":"history_deleted","type":"flags.0?true"},{"name":"id","type":"int"}],"type":"EncryptedChat"},{"id":"-247351839","predicate":"inputEncryptedChat","params":[{"name":"chat_id","type":"int"},{"name":"access_hash","type":"long"}],"type":"InputEncryptedChat"},{"id":"-1038136962","predicate":"encryptedFileEmpty","params":[],"type":"EncryptedFile"},{"id":"1248893260","predicate":"encryptedFile","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"size","type":"int"},{"name":"dc_id","type":"int"},{"name":"key_fingerprint","type":"int"}],"type":"EncryptedFile"},{"id":"406307684","predicate":"inputEncryptedFileEmpty","params":[],"type":"InputEncryptedFile"},{"id":"1690108678","predicate":"inputEncryptedFileUploaded","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"md5_checksum","type":"string"},{"name":"key_fingerprint","type":"int"}],"type":"InputEncryptedFile"},{"id":"1511503333","predicate":"inputEncryptedFile","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputEncryptedFile"},{"id":"-182231723","predicate":"inputEncryptedFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputFileLocation"},{"id":"-317144808","predicate":"encryptedMessage","params":[{"name":"random_id","type":"long"},{"name":"chat_id","type":"int"},{"name":"date","type":"int"},{"name":"bytes","type":"bytes"},{"name":"file","type":"EncryptedFile"}],"type":"EncryptedMessage"},{"id":"594758406","predicate":"encryptedMessageService","params":[{"name":"random_id","type":"long"},{"name":"chat_id","type":"int"},{"name":"date","type":"int"},{"name":"bytes","type":"bytes"}],"type":"EncryptedMessage"},{"id":"-1058912715","predicate":"messages.dhConfigNotModified","params":[{"name":"random","type":"bytes"}],"type":"messages.DhConfig"},{"id":"740433629","predicate":"messages.dhConfig","params":[{"name":"g","type":"int"},{"name":"p","type":"bytes"},{"name":"version","type":"int"},{"name":"random","type":"bytes"}],"type":"messages.DhConfig"},{"id":"1443858741","predicate":"messages.sentEncryptedMessage","params":[{"name":"date","type":"int"}],"type":"messages.SentEncryptedMessage"},{"id":"-1802240206","predicate":"messages.sentEncryptedFile","params":[{"name":"date","type":"int"},{"name":"file","type":"EncryptedFile"}],"type":"messages.SentEncryptedMessage"},{"id":"-95482955","predicate":"inputFileBig","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"name","type":"string"}],"type":"InputFile"},{"id":"767652808","predicate":"inputEncryptedFileBigUploaded","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"key_fingerprint","type":"int"}],"type":"InputEncryptedFile"},{"id":"1037718609","predicate":"updateChatParticipantAdd","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"long"},{"name":"inviter_id","type":"long"},{"name":"date","type":"int"},{"name":"version","type":"int"}],"type":"Update"},{"id":"-483443337","predicate":"updateChatParticipantDelete","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"long"},{"name":"version","type":"int"}],"type":"Update"},{"id":"-1906403213","predicate":"updateDcOptions","params":[{"name":"dc_options","type":"Vector<DcOption>"}],"type":"Update"},{"id":"1530447553","predicate":"inputMediaUploadedDocument","params":[{"name":"flags","type":"#"},{"name":"nosound_video","type":"flags.3?true"},{"name":"force_file","type":"flags.4?true"},{"name":"file","type":"InputFile"},{"name":"thumb","type":"flags.2?InputFile"},{"name":"mime_type","type":"string"},{"name":"attributes","type":"Vector<DocumentAttribute>"},{"name":"stickers","type":"flags.0?Vector<InputDocument>"},{"name":"ttl_seconds","type":"flags.1?int"}],"type":"InputMedia"},{"id":"860303448","predicate":"inputMediaDocument","params":[{"name":"flags","type":"#"},{"name":"id","type":"InputDocument"},{"name":"ttl_seconds","type":"flags.0?int"},{"name":"query","type":"flags.1?string"}],"type":"InputMedia"},{"id":"-1666158377","predicate":"messageMediaDocument","params":[{"name":"flags","type":"#"},{"name":"document","type":"flags.0?Document"},{"name":"ttl_seconds","type":"flags.2?int"}],"type":"MessageMedia"},{"id":"1928391342","predicate":"inputDocumentEmpty","params":[],"type":"InputDocument"},{"id":"448771445","predicate":"inputDocument","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"}],"type":"InputDocument"},{"id":"-1160743548","predicate":"inputDocumentFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"thumb_size","type":"string"}],"type":"InputFileLocation"},{"id":"922273905","predicate":"documentEmpty","params":[{"name":"id","type":"long"}],"type":"Document"},{"id":"512177195","predicate":"document","params":[{"name":"flags","type":"#"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"date","type":"int"},{"name":"mime_type","type":"string"},{"name":"size","type":"int"},{"name":"thumbs","type":"flags.0?Vector<PhotoSize>"},{"name":"video_thumbs","type":"flags.1?Vector<VideoSize>"},{"name":"dc_id","type":"int"},{"name":"attributes","type":"Vector<DocumentAttribute>"}],"type":"Document"},{"id":"398898678","predicate":"help.support","params":[{"name":"phone_number","type":"string"},{"name":"user","type":"User"}],"type":"help.Support"},{"id":"-1613493288","predicate":"notifyPeer","params":[{"name":"peer","type":"Peer"}],"type":"NotifyPeer"},{"id":"-1261946036","predicate":"notifyUsers","params":[],"type":"NotifyPeer"},{"id":"-1073230141","predicate":"notifyChats","params":[],"type":"NotifyPeer"},{"id":"-1094555409","predicate":"updateNotifySettings","params":[{"name":"peer","type":"NotifyPeer"},{"name":"notify_settings","type":"PeerNotifySettings"}],"type":"Update"},{"id":"381645902","predicate":"sendMessageTypingAction","params":[],"type":"SendMessageAction"},{"id":"-44119819","predicate":"sendMessageCancelAction","params":[],"type":"SendMessageAction"},{"id":"-1584933265","predicate":"sendMessageRecordVideoAction","params":[],"type":"SendMessageAction"},{"id":"-378127636","predicate":"sendMessageUploadVideoAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"-718310409","predicate":"sendMessageRecordAudioAction","params":[],"type":"SendMessageAction"},{"id":"-212740181","predicate":"sendMessageUploadAudioAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"-774682074","predicate":"sendMessageUploadPhotoAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"-1441998364","predicate":"sendMessageUploadDocumentAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"393186209","predicate":"sendMessageGeoLocationAction","params":[],"type":"SendMessageAction"},{"id":"1653390447","predicate":"sendMessageChooseContactAction","params":[],"type":"SendMessageAction"},{"id":"-1290580579","predicate":"contacts.found","params":[{"name":"my_results","type":"Vector<Peer>"},{"name":"results","type":"Vector<Peer>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.Found"},{"id":"-337352679","predicate":"updateServiceNotification","params":[{"name":"flags","type":"#"},{"name":"popup","type":"flags.0?true"},{"name":"inbox_date","type":"flags.1?int"},{"name":"type","type":"string"},{"name":"message","type":"string"},{"name":"media","type":"MessageMedia"},{"name":"entities","type":"Vector<MessageEntity>"}],"type":"Update"},{"id":"-496024847","predicate":"userStatusRecently","params":[],"type":"UserStatus"},{"id":"129960444","predicate":"userStatusLastWeek","params":[],"type":"UserStatus"},{"id":"2011940674","predicate":"userStatusLastMonth","params":[],"type":"UserStatus"},{"id":"-298113238","predicate":"updatePrivacy","params":[{"name":"key","type":"PrivacyKey"},{"name":"rules","type":"Vector<PrivacyRule>"}],"type":"Update"},{"id":"1335282456","predicate":"inputPrivacyKeyStatusTimestamp","params":[],"type":"InputPrivacyKey"},{"id":"-1137792208","predicate":"privacyKeyStatusTimestamp","params":[],"type":"PrivacyKey"},{"id":"218751099","predicate":"inputPrivacyValueAllowContacts","params":[],"type":"InputPrivacyRule"},{"id":"407582158","predicate":"inputPrivacyValueAllowAll","params":[],"type":"InputPrivacyRule"},{"id":"320652927","predicate":"inputPrivacyValueAllowUsers","params":[{"name":"users","type":"Vector<InputUser>"}],"type":"InputPrivacyRule"},{"id":"195371015","predicate":"inputPrivacyValueDisallowContacts","params":[],"type":"InputPrivacyRule"},{"id":"-697604407","predicate":"inputPrivacyValueDisallowAll","params":[],"type":"InputPrivacyRule"},{"id":"-1877932953","predicate":"inputPrivacyValueDisallowUsers","params":[{"name":"users","type":"Vector<InputUser>"}],"type":"InputPrivacyRule"},{"id":"-123988","predicate":"privacyValueAllowContacts","params":[],"type":"PrivacyRule"},{"id":"1698855810","predicate":"privacyValueAllowAll","params":[],"type":"PrivacyRule"},{"id":"-1198497870","predicate":"privacyValueAllowUsers","params":[{"name":"users","type":"Vector<long>"}],"type":"PrivacyRule"},{"id":"-125240806","predicate":"privacyValueDisallowContacts","params":[],"type":"PrivacyRule"},{"id":"-1955338397","predicate":"privacyValueDisallowAll","params":[],"type":"PrivacyRule"},{"id":"-463335103","predicate":"privacyValueDisallowUsers","params":[{"name":"users","type":"Vector<long>"}],"type":"PrivacyRule"},{"id":"1352683077","predicate":"account.privacyRules","params":[{"name":"rules","type":"Vector<PrivacyRule>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"account.PrivacyRules"},{"id":"-1194283041","predicate":"accountDaysTTL","params":[{"name":"days","type":"int"}],"type":"AccountDaysTTL"},{"id":"88680979","predicate":"updateUserPhone","params":[{"name":"user_id","type":"long"},{"name":"phone","type":"string"}],"type":"Update"},{"id":"1815593308","predicate":"documentAttributeImageSize","params":[{"name":"w","type":"int"},{"name":"h","type":"int"}],"type":"DocumentAttribute"},{"id":"297109817","predicate":"documentAttributeAnimated","params":[],"type":"DocumentAttribute"},{"id":"1662637586","predicate":"documentAttributeSticker","params":[{"name":"flags","type":"#"},{"name":"mask","type":"flags.1?true"},{"name":"alt","type":"string"},{"name":"stickerset","type":"InputStickerSet"},{"name":"mask_coords","type":"flags.0?MaskCoords"}],"type":"DocumentAttribute"},{"id":"250621158","predicate":"documentAttributeVideo","params":[{"name":"flags","type":"#"},{"name":"round_message","type":"flags.0?true"},{"name":"supports_streaming","type":"flags.1?true"},{"name":"duration","type":"int"},{"name":"w","type":"int"},{"name":"h","type":"int"}],"type":"DocumentAttribute"},{"id":"-1739392570","predicate":"documentAttributeAudio","params":[{"name":"flags","type":"#"},{"name":"voice","type":"flags.10?true"},{"name":"duration","type":"int"},{"name":"title","type":"flags.0?string"},{"name":"performer","type":"flags.1?string"},{"name":"waveform","type":"flags.2?bytes"}],"type":"DocumentAttribute"},{"id":"358154344","predicate":"documentAttributeFilename","params":[{"name":"file_name","type":"string"}],"type":"DocumentAttribute"},{"id":"-244016606","predicate":"messages.stickersNotModified","params":[],"type":"messages.Stickers"},{"id":"816245886","predicate":"messages.stickers","params":[{"name":"hash","type":"long"},{"name":"stickers","type":"Vector<Document>"}],"type":"messages.Stickers"},{"id":"313694676","predicate":"stickerPack","params":[{"name":"emoticon","type":"string"},{"name":"documents","type":"Vector<long>"}],"type":"StickerPack"},{"id":"-395967805","predicate":"messages.allStickersNotModified","params":[],"type":"messages.AllStickers"},{"id":"-843329861","predicate":"messages.allStickers","params":[{"name":"hash","type":"long"},{"name":"sets","type":"Vector<StickerSet>"}],"type":"messages.AllStickers"},{"id":"-1667805217","predicate":"updateReadHistoryInbox","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.0?int"},{"name":"peer","type":"Peer"},{"name":"max_id","type":"int"},{"name":"still_unread_count","type":"int"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"791617983","predicate":"updateReadHistoryOutbox","params":[{"name":"peer","type":"Peer"},{"name":"max_id","type":"int"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-2066640507","predicate":"messages.affectedMessages","params":[{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"messages.AffectedMessages"},{"id":"2139689491","predicate":"updateWebPage","params":[{"name":"webpage","type":"WebPage"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-350980120","predicate":"webPageEmpty","params":[{"name":"id","type":"long"}],"type":"WebPage"},{"id":"-981018084","predicate":"webPagePending","params":[{"name":"id","type":"long"},{"name":"date","type":"int"}],"type":"WebPage"},{"id":"-392411726","predicate":"webPage","params":[{"name":"flags","type":"#"},{"name":"id","type":"long"},{"name":"url","type":"string"},{"name":"display_url","type":"string"},{"name":"hash","type":"int"},{"name":"type","type":"flags.0?string"},{"name":"site_name","type":"flags.1?string"},{"name":"title","type":"flags.2?string"},{"name":"description","type":"flags.3?string"},{"name":"photo","type":"flags.4?Photo"},{"name":"embed_url","type":"flags.5?string"},{"name":"embed_type","type":"flags.5?string"},{"name":"embed_width","type":"flags.6?int"},{"name":"embed_height","type":"flags.6?int"},{"name":"duration","type":"flags.7?int"},{"name":"author","type":"flags.8?string"},{"name":"document","type":"flags.9?Document"},{"name":"cached_page","type":"flags.10?Page"},{"name":"attributes","type":"flags.12?Vector<WebPageAttribute>"}],"type":"WebPage"},{"id":"-1557277184","predicate":"messageMediaWebPage","params":[{"name":"webpage","type":"WebPage"}],"type":"MessageMedia"},{"id":"-1392388579","predicate":"authorization","params":[{"name":"flags","type":"#"},{"name":"current","type":"flags.0?true"},{"name":"official_app","type":"flags.1?true"},{"name":"password_pending","type":"flags.2?true"},{"name":"encrypted_requests_disabled","type":"flags.3?true"},{"name":"call_requests_disabled","type":"flags.4?true"},{"name":"hash","type":"long"},{"name":"device_model","type":"string"},{"name":"platform","type":"string"},{"name":"system_version","type":"string"},{"name":"api_id","type":"int"},{"name":"app_name","type":"string"},{"name":"app_version","type":"string"},{"name":"date_created","type":"int"},{"name":"date_active","type":"int"},{"name":"ip","type":"string"},{"name":"country","type":"string"},{"name":"region","type":"string"}],"type":"Authorization"},{"id":"307276766","predicate":"account.authorizations","params":[{"name":"authorizations","type":"Vector<Authorization>"}],"type":"account.Authorizations"},{"id":"408623183","predicate":"account.password","params":[{"name":"flags","type":"#"},{"name":"has_recovery","type":"flags.0?true"},{"name":"has_secure_values","type":"flags.1?true"},{"name":"has_password","type":"flags.2?true"},{"name":"current_algo","type":"flags.2?PasswordKdfAlgo"},{"name":"srp_B","type":"flags.2?bytes"},{"name":"srp_id","type":"flags.2?long"},{"name":"hint","type":"flags.3?string"},{"name":"email_unconfirmed_pattern","type":"flags.4?string"},{"name":"new_algo","type":"PasswordKdfAlgo"},{"name":"new_secure_algo","type":"SecurePasswordKdfAlgo"},{"name":"secure_random","type":"bytes"},{"name":"pending_reset_date","type":"flags.5?int"}],"type":"account.Password"},{"id":"-1705233435","predicate":"account.passwordSettings","params":[{"name":"flags","type":"#"},{"name":"email","type":"flags.0?string"},{"name":"secure_settings","type":"flags.1?SecureSecretSettings"}],"type":"account.PasswordSettings"},{"id":"-1036572727","predicate":"account.passwordInputSettings","params":[{"name":"flags","type":"#"},{"name":"new_algo","type":"flags.0?PasswordKdfAlgo"},{"name":"new_password_hash","type":"flags.0?bytes"},{"name":"hint","type":"flags.0?string"},{"name":"email","type":"flags.1?string"},{"name":"new_secure_settings","type":"flags.2?SecureSecretSettings"}],"type":"account.PasswordInputSettings"},{"id":"326715557","predicate":"auth.passwordRecovery","params":[{"name":"email_pattern","type":"string"}],"type":"auth.PasswordRecovery"},{"id":"-1052959727","predicate":"inputMediaVenue","params":[{"name":"geo_point","type":"InputGeoPoint"},{"name":"title","type":"string"},{"name":"address","type":"string"},{"name":"provider","type":"string"},{"name":"venue_id","type":"string"},{"name":"venue_type","type":"string"}],"type":"InputMedia"},{"id":"784356159","predicate":"messageMediaVenue","params":[{"name":"geo","type":"GeoPoint"},{"name":"title","type":"string"},{"name":"address","type":"string"},{"name":"provider","type":"string"},{"name":"venue_id","type":"string"},{"name":"venue_type","type":"string"}],"type":"MessageMedia"},{"id":"-1551583367","predicate":"receivedNotifyMessage","params":[{"name":"id","type":"int"},{"name":"flags","type":"int"}],"type":"ReceivedNotifyMessage"},{"id":"-1316944408","predicate":"chatInviteExported","params":[{"name":"flags","type":"#"},{"name":"revoked","type":"flags.0?true"},{"name":"permanent","type":"flags.5?true"},{"name":"link","type":"string"},{"name":"admin_id","type":"long"},{"name":"date","type":"int"},{"name":"start_date","type":"flags.4?int"},{"name":"expire_date","type":"flags.1?int"},{"name":"usage_limit","type":"flags.2?int"},{"name":"usage","type":"flags.3?int"}],"type":"ExportedChatInvite"},{"id":"1516793212","predicate":"chatInviteAlready","params":[{"name":"chat","type":"Chat"}],"type":"ChatInvite"},{"id":"-540871282","predicate":"chatInvite","params":[{"name":"flags","type":"#"},{"name":"channel","type":"flags.0?true"},{"name":"broadcast","type":"flags.1?true"},{"name":"public","type":"flags.2?true"},{"name":"megagroup","type":"flags.3?true"},{"name":"title","type":"string"},{"name":"photo","type":"Photo"},{"name":"participants_count","type":"int"},{"name":"participants","type":"flags.4?Vector<User>"}],"type":"ChatInvite"},{"id":"51520707","predicate":"messageActionChatJoinedByLink","params":[{"name":"inviter_id","type":"long"}],"type":"MessageAction"},{"id":"1757493555","predicate":"updateReadMessagesContents","params":[{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-4838507","predicate":"inputStickerSetEmpty","params":[],"type":"InputStickerSet"},{"id":"-1645763991","predicate":"inputStickerSetID","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputStickerSet"},{"id":"-2044933984","predicate":"inputStickerSetShortName","params":[{"name":"short_name","type":"string"}],"type":"InputStickerSet"},{"id":"-673242758","predicate":"stickerSet","params":[{"name":"flags","type":"#"},{"name":"archived","type":"flags.1?true"},{"name":"official","type":"flags.2?true"},{"name":"masks","type":"flags.3?true"},{"name":"animated","type":"flags.5?true"},{"name":"videos","type":"flags.6?true"},{"name":"installed_date","type":"flags.0?int"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"title","type":"string"},{"name":"short_name","type":"string"},{"name":"thumbs","type":"flags.4?Vector<PhotoSize>"},{"name":"thumb_dc_id","type":"flags.4?int"},{"name":"thumb_version","type":"flags.4?int"},{"name":"count","type":"int"},{"name":"hash","type":"int"}],"type":"StickerSet"},{"id":"-1240849242","predicate":"messages.stickerSet","params":[{"name":"set","type":"StickerSet"},{"name":"packs","type":"Vector<StickerPack>"},{"name":"documents","type":"Vector<Document>"}],"type":"messages.StickerSet"},{"id":"1073147056","predicate":"user","params":[{"name":"flags","type":"#"},{"name":"self","type":"flags.10?true"},{"name":"contact","type":"flags.11?true"},{"name":"mutual_contact","type":"flags.12?true"},{"name":"deleted","type":"flags.13?true"},{"name":"bot","type":"flags.14?true"},{"name":"bot_chat_history","type":"flags.15?true"},{"name":"bot_nochats","type":"flags.16?true"},{"name":"verified","type":"flags.17?true"},{"name":"restricted","type":"flags.18?true"},{"name":"min","type":"flags.20?true"},{"name":"bot_inline_geo","type":"flags.21?true"},{"name":"support","type":"flags.23?true"},{"name":"scam","type":"flags.24?true"},{"name":"apply_min_photo","type":"flags.25?true"},{"name":"fake","type":"flags.26?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"flags.0?long"},{"name":"first_name","type":"flags.1?string"},{"name":"last_name","type":"flags.2?string"},{"name":"username","type":"flags.3?string"},{"name":"phone","type":"flags.4?string"},{"name":"photo","type":"flags.5?UserProfilePhoto"},{"name":"status","type":"flags.6?UserStatus"},{"name":"bot_info_version","type":"flags.14?int"},{"name":"restriction_reason","type":"flags.18?Vector<RestrictionReason>"},{"name":"bot_inline_placeholder","type":"flags.19?string"},{"name":"lang_code","type":"flags.22?string"}],"type":"User"},{"id":"-1032140601","predicate":"botCommand","params":[{"name":"command","type":"string"},{"name":"description","type":"string"}],"type":"BotCommand"},{"id":"460632885","predicate":"botInfo","params":[{"name":"user_id","type":"long"},{"name":"description","type":"string"},{"name":"commands","type":"Vector<BotCommand>"}],"type":"BotInfo"},{"id":"-1560655744","predicate":"keyboardButton","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"2002815875","predicate":"keyboardButtonRow","params":[{"name":"buttons","type":"Vector<KeyboardButton>"}],"type":"KeyboardButtonRow"},{"id":"-1606526075","predicate":"replyKeyboardHide","params":[{"name":"flags","type":"#"},{"name":"selective","type":"flags.2?true"}],"type":"ReplyMarkup"},{"id":"-2035021048","predicate":"replyKeyboardForceReply","params":[{"name":"flags","type":"#"},{"name":"single_use","type":"flags.1?true"},{"name":"selective","type":"flags.2?true"},{"name":"placeholder","type":"flags.3?string"}],"type":"ReplyMarkup"},{"id":"-2049074735","predicate":"replyKeyboardMarkup","params":[{"name":"flags","type":"#"},{"name":"resize","type":"flags.0?true"},{"name":"single_use","type":"flags.1?true"},{"name":"selective","type":"flags.2?true"},{"name":"rows","type":"Vector<KeyboardButtonRow>"},{"name":"placeholder","type":"flags.3?string"}],"type":"ReplyMarkup"},{"id":"-571955892","predicate":"inputPeerUser","params":[{"name":"user_id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputPeer"},{"id":"-233744186","predicate":"inputUser","params":[{"name":"user_id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputUser"},{"id":"-1148011883","predicate":"messageEntityUnknown","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-100378723","predicate":"messageEntityMention","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1868782349","predicate":"messageEntityHashtag","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1827637959","predicate":"messageEntityBotCommand","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1859134776","predicate":"messageEntityUrl","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1692693954","predicate":"messageEntityEmail","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-1117713463","predicate":"messageEntityBold","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-2106619040","predicate":"messageEntityItalic","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"681706865","predicate":"messageEntityCode","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1938967520","predicate":"messageEntityPre","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"},{"name":"language","type":"string"}],"type":"MessageEntity"},{"id":"1990644519","predicate":"messageEntityTextUrl","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"},{"name":"url","type":"string"}],"type":"MessageEntity"},{"id":"-1877614335","predicate":"updateShortSentMessage","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"id","type":"int"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"date","type":"int"},{"name":"media","type":"flags.9?MessageMedia"},{"name":"entities","type":"flags.7?Vector<MessageEntity>"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Updates"},{"id":"-292807034","predicate":"inputChannelEmpty","params":[],"type":"InputChannel"},{"id":"-212145112","predicate":"inputChannel","params":[{"name":"channel_id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputChannel"},{"id":"-1566230754","predicate":"peerChannel","params":[{"name":"channel_id","type":"long"}],"type":"Peer"},{"id":"666680316","predicate":"inputPeerChannel","params":[{"name":"channel_id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputPeer"},{"id":"-2107528095","predicate":"channel","params":[{"name":"flags","type":"#"},{"name":"creator","type":"flags.0?true"},{"name":"left","type":"flags.2?true"},{"name":"broadcast","type":"flags.5?true"},{"name":"verified","type":"flags.7?true"},{"name":"megagroup","type":"flags.8?true"},{"name":"restricted","type":"flags.9?true"},{"name":"signatures","type":"flags.11?true"},{"name":"min","type":"flags.12?true"},{"name":"scam","type":"flags.19?true"},{"name":"has_link","type":"flags.20?true"},{"name":"has_geo","type":"flags.21?true"},{"name":"slowmode_enabled","type":"flags.22?true"},{"name":"call_active","type":"flags.23?true"},{"name":"call_not_empty","type":"flags.24?true"},{"name":"fake","type":"flags.25?true"},{"name":"gigagroup","type":"flags.26?true"},{"name":"noforwards","type":"flags.27?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"flags.13?long"},{"name":"title","type":"string"},{"name":"username","type":"flags.6?string"},{"name":"photo","type":"ChatPhoto"},{"name":"date","type":"int"},{"name":"restriction_reason","type":"flags.9?Vector<RestrictionReason>"},{"name":"admin_rights","type":"flags.14?ChatAdminRights"},{"name":"banned_rights","type":"flags.15?ChatBannedRights"},{"name":"default_banned_rights","type":"flags.18?ChatBannedRights"},{"name":"participants_count","type":"flags.17?int"}],"type":"Chat"},{"id":"399807445","predicate":"channelForbidden","params":[{"name":"flags","type":"#"},{"name":"broadcast","type":"flags.5?true"},{"name":"megagroup","type":"flags.8?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"title","type":"string"},{"name":"until_date","type":"flags.16?int"}],"type":"Chat"},{"id":"2131196633","predicate":"contacts.resolvedPeer","params":[{"name":"peer","type":"Peer"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.ResolvedPeer"},{"id":"-374179305","predicate":"channelFull","params":[{"name":"flags","type":"#"},{"name":"can_view_participants","type":"flags.3?true"},{"name":"can_set_username","type":"flags.6?true"},{"name":"can_set_stickers","type":"flags.7?true"},{"name":"hidden_prehistory","type":"flags.10?true"},{"name":"can_set_location","type":"flags.16?true"},{"name":"has_scheduled","type":"flags.19?true"},{"name":"can_view_stats","type":"flags.20?true"},{"name":"blocked","type":"flags.22?true"},{"name":"id","type":"long"},{"name":"about","type":"string"},{"name":"participants_count","type":"flags.0?int"},{"name":"admins_count","type":"flags.1?int"},{"name":"kicked_count","type":"flags.2?int"},{"name":"banned_count","type":"flags.2?int"},{"name":"online_count","type":"flags.13?int"},{"name":"read_inbox_max_id","type":"int"},{"name":"read_outbox_max_id","type":"int"},{"name":"unread_count","type":"int"},{"name":"chat_photo","type":"Photo"},{"name":"notify_settings","type":"PeerNotifySettings"},{"name":"exported_invite","type":"flags.23?ExportedChatInvite"},{"name":"bot_info","type":"Vector<BotInfo>"},{"name":"migrated_from_chat_id","type":"flags.4?long"},{"name":"migrated_from_max_id","type":"flags.4?int"},{"name":"pinned_msg_id","type":"flags.5?int"},{"name":"stickerset","type":"flags.8?StickerSet"},{"name":"available_min_id","type":"flags.9?int"},{"name":"folder_id","type":"flags.11?int"},{"name":"linked_chat_id","type":"flags.14?long"},{"name":"location","type":"flags.15?ChannelLocation"},{"name":"slowmode_seconds","type":"flags.17?int"},{"name":"slowmode_next_send_date","type":"flags.18?int"},{"name":"stats_dc","type":"flags.12?int"},{"name":"pts","type":"int"},{"name":"call","type":"flags.21?InputGroupCall"},{"name":"ttl_period","type":"flags.24?int"},{"name":"pending_suggestions","type":"flags.25?Vector<string>"},{"name":"groupcall_default_join_as","type":"flags.26?Peer"},{"name":"theme_emoticon","type":"flags.27?string"}],"type":"ChatFull"},{"id":"182649427","predicate":"messageRange","params":[{"name":"min_id","type":"int"},{"name":"max_id","type":"int"}],"type":"MessageRange"},{"id":"1682413576","predicate":"messages.channelMessages","params":[{"name":"flags","type":"#"},{"name":"inexact","type":"flags.1?true"},{"name":"pts","type":"int"},{"name":"count","type":"int"},{"name":"offset_id_offset","type":"flags.2?int"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Messages"},{"id":"-1781355374","predicate":"messageActionChannelCreate","params":[{"name":"title","type":"string"}],"type":"MessageAction"},{"id":"277713951","predicate":"updateChannelTooLong","params":[{"name":"flags","type":"#"},{"name":"channel_id","type":"long"},{"name":"pts","type":"flags.0?int"}],"type":"Update"},{"id":"1666927625","predicate":"updateChannel","params":[{"name":"channel_id","type":"long"}],"type":"Update"},{"id":"1656358105","predicate":"updateNewChannelMessage","params":[{"name":"message","type":"Message"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1842450928","predicate":"updateReadChannelInbox","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.0?int"},{"name":"channel_id","type":"long"},{"name":"max_id","type":"int"},{"name":"still_unread_count","type":"int"},{"name":"pts","type":"int"}],"type":"Update"},{"id":"-1020437742","predicate":"updateDeleteChannelMessages","params":[{"name":"channel_id","type":"long"},{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-232346616","predicate":"updateChannelMessageViews","params":[{"name":"channel_id","type":"long"},{"name":"id","type":"int"},{"name":"views","type":"int"}],"type":"Update"},{"id":"1041346555","predicate":"updates.channelDifferenceEmpty","params":[{"name":"flags","type":"#"},{"name":"final","type":"flags.0?true"},{"name":"pts","type":"int"},{"name":"timeout","type":"flags.1?int"}],"type":"updates.ChannelDifference"},{"id":"-1531132162","predicate":"updates.channelDifferenceTooLong","params":[{"name":"flags","type":"#"},{"name":"final","type":"flags.0?true"},{"name":"timeout","type":"flags.1?int"},{"name":"dialog","type":"Dialog"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"updates.ChannelDifference"},{"id":"543450958","predicate":"updates.channelDifference","params":[{"name":"flags","type":"#"},{"name":"final","type":"flags.0?true"},{"name":"pts","type":"int"},{"name":"timeout","type":"flags.1?int"},{"name":"new_messages","type":"Vector<Message>"},{"name":"other_updates","type":"Vector<Update>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"updates.ChannelDifference"},{"id":"-1798033689","predicate":"channelMessagesFilterEmpty","params":[],"type":"ChannelMessagesFilter"},{"id":"-847783593","predicate":"channelMessagesFilter","params":[{"name":"flags","type":"#"},{"name":"exclude_new_messages","type":"flags.1?true"},{"name":"ranges","type":"Vector<MessageRange>"}],"type":"ChannelMessagesFilter"},{"id":"-1072953408","predicate":"channelParticipant","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"}],"type":"ChannelParticipant"},{"id":"682146919","predicate":"channelParticipantSelf","params":[{"name":"user_id","type":"long"},{"name":"inviter_id","type":"long"},{"name":"date","type":"int"}],"type":"ChannelParticipant"},{"id":"803602899","predicate":"channelParticipantCreator","params":[{"name":"flags","type":"#"},{"name":"user_id","type":"long"},{"name":"admin_rights","type":"ChatAdminRights"},{"name":"rank","type":"flags.0?string"}],"type":"ChannelParticipant"},{"id":"-566281095","predicate":"channelParticipantsRecent","params":[],"type":"ChannelParticipantsFilter"},{"id":"-1268741783","predicate":"channelParticipantsAdmins","params":[],"type":"ChannelParticipantsFilter"},{"id":"-1548400251","predicate":"channelParticipantsKicked","params":[{"name":"q","type":"string"}],"type":"ChannelParticipantsFilter"},{"id":"-1699676497","predicate":"channels.channelParticipants","params":[{"name":"count","type":"int"},{"name":"participants","type":"Vector<ChannelParticipant>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"channels.ChannelParticipants"},{"id":"-541588713","predicate":"channels.channelParticipant","params":[{"name":"participant","type":"ChannelParticipant"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"channels.ChannelParticipant"},{"id":"-462696732","predicate":"chatParticipantCreator","params":[{"name":"user_id","type":"long"}],"type":"ChatParticipant"},{"id":"-1600962725","predicate":"chatParticipantAdmin","params":[{"name":"user_id","type":"long"},{"name":"inviter_id","type":"long"},{"name":"date","type":"int"}],"type":"ChatParticipant"},{"id":"-674602590","predicate":"updateChatParticipantAdmin","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"long"},{"name":"is_admin","type":"Bool"},{"name":"version","type":"int"}],"type":"Update"},{"id":"-519864430","predicate":"messageActionChatMigrateTo","params":[{"name":"channel_id","type":"long"}],"type":"MessageAction"},{"id":"-365344535","predicate":"messageActionChannelMigrateFrom","params":[{"name":"title","type":"string"},{"name":"chat_id","type":"long"}],"type":"MessageAction"},{"id":"-1328445861","predicate":"channelParticipantsBots","params":[],"type":"ChannelParticipantsFilter"},{"id":"2013922064","predicate":"help.termsOfService","params":[{"name":"flags","type":"#"},{"name":"popup","type":"flags.0?true"},{"name":"id","type":"DataJSON"},{"name":"text","type":"string"},{"name":"entities","type":"Vector<MessageEntity>"},{"name":"min_age_confirm","type":"flags.1?int"}],"type":"help.TermsOfService"},{"id":"1753886890","predicate":"updateNewStickerSet","params":[{"name":"stickerset","type":"messages.StickerSet"}],"type":"Update"},{"id":"196268545","predicate":"updateStickerSetsOrder","params":[{"name":"flags","type":"#"},{"name":"masks","type":"flags.0?true"},{"name":"order","type":"Vector<long>"}],"type":"Update"},{"id":"1135492588","predicate":"updateStickerSets","params":[],"type":"Update"},{"id":"-402498398","predicate":"messages.savedGifsNotModified","params":[],"type":"messages.SavedGifs"},{"id":"-2069878259","predicate":"messages.savedGifs","params":[{"name":"hash","type":"long"},{"name":"gifs","type":"Vector<Document>"}],"type":"messages.SavedGifs"},{"id":"-1821035490","predicate":"updateSavedGifs","params":[],"type":"Update"},{"id":"864077702","predicate":"inputBotInlineMessageMediaAuto","params":[{"name":"flags","type":"#"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"1036876423","predicate":"inputBotInlineMessageText","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.0?true"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"-2000710887","predicate":"inputBotInlineResult","params":[{"name":"flags","type":"#"},{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"title","type":"flags.1?string"},{"name":"description","type":"flags.2?string"},{"name":"url","type":"flags.3?string"},{"name":"thumb","type":"flags.4?InputWebDocument"},{"name":"content","type":"flags.5?InputWebDocument"},{"name":"send_message","type":"InputBotInlineMessage"}],"type":"InputBotInlineResult"},{"id":"1984755728","predicate":"botInlineMessageMediaAuto","params":[{"name":"flags","type":"#"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"-1937807902","predicate":"botInlineMessageText","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.0?true"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"295067450","predicate":"botInlineResult","params":[{"name":"flags","type":"#"},{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"title","type":"flags.1?string"},{"name":"description","type":"flags.2?string"},{"name":"url","type":"flags.3?string"},{"name":"thumb","type":"flags.4?WebDocument"},{"name":"content","type":"flags.5?WebDocument"},{"name":"send_message","type":"BotInlineMessage"}],"type":"BotInlineResult"},{"id":"-1803769784","predicate":"messages.botResults","params":[{"name":"flags","type":"#"},{"name":"gallery","type":"flags.0?true"},{"name":"query_id","type":"long"},{"name":"next_offset","type":"flags.1?string"},{"name":"switch_pm","type":"flags.2?InlineBotSwitchPM"},{"name":"results","type":"Vector<BotInlineResult>"},{"name":"cache_time","type":"int"},{"name":"users","type":"Vector<User>"}],"type":"messages.BotResults"},{"id":"1232025500","predicate":"updateBotInlineQuery","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"query","type":"string"},{"name":"geo","type":"flags.0?GeoPoint"},{"name":"peer_type","type":"flags.1?InlineQueryPeerType"},{"name":"offset","type":"string"}],"type":"Update"},{"id":"317794823","predicate":"updateBotInlineSend","params":[{"name":"flags","type":"#"},{"name":"user_id","type":"long"},{"name":"query","type":"string"},{"name":"geo","type":"flags.0?GeoPoint"},{"name":"id","type":"string"},{"name":"msg_id","type":"flags.1?InputBotInlineMessageID"}],"type":"Update"},{"id":"1358283666","predicate":"inputMessagesFilterVoice","params":[],"type":"MessagesFilter"},{"id":"928101534","predicate":"inputMessagesFilterMusic","params":[],"type":"MessagesFilter"},{"id":"-1107622874","predicate":"inputPrivacyKeyChatInvite","params":[],"type":"InputPrivacyKey"},{"id":"1343122938","predicate":"privacyKeyChatInvite","params":[],"type":"PrivacyKey"},{"id":"1571494644","predicate":"exportedMessageLink","params":[{"name":"link","type":"string"},{"name":"html","type":"string"}],"type":"ExportedMessageLink"},{"id":"1601666510","predicate":"messageFwdHeader","params":[{"name":"flags","type":"#"},{"name":"imported","type":"flags.7?true"},{"name":"from_id","type":"flags.0?Peer"},{"name":"from_name","type":"flags.5?string"},{"name":"date","type":"int"},{"name":"channel_post","type":"flags.2?int"},{"name":"post_author","type":"flags.3?string"},{"name":"saved_from_peer","type":"flags.4?Peer"},{"name":"saved_from_msg_id","type":"flags.4?int"},{"name":"psa_type","type":"flags.6?string"}],"type":"MessageFwdHeader"},{"id":"457133559","predicate":"updateEditChannelMessage","params":[{"name":"message","type":"Message"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1799538451","predicate":"messageActionPinMessage","params":[],"type":"MessageAction"},{"id":"1923290508","predicate":"auth.codeTypeSms","params":[],"type":"auth.CodeType"},{"id":"1948046307","predicate":"auth.codeTypeCall","params":[],"type":"auth.CodeType"},{"id":"577556219","predicate":"auth.codeTypeFlashCall","params":[],"type":"auth.CodeType"},{"id":"1035688326","predicate":"auth.sentCodeTypeApp","params":[{"name":"length","type":"int"}],"type":"auth.SentCodeType"},{"id":"-1073693790","predicate":"auth.sentCodeTypeSms","params":[{"name":"length","type":"int"}],"type":"auth.SentCodeType"},{"id":"1398007207","predicate":"auth.sentCodeTypeCall","params":[{"name":"length","type":"int"}],"type":"auth.SentCodeType"},{"id":"-1425815847","predicate":"auth.sentCodeTypeFlashCall","params":[{"name":"pattern","type":"string"}],"type":"auth.SentCodeType"},{"id":"629866245","predicate":"keyboardButtonUrl","params":[{"name":"text","type":"string"},{"name":"url","type":"string"}],"type":"KeyboardButton"},{"id":"901503851","predicate":"keyboardButtonCallback","params":[{"name":"flags","type":"#"},{"name":"requires_password","type":"flags.0?true"},{"name":"text","type":"string"},{"name":"data","type":"bytes"}],"type":"KeyboardButton"},{"id":"-1318425559","predicate":"keyboardButtonRequestPhone","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"-59151553","predicate":"keyboardButtonRequestGeoLocation","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"90744648","predicate":"keyboardButtonSwitchInline","params":[{"name":"flags","type":"#"},{"name":"same_peer","type":"flags.0?true"},{"name":"text","type":"string"},{"name":"query","type":"string"}],"type":"KeyboardButton"},{"id":"1218642516","predicate":"replyInlineMarkup","params":[{"name":"rows","type":"Vector<KeyboardButtonRow>"}],"type":"ReplyMarkup"},{"id":"911761060","predicate":"messages.botCallbackAnswer","params":[{"name":"flags","type":"#"},{"name":"alert","type":"flags.1?true"},{"name":"has_url","type":"flags.3?true"},{"name":"native_ui","type":"flags.4?true"},{"name":"message","type":"flags.0?string"},{"name":"url","type":"flags.2?string"},{"name":"cache_time","type":"int"}],"type":"messages.BotCallbackAnswer"},{"id":"-1177566067","predicate":"updateBotCallbackQuery","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"peer","type":"Peer"},{"name":"msg_id","type":"int"},{"name":"chat_instance","type":"long"},{"name":"data","type":"flags.0?bytes"},{"name":"game_short_name","type":"flags.1?string"}],"type":"Update"},{"id":"649453030","predicate":"messages.messageEditData","params":[{"name":"flags","type":"#"},{"name":"caption","type":"flags.0?true"}],"type":"messages.MessageEditData"},{"id":"-469536605","predicate":"updateEditMessage","params":[{"name":"message","type":"Message"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1768777083","predicate":"inputBotInlineMessageMediaGeo","params":[{"name":"flags","type":"#"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"heading","type":"flags.0?int"},{"name":"period","type":"flags.1?int"},{"name":"proximity_notification_radius","type":"flags.3?int"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"1098628881","predicate":"inputBotInlineMessageMediaVenue","params":[{"name":"flags","type":"#"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"title","type":"string"},{"name":"address","type":"string"},{"name":"provider","type":"string"},{"name":"venue_id","type":"string"},{"name":"venue_type","type":"string"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"-1494368259","predicate":"inputBotInlineMessageMediaContact","params":[{"name":"flags","type":"#"},{"name":"phone_number","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"vcard","type":"string"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"85477117","predicate":"botInlineMessageMediaGeo","params":[{"name":"flags","type":"#"},{"name":"geo","type":"GeoPoint"},{"name":"heading","type":"flags.0?int"},{"name":"period","type":"flags.1?int"},{"name":"proximity_notification_radius","type":"flags.3?int"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"-1970903652","predicate":"botInlineMessageMediaVenue","params":[{"name":"flags","type":"#"},{"name":"geo","type":"GeoPoint"},{"name":"title","type":"string"},{"name":"address","type":"string"},{"name":"provider","type":"string"},{"name":"venue_id","type":"string"},{"name":"venue_type","type":"string"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"416402882","predicate":"botInlineMessageMediaContact","params":[{"name":"flags","type":"#"},{"name":"phone_number","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"vcard","type":"string"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"-1462213465","predicate":"inputBotInlineResultPhoto","params":[{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"photo","type":"InputPhoto"},{"name":"send_message","type":"InputBotInlineMessage"}],"type":"InputBotInlineResult"},{"id":"-459324","predicate":"inputBotInlineResultDocument","params":[{"name":"flags","type":"#"},{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"title","type":"flags.1?string"},{"name":"description","type":"flags.2?string"},{"name":"document","type":"InputDocument"},{"name":"send_message","type":"InputBotInlineMessage"}],"type":"InputBotInlineResult"},{"id":"400266251","predicate":"botInlineMediaResult","params":[{"name":"flags","type":"#"},{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"photo","type":"flags.0?Photo"},{"name":"document","type":"flags.1?Document"},{"name":"title","type":"flags.2?string"},{"name":"description","type":"flags.3?string"},{"name":"send_message","type":"BotInlineMessage"}],"type":"BotInlineResult"},{"id":"-1995686519","predicate":"inputBotInlineMessageID","params":[{"name":"dc_id","type":"int"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputBotInlineMessageID"},{"id":"1763610706","predicate":"updateInlineBotCallbackQuery","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"msg_id","type":"InputBotInlineMessageID"},{"name":"chat_instance","type":"long"},{"name":"data","type":"flags.0?bytes"},{"name":"game_short_name","type":"flags.1?string"}],"type":"Update"},{"id":"1008755359","predicate":"inlineBotSwitchPM","params":[{"name":"text","type":"string"},{"name":"start_param","type":"string"}],"type":"InlineBotSwitchPM"},{"id":"863093588","predicate":"messages.peerDialogs","params":[{"name":"dialogs","type":"Vector<Dialog>"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"state","type":"updates.State"}],"type":"messages.PeerDialogs"},{"id":"-305282981","predicate":"topPeer","params":[{"name":"peer","type":"Peer"},{"name":"rating","type":"double"}],"type":"TopPeer"},{"id":"-1419371685","predicate":"topPeerCategoryBotsPM","params":[],"type":"TopPeerCategory"},{"id":"344356834","predicate":"topPeerCategoryBotsInline","params":[],"type":"TopPeerCategory"},{"id":"104314861","predicate":"topPeerCategoryCorrespondents","params":[],"type":"TopPeerCategory"},{"id":"-1122524854","predicate":"topPeerCategoryGroups","params":[],"type":"TopPeerCategory"},{"id":"371037736","predicate":"topPeerCategoryChannels","params":[],"type":"TopPeerCategory"},{"id":"-75283823","predicate":"topPeerCategoryPeers","params":[{"name":"category","type":"TopPeerCategory"},{"name":"count","type":"int"},{"name":"peers","type":"Vector<TopPeer>"}],"type":"TopPeerCategoryPeers"},{"id":"-567906571","predicate":"contacts.topPeersNotModified","params":[],"type":"contacts.TopPeers"},{"id":"1891070632","predicate":"contacts.topPeers","params":[{"name":"categories","type":"Vector<TopPeerCategoryPeers>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.TopPeers"},{"id":"-595914432","predicate":"messageEntityMentionName","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"},{"name":"user_id","type":"long"}],"type":"MessageEntity"},{"id":"546203849","predicate":"inputMessageEntityMentionName","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"},{"name":"user_id","type":"InputUser"}],"type":"MessageEntity"},{"id":"975236280","predicate":"inputMessagesFilterChatPhotos","params":[],"type":"MessagesFilter"},{"id":"-1218471511","predicate":"updateReadChannelOutbox","params":[{"name":"channel_id","type":"long"},{"name":"max_id","type":"int"}],"type":"Update"},{"id":"-299124375","predicate":"updateDraftMessage","params":[{"name":"peer","type":"Peer"},{"name":"draft","type":"DraftMessage"}],"type":"Update"},{"id":"453805082","predicate":"draftMessageEmpty","params":[{"name":"flags","type":"#"},{"name":"date","type":"flags.0?int"}],"type":"DraftMessage"},{"id":"-40996577","predicate":"draftMessage","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"message","type":"string"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"},{"name":"date","type":"int"}],"type":"DraftMessage"},{"id":"-1615153660","predicate":"messageActionHistoryClear","params":[],"type":"MessageAction"},{"id":"-958657434","predicate":"messages.featuredStickersNotModified","params":[{"name":"count","type":"int"}],"type":"messages.FeaturedStickers"},{"id":"-2067782896","predicate":"messages.featuredStickers","params":[{"name":"hash","type":"long"},{"name":"count","type":"int"},{"name":"sets","type":"Vector<StickerSetCovered>"},{"name":"unread","type":"Vector<long>"}],"type":"messages.FeaturedStickers"},{"id":"1461528386","predicate":"updateReadFeaturedStickers","params":[],"type":"Update"},{"id":"186120336","predicate":"messages.recentStickersNotModified","params":[],"type":"messages.RecentStickers"},{"id":"-1999405994","predicate":"messages.recentStickers","params":[{"name":"hash","type":"long"},{"name":"packs","type":"Vector<StickerPack>"},{"name":"stickers","type":"Vector<Document>"},{"name":"dates","type":"Vector<int>"}],"type":"messages.RecentStickers"},{"id":"-1706939360","predicate":"updateRecentStickers","params":[],"type":"Update"},{"id":"1338747336","predicate":"messages.archivedStickers","params":[{"name":"count","type":"int"},{"name":"sets","type":"Vector<StickerSetCovered>"}],"type":"messages.ArchivedStickers"},{"id":"946083368","predicate":"messages.stickerSetInstallResultSuccess","params":[],"type":"messages.StickerSetInstallResult"},{"id":"904138920","predicate":"messages.stickerSetInstallResultArchive","params":[{"name":"sets","type":"Vector<StickerSetCovered>"}],"type":"messages.StickerSetInstallResult"},{"id":"1678812626","predicate":"stickerSetCovered","params":[{"name":"set","type":"StickerSet"},{"name":"cover","type":"Document"}],"type":"StickerSetCovered"},{"id":"-1574314746","predicate":"updateConfig","params":[],"type":"Update"},{"id":"861169551","predicate":"updatePtsChanged","params":[],"type":"Update"},{"id":"-440664550","predicate":"inputMediaPhotoExternal","params":[{"name":"flags","type":"#"},{"name":"url","type":"string"},{"name":"ttl_seconds","type":"flags.0?int"}],"type":"InputMedia"},{"id":"-78455655","predicate":"inputMediaDocumentExternal","params":[{"name":"flags","type":"#"},{"name":"url","type":"string"},{"name":"ttl_seconds","type":"flags.0?int"}],"type":"InputMedia"},{"id":"872932635","predicate":"stickerSetMultiCovered","params":[{"name":"set","type":"StickerSet"},{"name":"covers","type":"Vector<Document>"}],"type":"StickerSetCovered"},{"id":"-1361650766","predicate":"maskCoords","params":[{"name":"n","type":"int"},{"name":"x","type":"double"},{"name":"y","type":"double"},{"name":"zoom","type":"double"}],"type":"MaskCoords"},{"id":"-1744710921","predicate":"documentAttributeHasStickers","params":[],"type":"DocumentAttribute"},{"id":"1251549527","predicate":"inputStickeredMediaPhoto","params":[{"name":"id","type":"InputPhoto"}],"type":"InputStickeredMedia"},{"id":"70813275","predicate":"inputStickeredMediaDocument","params":[{"name":"id","type":"InputDocument"}],"type":"InputStickeredMedia"},{"id":"-1107729093","predicate":"game","params":[{"name":"flags","type":"#"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"short_name","type":"string"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"Photo"},{"name":"document","type":"flags.0?Document"}],"type":"Game"},{"id":"1336154098","predicate":"inputBotInlineResultGame","params":[{"name":"id","type":"string"},{"name":"short_name","type":"string"},{"name":"send_message","type":"InputBotInlineMessage"}],"type":"InputBotInlineResult"},{"id":"1262639204","predicate":"inputBotInlineMessageGame","params":[{"name":"flags","type":"#"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"-38694904","predicate":"messageMediaGame","params":[{"name":"game","type":"Game"}],"type":"MessageMedia"},{"id":"-750828557","predicate":"inputMediaGame","params":[{"name":"id","type":"InputGame"}],"type":"InputMedia"},{"id":"53231223","predicate":"inputGameID","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputGame"},{"id":"-1020139510","predicate":"inputGameShortName","params":[{"name":"bot_id","type":"InputUser"},{"name":"short_name","type":"string"}],"type":"InputGame"},{"id":"1358175439","predicate":"keyboardButtonGame","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"-1834538890","predicate":"messageActionGameScore","params":[{"name":"game_id","type":"long"},{"name":"score","type":"int"}],"type":"MessageAction"},{"id":"1940093419","predicate":"highScore","params":[{"name":"pos","type":"int"},{"name":"user_id","type":"long"},{"name":"score","type":"int"}],"type":"HighScore"},{"id":"-1707344487","predicate":"messages.highScores","params":[{"name":"scores","type":"Vector<HighScore>"},{"name":"users","type":"Vector<User>"}],"type":"messages.HighScores"},{"id":"1258196845","predicate":"updates.differenceTooLong","params":[{"name":"pts","type":"int"}],"type":"updates.Difference"},{"id":"791390623","predicate":"updateChannelWebPage","params":[{"name":"channel_id","type":"long"},{"name":"webpage","type":"WebPage"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1663561404","predicate":"messages.chatsSlice","params":[{"name":"count","type":"int"},{"name":"chats","type":"Vector<Chat>"}],"type":"messages.Chats"},{"id":"-599948721","predicate":"textEmpty","params":[],"type":"RichText"},{"id":"1950782688","predicate":"textPlain","params":[{"name":"text","type":"string"}],"type":"RichText"},{"id":"1730456516","predicate":"textBold","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"-653089380","predicate":"textItalic","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"-1054465340","predicate":"textUnderline","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"-1678197867","predicate":"textStrike","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"1816074681","predicate":"textFixed","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"1009288385","predicate":"textUrl","params":[{"name":"text","type":"RichText"},{"name":"url","type":"string"},{"name":"webpage_id","type":"long"}],"type":"RichText"},{"id":"-564523562","predicate":"textEmail","params":[{"name":"text","type":"RichText"},{"name":"email","type":"string"}],"type":"RichText"},{"id":"2120376535","predicate":"textConcat","params":[{"name":"texts","type":"Vector<RichText>"}],"type":"RichText"},{"id":"324435594","predicate":"pageBlockUnsupported","params":[],"type":"PageBlock"},{"id":"1890305021","predicate":"pageBlockTitle","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-1879401953","predicate":"pageBlockSubtitle","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-1162877472","predicate":"pageBlockAuthorDate","params":[{"name":"author","type":"RichText"},{"name":"published_date","type":"int"}],"type":"PageBlock"},{"id":"-1076861716","predicate":"pageBlockHeader","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-248793375","predicate":"pageBlockSubheader","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"1182402406","predicate":"pageBlockParagraph","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-1066346178","predicate":"pageBlockPreformatted","params":[{"name":"text","type":"RichText"},{"name":"language","type":"string"}],"type":"PageBlock"},{"id":"1216809369","predicate":"pageBlockFooter","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-618614392","predicate":"pageBlockDivider","params":[],"type":"PageBlock"},{"id":"-837994576","predicate":"pageBlockAnchor","params":[{"name":"name","type":"string"}],"type":"PageBlock"},{"id":"-454524911","predicate":"pageBlockList","params":[{"name":"items","type":"Vector<PageListItem>"}],"type":"PageBlock"},{"id":"641563686","predicate":"pageBlockBlockquote","params":[{"name":"text","type":"RichText"},{"name":"caption","type":"RichText"}],"type":"PageBlock"},{"id":"1329878739","predicate":"pageBlockPullquote","params":[{"name":"text","type":"RichText"},{"name":"caption","type":"RichText"}],"type":"PageBlock"},{"id":"391759200","predicate":"pageBlockPhoto","params":[{"name":"flags","type":"#"},{"name":"photo_id","type":"long"},{"name":"caption","type":"PageCaption"},{"name":"url","type":"flags.0?string"},{"name":"webpage_id","type":"flags.0?long"}],"type":"PageBlock"},{"id":"2089805750","predicate":"pageBlockVideo","params":[{"name":"flags","type":"#"},{"name":"autoplay","type":"flags.0?true"},{"name":"loop","type":"flags.1?true"},{"name":"video_id","type":"long"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"972174080","predicate":"pageBlockCover","params":[{"name":"cover","type":"PageBlock"}],"type":"PageBlock"},{"id":"-1468953147","predicate":"pageBlockEmbed","params":[{"name":"flags","type":"#"},{"name":"full_width","type":"flags.0?true"},{"name":"allow_scrolling","type":"flags.3?true"},{"name":"url","type":"flags.1?string"},{"name":"html","type":"flags.2?string"},{"name":"poster_photo_id","type":"flags.4?long"},{"name":"w","type":"flags.5?int"},{"name":"h","type":"flags.5?int"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"-229005301","predicate":"pageBlockEmbedPost","params":[{"name":"url","type":"string"},{"name":"webpage_id","type":"long"},{"name":"author_photo_id","type":"long"},{"name":"author","type":"string"},{"name":"date","type":"int"},{"name":"blocks","type":"Vector<PageBlock>"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"1705048653","predicate":"pageBlockCollage","params":[{"name":"items","type":"Vector<PageBlock>"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"52401552","predicate":"pageBlockSlideshow","params":[{"name":"items","type":"Vector<PageBlock>"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"1930545681","predicate":"webPageNotModified","params":[{"name":"flags","type":"#"},{"name":"cached_page_views","type":"flags.0?int"}],"type":"WebPage"},{"id":"-88417185","predicate":"inputPrivacyKeyPhoneCall","params":[],"type":"InputPrivacyKey"},{"id":"1030105979","predicate":"privacyKeyPhoneCall","params":[],"type":"PrivacyKey"},{"id":"-580219064","predicate":"sendMessageGamePlayAction","params":[],"type":"SendMessageAction"},{"id":"-2048646399","predicate":"phoneCallDiscardReasonMissed","params":[],"type":"PhoneCallDiscardReason"},{"id":"-527056480","predicate":"phoneCallDiscardReasonDisconnect","params":[],"type":"PhoneCallDiscardReason"},{"id":"1471006352","predicate":"phoneCallDiscardReasonHangup","params":[],"type":"PhoneCallDiscardReason"},{"id":"-84416311","predicate":"phoneCallDiscardReasonBusy","params":[],"type":"PhoneCallDiscardReason"},{"id":"1852826908","predicate":"updateDialogPinned","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.0?true"},{"name":"folder_id","type":"flags.1?int"},{"name":"peer","type":"DialogPeer"}],"type":"Update"},{"id":"-99664734","predicate":"updatePinnedDialogs","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.1?int"},{"name":"order","type":"flags.0?Vector<DialogPeer>"}],"type":"Update"},{"id":"2104790276","predicate":"dataJSON","params":[{"name":"data","type":"string"}],"type":"DataJSON"},{"id":"-2095595325","predicate":"updateBotWebhookJSON","params":[{"name":"data","type":"DataJSON"}],"type":"Update"},{"id":"-1684914010","predicate":"updateBotWebhookJSONQuery","params":[{"name":"query_id","type":"long"},{"name":"data","type":"DataJSON"},{"name":"timeout","type":"int"}],"type":"Update"},{"id":"-886477832","predicate":"labeledPrice","params":[{"name":"label","type":"string"},{"name":"amount","type":"long"}],"type":"LabeledPrice"},{"id":"215516896","predicate":"invoice","params":[{"name":"flags","type":"#"},{"name":"test","type":"flags.0?true"},{"name":"name_requested","type":"flags.1?true"},{"name":"phone_requested","type":"flags.2?true"},{"name":"email_requested","type":"flags.3?true"},{"name":"shipping_address_requested","type":"flags.4?true"},{"name":"flexible","type":"flags.5?true"},{"name":"phone_to_provider","type":"flags.6?true"},{"name":"email_to_provider","type":"flags.7?true"},{"name":"currency","type":"string"},{"name":"prices","type":"Vector<LabeledPrice>"},{"name":"max_tip_amount","type":"flags.8?long"},{"name":"suggested_tip_amounts","type":"flags.8?Vector<long>"}],"type":"Invoice"},{"id":"-646342540","predicate":"inputMediaInvoice","params":[{"name":"flags","type":"#"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.0?InputWebDocument"},{"name":"invoice","type":"Invoice"},{"name":"payload","type":"bytes"},{"name":"provider","type":"string"},{"name":"provider_data","type":"DataJSON"},{"name":"start_param","type":"flags.1?string"}],"type":"InputMedia"},{"id":"-368917890","predicate":"paymentCharge","params":[{"name":"id","type":"string"},{"name":"provider_charge_id","type":"string"}],"type":"PaymentCharge"},{"id":"-1892568281","predicate":"messageActionPaymentSentMe","params":[{"name":"flags","type":"#"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"},{"name":"payload","type":"bytes"},{"name":"info","type":"flags.0?PaymentRequestedInfo"},{"name":"shipping_option_id","type":"flags.1?string"},{"name":"charge","type":"PaymentCharge"}],"type":"MessageAction"},{"id":"-2074799289","predicate":"messageMediaInvoice","params":[{"name":"flags","type":"#"},{"name":"shipping_address_requested","type":"flags.1?true"},{"name":"test","type":"flags.3?true"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.0?WebDocument"},{"name":"receipt_msg_id","type":"flags.2?int"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"},{"name":"start_param","type":"string"}],"type":"MessageMedia"},{"id":"512535275","predicate":"postAddress","params":[{"name":"street_line1","type":"string"},{"name":"street_line2","type":"string"},{"name":"city","type":"string"},{"name":"state","type":"string"},{"name":"country_iso2","type":"string"},{"name":"post_code","type":"string"}],"type":"PostAddress"},{"id":"-1868808300","predicate":"paymentRequestedInfo","params":[{"name":"flags","type":"#"},{"name":"name","type":"flags.0?string"},{"name":"phone","type":"flags.1?string"},{"name":"email","type":"flags.2?string"},{"name":"shipping_address","type":"flags.3?PostAddress"}],"type":"PaymentRequestedInfo"},{"id":"-1344716869","predicate":"keyboardButtonBuy","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"1080663248","predicate":"messageActionPaymentSent","params":[{"name":"currency","type":"string"},{"name":"total_amount","type":"long"}],"type":"MessageAction"},{"id":"-842892769","predicate":"paymentSavedCredentialsCard","params":[{"name":"id","type":"string"},{"name":"title","type":"string"}],"type":"PaymentSavedCredentials"},{"id":"475467473","predicate":"webDocument","params":[{"name":"url","type":"string"},{"name":"access_hash","type":"long"},{"name":"size","type":"int"},{"name":"mime_type","type":"string"},{"name":"attributes","type":"Vector<DocumentAttribute>"}],"type":"WebDocument"},{"id":"-1678949555","predicate":"inputWebDocument","params":[{"name":"url","type":"string"},{"name":"size","type":"int"},{"name":"mime_type","type":"string"},{"name":"attributes","type":"Vector<DocumentAttribute>"}],"type":"InputWebDocument"},{"id":"-1036396922","predicate":"inputWebFileLocation","params":[{"name":"url","type":"string"},{"name":"access_hash","type":"long"}],"type":"InputWebFileLocation"},{"id":"568808380","predicate":"upload.webFile","params":[{"name":"size","type":"int"},{"name":"mime_type","type":"string"},{"name":"file_type","type":"storage.FileType"},{"name":"mtime","type":"int"},{"name":"bytes","type":"bytes"}],"type":"upload.WebFile"},{"id":"378828315","predicate":"payments.paymentForm","params":[{"name":"flags","type":"#"},{"name":"can_save_credentials","type":"flags.2?true"},{"name":"password_missing","type":"flags.3?true"},{"name":"form_id","type":"long"},{"name":"bot_id","type":"long"},{"name":"invoice","type":"Invoice"},{"name":"provider_id","type":"long"},{"name":"url","type":"string"},{"name":"native_provider","type":"flags.4?string"},{"name":"native_params","type":"flags.4?DataJSON"},{"name":"saved_info","type":"flags.0?PaymentRequestedInfo"},{"name":"saved_credentials","type":"flags.1?PaymentSavedCredentials"},{"name":"users","type":"Vector<User>"}],"type":"payments.PaymentForm"},{"id":"-784000893","predicate":"payments.validatedRequestedInfo","params":[{"name":"flags","type":"#"},{"name":"id","type":"flags.0?string"},{"name":"shipping_options","type":"flags.1?Vector<ShippingOption>"}],"type":"payments.ValidatedRequestedInfo"},{"id":"1314881805","predicate":"payments.paymentResult","params":[{"name":"updates","type":"Updates"}],"type":"payments.PaymentResult"},{"id":"1891958275","predicate":"payments.paymentReceipt","params":[{"name":"flags","type":"#"},{"name":"date","type":"int"},{"name":"bot_id","type":"long"},{"name":"provider_id","type":"long"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.2?WebDocument"},{"name":"invoice","type":"Invoice"},{"name":"info","type":"flags.0?PaymentRequestedInfo"},{"name":"shipping","type":"flags.1?ShippingOption"},{"name":"tip_amount","type":"flags.3?long"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"},{"name":"credentials_title","type":"string"},{"name":"users","type":"Vector<User>"}],"type":"payments.PaymentReceipt"},{"id":"-74456004","predicate":"payments.savedInfo","params":[{"name":"flags","type":"#"},{"name":"has_saved_credentials","type":"flags.1?true"},{"name":"saved_info","type":"flags.0?PaymentRequestedInfo"}],"type":"payments.SavedInfo"},{"id":"-1056001329","predicate":"inputPaymentCredentialsSaved","params":[{"name":"id","type":"string"},{"name":"tmp_password","type":"bytes"}],"type":"InputPaymentCredentials"},{"id":"873977640","predicate":"inputPaymentCredentials","params":[{"name":"flags","type":"#"},{"name":"save","type":"flags.0?true"},{"name":"data","type":"DataJSON"}],"type":"InputPaymentCredentials"},{"id":"-614138572","predicate":"account.tmpPassword","params":[{"name":"tmp_password","type":"bytes"},{"name":"valid_until","type":"int"}],"type":"account.TmpPassword"},{"id":"-1239335713","predicate":"shippingOption","params":[{"name":"id","type":"string"},{"name":"title","type":"string"},{"name":"prices","type":"Vector<LabeledPrice>"}],"type":"ShippingOption"},{"id":"-1246823043","predicate":"updateBotShippingQuery","params":[{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"payload","type":"bytes"},{"name":"shipping_address","type":"PostAddress"}],"type":"Update"},{"id":"-1934976362","predicate":"updateBotPrecheckoutQuery","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"payload","type":"bytes"},{"name":"info","type":"flags.0?PaymentRequestedInfo"},{"name":"shipping_option_id","type":"flags.1?string"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"}],"type":"Update"},{"id":"-6249322","predicate":"inputStickerSetItem","params":[{"name":"flags","type":"#"},{"name":"document","type":"InputDocument"},{"name":"emoji","type":"string"},{"name":"mask_coords","type":"flags.0?MaskCoords"}],"type":"InputStickerSetItem"},{"id":"-1425052898","predicate":"updatePhoneCall","params":[{"name":"phone_call","type":"PhoneCall"}],"type":"Update"},{"id":"506920429","predicate":"inputPhoneCall","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputPhoneCall"},{"id":"1399245077","predicate":"phoneCallEmpty","params":[{"name":"id","type":"long"}],"type":"PhoneCall"},{"id":"-987599081","predicate":"phoneCallWaiting","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"protocol","type":"PhoneCallProtocol"},{"name":"receive_date","type":"flags.0?int"}],"type":"PhoneCall"},{"id":"347139340","predicate":"phoneCallRequested","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_a_hash","type":"bytes"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"PhoneCall"},{"id":"912311057","predicate":"phoneCallAccepted","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_b","type":"bytes"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"PhoneCall"},{"id":"-1770029977","predicate":"phoneCall","params":[{"name":"flags","type":"#"},{"name":"p2p_allowed","type":"flags.5?true"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_a_or_b","type":"bytes"},{"name":"key_fingerprint","type":"long"},{"name":"protocol","type":"PhoneCallProtocol"},{"name":"connections","type":"Vector<PhoneConnection>"},{"name":"start_date","type":"int"}],"type":"PhoneCall"},{"id":"1355435489","predicate":"phoneCallDiscarded","params":[{"name":"flags","type":"#"},{"name":"need_rating","type":"flags.2?true"},{"name":"need_debug","type":"flags.3?true"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"reason","type":"flags.0?PhoneCallDiscardReason"},{"name":"duration","type":"flags.1?int"}],"type":"PhoneCall"},{"id":"-1655957568","predicate":"phoneConnection","params":[{"name":"id","type":"long"},{"name":"ip","type":"string"},{"name":"ipv6","type":"string"},{"name":"port","type":"int"},{"name":"peer_tag","type":"bytes"}],"type":"PhoneConnection"},{"id":"-58224696","predicate":"phoneCallProtocol","params":[{"name":"flags","type":"#"},{"name":"udp_p2p","type":"flags.0?true"},{"name":"udp_reflector","type":"flags.1?true"},{"name":"min_layer","type":"int"},{"name":"max_layer","type":"int"},{"name":"library_versions","type":"Vector<string>"}],"type":"PhoneCallProtocol"},{"id":"-326966976","predicate":"phone.phoneCall","params":[{"name":"phone_call","type":"PhoneCall"},{"name":"users","type":"Vector<User>"}],"type":"phone.PhoneCall"},{"id":"-2134272152","predicate":"inputMessagesFilterPhoneCalls","params":[{"name":"flags","type":"#"},{"name":"missed","type":"flags.0?true"}],"type":"MessagesFilter"},{"id":"-2132731265","predicate":"messageActionPhoneCall","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.2?true"},{"name":"call_id","type":"long"},{"name":"reason","type":"flags.0?PhoneCallDiscardReason"},{"name":"duration","type":"flags.1?int"}],"type":"MessageAction"},{"id":"2054952868","predicate":"inputMessagesFilterRoundVoice","params":[],"type":"MessagesFilter"},{"id":"-1253451181","predicate":"inputMessagesFilterRoundVideo","params":[],"type":"MessagesFilter"},{"id":"-1997373508","predicate":"sendMessageRecordRoundAction","params":[],"type":"SendMessageAction"},{"id":"608050278","predicate":"sendMessageUploadRoundAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"-242427324","predicate":"upload.fileCdnRedirect","params":[{"name":"dc_id","type":"int"},{"name":"file_token","type":"bytes"},{"name":"encryption_key","type":"bytes"},{"name":"encryption_iv","type":"bytes"},{"name":"file_hashes","type":"Vector<FileHash>"}],"type":"upload.File"},{"id":"-290921362","predicate":"upload.cdnFileReuploadNeeded","params":[{"name":"request_token","type":"bytes"}],"type":"upload.CdnFile"},{"id":"-1449145777","predicate":"upload.cdnFile","params":[{"name":"bytes","type":"bytes"}],"type":"upload.CdnFile"},{"id":"-914167110","predicate":"cdnPublicKey","params":[{"name":"dc_id","type":"int"},{"name":"public_key","type":"string"}],"type":"CdnPublicKey"},{"id":"1462101002","predicate":"cdnConfig","params":[{"name":"public_keys","type":"Vector<CdnPublicKey>"}],"type":"CdnConfig"},{"id":"-283684427","predicate":"pageBlockChannel","params":[{"name":"channel","type":"Chat"}],"type":"PageBlock"},{"id":"-892239370","predicate":"langPackString","params":[{"name":"key","type":"string"},{"name":"value","type":"string"}],"type":"LangPackString"},{"id":"1816636575","predicate":"langPackStringPluralized","params":[{"name":"flags","type":"#"},{"name":"key","type":"string"},{"name":"zero_value","type":"flags.0?string"},{"name":"one_value","type":"flags.1?string"},{"name":"two_value","type":"flags.2?string"},{"name":"few_value","type":"flags.3?string"},{"name":"many_value","type":"flags.4?string"},{"name":"other_value","type":"string"}],"type":"LangPackString"},{"id":"695856818","predicate":"langPackStringDeleted","params":[{"name":"key","type":"string"}],"type":"LangPackString"},{"id":"-209337866","predicate":"langPackDifference","params":[{"name":"lang_code","type":"string"},{"name":"from_version","type":"int"},{"name":"version","type":"int"},{"name":"strings","type":"Vector<LangPackString>"}],"type":"LangPackDifference"},{"id":"-288727837","predicate":"langPackLanguage","params":[{"name":"flags","type":"#"},{"name":"official","type":"flags.0?true"},{"name":"rtl","type":"flags.2?true"},{"name":"beta","type":"flags.3?true"},{"name":"name","type":"string"},{"name":"native_name","type":"string"},{"name":"lang_code","type":"string"},{"name":"base_lang_code","type":"flags.1?string"},{"name":"plural_code","type":"string"},{"name":"strings_count","type":"int"},{"name":"translated_count","type":"int"},{"name":"translations_url","type":"string"}],"type":"LangPackLanguage"},{"id":"1180041828","predicate":"updateLangPackTooLong","params":[{"name":"lang_code","type":"string"}],"type":"Update"},{"id":"1442983757","predicate":"updateLangPack","params":[{"name":"difference","type":"LangPackDifference"}],"type":"Update"},{"id":"885242707","predicate":"channelParticipantAdmin","params":[{"name":"flags","type":"#"},{"name":"can_edit","type":"flags.0?true"},{"name":"self","type":"flags.1?true"},{"name":"user_id","type":"long"},{"name":"inviter_id","type":"flags.1?long"},{"name":"promoted_by","type":"long"},{"name":"date","type":"int"},{"name":"admin_rights","type":"ChatAdminRights"},{"name":"rank","type":"flags.2?string"}],"type":"ChannelParticipant"},{"id":"1844969806","predicate":"channelParticipantBanned","params":[{"name":"flags","type":"#"},{"name":"left","type":"flags.0?true"},{"name":"peer","type":"Peer"},{"name":"kicked_by","type":"long"},{"name":"date","type":"int"},{"name":"banned_rights","type":"ChatBannedRights"}],"type":"ChannelParticipant"},{"id":"338142689","predicate":"channelParticipantsBanned","params":[{"name":"q","type":"string"}],"type":"ChannelParticipantsFilter"},{"id":"106343499","predicate":"channelParticipantsSearch","params":[{"name":"q","type":"string"}],"type":"ChannelParticipantsFilter"},{"id":"-421545947","predicate":"channelAdminLogEventActionChangeTitle","params":[{"name":"prev_value","type":"string"},{"name":"new_value","type":"string"}],"type":"ChannelAdminLogEventAction"},{"id":"1427671598","predicate":"channelAdminLogEventActionChangeAbout","params":[{"name":"prev_value","type":"string"},{"name":"new_value","type":"string"}],"type":"ChannelAdminLogEventAction"},{"id":"1783299128","predicate":"channelAdminLogEventActionChangeUsername","params":[{"name":"prev_value","type":"string"},{"name":"new_value","type":"string"}],"type":"ChannelAdminLogEventAction"},{"id":"1129042607","predicate":"channelAdminLogEventActionChangePhoto","params":[{"name":"prev_photo","type":"Photo"},{"name":"new_photo","type":"Photo"}],"type":"ChannelAdminLogEventAction"},{"id":"460916654","predicate":"channelAdminLogEventActionToggleInvites","params":[{"name":"new_value","type":"Bool"}],"type":"ChannelAdminLogEventAction"},{"id":"648939889","predicate":"channelAdminLogEventActionToggleSignatures","params":[{"name":"new_value","type":"Bool"}],"type":"ChannelAdminLogEventAction"},{"id":"-370660328","predicate":"channelAdminLogEventActionUpdatePinned","params":[{"name":"message","type":"Message"}],"type":"ChannelAdminLogEventAction"},{"id":"1889215493","predicate":"channelAdminLogEventActionEditMessage","params":[{"name":"prev_message","type":"Message"},{"name":"new_message","type":"Message"}],"type":"ChannelAdminLogEventAction"},{"id":"1121994683","predicate":"channelAdminLogEventActionDeleteMessage","params":[{"name":"message","type":"Message"}],"type":"ChannelAdminLogEventAction"},{"id":"405815507","predicate":"channelAdminLogEventActionParticipantJoin","params":[],"type":"ChannelAdminLogEventAction"},{"id":"-124291086","predicate":"channelAdminLogEventActionParticipantLeave","params":[],"type":"ChannelAdminLogEventAction"},{"id":"-484690728","predicate":"channelAdminLogEventActionParticipantInvite","params":[{"name":"participant","type":"ChannelParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"-422036098","predicate":"channelAdminLogEventActionParticipantToggleBan","params":[{"name":"prev_participant","type":"ChannelParticipant"},{"name":"new_participant","type":"ChannelParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"-714643696","predicate":"channelAdminLogEventActionParticipantToggleAdmin","params":[{"name":"prev_participant","type":"ChannelParticipant"},{"name":"new_participant","type":"ChannelParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"531458253","predicate":"channelAdminLogEvent","params":[{"name":"id","type":"long"},{"name":"date","type":"int"},{"name":"user_id","type":"long"},{"name":"action","type":"ChannelAdminLogEventAction"}],"type":"ChannelAdminLogEvent"},{"id":"-309659827","predicate":"channels.adminLogResults","params":[{"name":"events","type":"Vector<ChannelAdminLogEvent>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"channels.AdminLogResults"},{"id":"-368018716","predicate":"channelAdminLogEventsFilter","params":[{"name":"flags","type":"#"},{"name":"join","type":"flags.0?true"},{"name":"leave","type":"flags.1?true"},{"name":"invite","type":"flags.2?true"},{"name":"ban","type":"flags.3?true"},{"name":"unban","type":"flags.4?true"},{"name":"kick","type":"flags.5?true"},{"name":"unkick","type":"flags.6?true"},{"name":"promote","type":"flags.7?true"},{"name":"demote","type":"flags.8?true"},{"name":"info","type":"flags.9?true"},{"name":"settings","type":"flags.10?true"},{"name":"pinned","type":"flags.11?true"},{"name":"edit","type":"flags.12?true"},{"name":"delete","type":"flags.13?true"},{"name":"group_call","type":"flags.14?true"},{"name":"invites","type":"flags.15?true"},{"name":"send","type":"flags.16?true"}],"type":"ChannelAdminLogEventsFilter"},{"id":"511092620","predicate":"topPeerCategoryPhoneCalls","params":[],"type":"TopPeerCategory"},{"id":"-2143067670","predicate":"pageBlockAudio","params":[{"name":"audio_id","type":"long"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"1558266229","predicate":"popularContact","params":[{"name":"client_id","type":"long"},{"name":"importers","type":"int"}],"type":"PopularContact"},{"id":"1200788123","predicate":"messageActionScreenshotTaken","params":[],"type":"MessageAction"},{"id":"-1634752813","predicate":"messages.favedStickersNotModified","params":[],"type":"messages.FavedStickers"},{"id":"750063767","predicate":"messages.favedStickers","params":[{"name":"hash","type":"long"},{"name":"packs","type":"Vector<StickerPack>"},{"name":"stickers","type":"Vector<Document>"}],"type":"messages.FavedStickers"},{"id":"-451831443","predicate":"updateFavedStickers","params":[],"type":"Update"},{"id":"1153291573","predicate":"updateChannelReadMessagesContents","params":[{"name":"channel_id","type":"long"},{"name":"messages","type":"Vector<int>"}],"type":"Update"},{"id":"-1040652646","predicate":"inputMessagesFilterMyMentions","params":[],"type":"MessagesFilter"},{"id":"1887741886","predicate":"updateContactsReset","params":[],"type":"Update"},{"id":"-1312568665","predicate":"channelAdminLogEventActionChangeStickerSet","params":[{"name":"prev_stickerset","type":"InputStickerSet"},{"name":"new_stickerset","type":"InputStickerSet"}],"type":"ChannelAdminLogEventAction"},{"id":"-85549226","predicate":"messageActionCustomAction","params":[{"name":"message","type":"string"}],"type":"MessageAction"},{"id":"178373535","predicate":"inputPaymentCredentialsApplePay","params":[{"name":"payment_data","type":"DataJSON"}],"type":"InputPaymentCredentials"},{"id":"-419271411","predicate":"inputMessagesFilterGeo","params":[],"type":"MessagesFilter"},{"id":"-530392189","predicate":"inputMessagesFilterContacts","params":[],"type":"MessagesFilter"},{"id":"-1304443240","predicate":"updateChannelAvailableMessages","params":[{"name":"channel_id","type":"long"},{"name":"available_min_id","type":"int"}],"type":"Update"},{"id":"1599903217","predicate":"channelAdminLogEventActionTogglePreHistoryHidden","params":[{"name":"new_value","type":"Bool"}],"type":"ChannelAdminLogEventAction"},{"id":"-1759532989","predicate":"inputMediaGeoLive","params":[{"name":"flags","type":"#"},{"name":"stopped","type":"flags.0?true"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"heading","type":"flags.2?int"},{"name":"period","type":"flags.1?int"},{"name":"proximity_notification_radius","type":"flags.3?int"}],"type":"InputMedia"},{"id":"-1186937242","predicate":"messageMediaGeoLive","params":[{"name":"flags","type":"#"},{"name":"geo","type":"GeoPoint"},{"name":"heading","type":"flags.0?int"},{"name":"period","type":"int"},{"name":"proximity_notification_radius","type":"flags.1?int"}],"type":"MessageMedia"},{"id":"1189204285","predicate":"recentMeUrlUnknown","params":[{"name":"url","type":"string"}],"type":"RecentMeUrl"},{"id":"-1188296222","predicate":"recentMeUrlUser","params":[{"name":"url","type":"string"},{"name":"user_id","type":"long"}],"type":"RecentMeUrl"},{"id":"-1294306862","predicate":"recentMeUrlChat","params":[{"name":"url","type":"string"},{"name":"chat_id","type":"long"}],"type":"RecentMeUrl"},{"id":"-347535331","predicate":"recentMeUrlChatInvite","params":[{"name":"url","type":"string"},{"name":"chat_invite","type":"ChatInvite"}],"type":"RecentMeUrl"},{"id":"-1140172836","predicate":"recentMeUrlStickerSet","params":[{"name":"url","type":"string"},{"name":"set","type":"StickerSetCovered"}],"type":"RecentMeUrl"},{"id":"235081943","predicate":"help.recentMeUrls","params":[{"name":"urls","type":"Vector<RecentMeUrl>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"help.RecentMeUrls"},{"id":"-266911767","predicate":"channels.channelParticipantsNotModified","params":[],"type":"channels.ChannelParticipants"},{"id":"1951620897","predicate":"messages.messagesNotModified","params":[{"name":"count","type":"int"}],"type":"messages.Messages"},{"id":"482797855","predicate":"inputSingleMedia","params":[{"name":"flags","type":"#"},{"name":"media","type":"InputMedia"},{"name":"random_id","type":"long"},{"name":"message","type":"string"},{"name":"entities","type":"flags.0?Vector<MessageEntity>"}],"type":"InputSingleMedia"},{"id":"-1493633966","predicate":"webAuthorization","params":[{"name":"hash","type":"long"},{"name":"bot_id","type":"long"},{"name":"domain","type":"string"},{"name":"browser","type":"string"},{"name":"platform","type":"string"},{"name":"date_created","type":"int"},{"name":"date_active","type":"int"},{"name":"ip","type":"string"},{"name":"region","type":"string"}],"type":"WebAuthorization"},{"id":"-313079300","predicate":"account.webAuthorizations","params":[{"name":"authorizations","type":"Vector<WebAuthorization>"},{"name":"users","type":"Vector<User>"}],"type":"account.WebAuthorizations"},{"id":"-1502174430","predicate":"inputMessageID","params":[{"name":"id","type":"int"}],"type":"InputMessage"},{"id":"-1160215659","predicate":"inputMessageReplyTo","params":[{"name":"id","type":"int"}],"type":"InputMessage"},{"id":"-2037963464","predicate":"inputMessagePinned","params":[],"type":"InputMessage"},{"id":"-1687559349","predicate":"messageEntityPhone","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1280209983","predicate":"messageEntityCashtag","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-1410748418","predicate":"messageActionBotAllowed","params":[{"name":"domain","type":"string"}],"type":"MessageAction"},{"id":"-55902537","predicate":"inputDialogPeer","params":[{"name":"peer","type":"InputPeer"}],"type":"InputDialogPeer"},{"id":"-445792507","predicate":"dialogPeer","params":[{"name":"peer","type":"Peer"}],"type":"DialogPeer"},{"id":"223655517","predicate":"messages.foundStickerSetsNotModified","params":[],"type":"messages.FoundStickerSets"},{"id":"-1963942446","predicate":"messages.foundStickerSets","params":[{"name":"hash","type":"long"},{"name":"sets","type":"Vector<StickerSetCovered>"}],"type":"messages.FoundStickerSets"},{"id":"1648543603","predicate":"fileHash","params":[{"name":"offset","type":"int"},{"name":"limit","type":"int"},{"name":"hash","type":"bytes"}],"type":"FileHash"},{"id":"-104284986","predicate":"webDocumentNoProxy","params":[{"name":"url","type":"string"},{"name":"size","type":"int"},{"name":"mime_type","type":"string"},{"name":"attributes","type":"Vector<DocumentAttribute>"}],"type":"WebDocument"},{"id":"1968737087","predicate":"inputClientProxy","params":[{"name":"address","type":"string"},{"name":"port","type":"int"}],"type":"InputClientProxy"},{"id":"-483352705","predicate":"help.termsOfServiceUpdateEmpty","params":[{"name":"expires","type":"int"}],"type":"help.TermsOfServiceUpdate"},{"id":"686618977","predicate":"help.termsOfServiceUpdate","params":[{"name":"expires","type":"int"},{"name":"terms_of_service","type":"help.TermsOfService"}],"type":"help.TermsOfServiceUpdate"},{"id":"859091184","predicate":"inputSecureFileUploaded","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"md5_checksum","type":"string"},{"name":"file_hash","type":"bytes"},{"name":"secret","type":"bytes"}],"type":"InputSecureFile"},{"id":"1399317950","predicate":"inputSecureFile","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputSecureFile"},{"id":"-876089816","predicate":"inputSecureFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputFileLocation"},{"id":"1679398724","predicate":"secureFileEmpty","params":[],"type":"SecureFile"},{"id":"-534283678","predicate":"secureFile","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"size","type":"int"},{"name":"dc_id","type":"int"},{"name":"date","type":"int"},{"name":"file_hash","type":"bytes"},{"name":"secret","type":"bytes"}],"type":"SecureFile"},{"id":"-1964327229","predicate":"secureData","params":[{"name":"data","type":"bytes"},{"name":"data_hash","type":"bytes"},{"name":"secret","type":"bytes"}],"type":"SecureData"},{"id":"2103482845","predicate":"securePlainPhone","params":[{"name":"phone","type":"string"}],"type":"SecurePlainData"},{"id":"569137759","predicate":"securePlainEmail","params":[{"name":"email","type":"string"}],"type":"SecurePlainData"},{"id":"-1658158621","predicate":"secureValueTypePersonalDetails","params":[],"type":"SecureValueType"},{"id":"1034709504","predicate":"secureValueTypePassport","params":[],"type":"SecureValueType"},{"id":"115615172","predicate":"secureValueTypeDriverLicense","params":[],"type":"SecureValueType"},{"id":"-1596951477","predicate":"secureValueTypeIdentityCard","params":[],"type":"SecureValueType"},{"id":"-1717268701","predicate":"secureValueTypeInternalPassport","params":[],"type":"SecureValueType"},{"id":"-874308058","predicate":"secureValueTypeAddress","params":[],"type":"SecureValueType"},{"id":"-63531698","predicate":"secureValueTypeUtilityBill","params":[],"type":"SecureValueType"},{"id":"-1995211763","predicate":"secureValueTypeBankStatement","params":[],"type":"SecureValueType"},{"id":"-1954007928","predicate":"secureValueTypeRentalAgreement","params":[],"type":"SecureValueType"},{"id":"-1713143702","predicate":"secureValueTypePassportRegistration","params":[],"type":"SecureValueType"},{"id":"-368907213","predicate":"secureValueTypeTemporaryRegistration","params":[],"type":"SecureValueType"},{"id":"-1289704741","predicate":"secureValueTypePhone","params":[],"type":"SecureValueType"},{"id":"-1908627474","predicate":"secureValueTypeEmail","params":[],"type":"SecureValueType"},{"id":"411017418","predicate":"secureValue","params":[{"name":"flags","type":"#"},{"name":"type","type":"SecureValueType"},{"name":"data","type":"flags.0?SecureData"},{"name":"front_side","type":"flags.1?SecureFile"},{"name":"reverse_side","type":"flags.2?SecureFile"},{"name":"selfie","type":"flags.3?SecureFile"},{"name":"translation","type":"flags.6?Vector<SecureFile>"},{"name":"files","type":"flags.4?Vector<SecureFile>"},{"name":"plain_data","type":"flags.5?SecurePlainData"},{"name":"hash","type":"bytes"}],"type":"SecureValue"},{"id":"-618540889","predicate":"inputSecureValue","params":[{"name":"flags","type":"#"},{"name":"type","type":"SecureValueType"},{"name":"data","type":"flags.0?SecureData"},{"name":"front_side","type":"flags.1?InputSecureFile"},{"name":"reverse_side","type":"flags.2?InputSecureFile"},{"name":"selfie","type":"flags.3?InputSecureFile"},{"name":"translation","type":"flags.6?Vector<InputSecureFile>"},{"name":"files","type":"flags.4?Vector<InputSecureFile>"},{"name":"plain_data","type":"flags.5?SecurePlainData"}],"type":"InputSecureValue"},{"id":"-316748368","predicate":"secureValueHash","params":[{"name":"type","type":"SecureValueType"},{"name":"hash","type":"bytes"}],"type":"SecureValueHash"},{"id":"-391902247","predicate":"secureValueErrorData","params":[{"name":"type","type":"SecureValueType"},{"name":"data_hash","type":"bytes"},{"name":"field","type":"string"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"12467706","predicate":"secureValueErrorFrontSide","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"-2037765467","predicate":"secureValueErrorReverseSide","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"-449327402","predicate":"secureValueErrorSelfie","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"2054162547","predicate":"secureValueErrorFile","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"1717706985","predicate":"secureValueErrorFiles","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"Vector<bytes>"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"871426631","predicate":"secureCredentialsEncrypted","params":[{"name":"data","type":"bytes"},{"name":"hash","type":"bytes"},{"name":"secret","type":"bytes"}],"type":"SecureCredentialsEncrypted"},{"id":"-1389486888","predicate":"account.authorizationForm","params":[{"name":"flags","type":"#"},{"name":"required_types","type":"Vector<SecureRequiredType>"},{"name":"values","type":"Vector<SecureValue>"},{"name":"errors","type":"Vector<SecureValueError>"},{"name":"users","type":"Vector<User>"},{"name":"privacy_policy_url","type":"flags.0?string"}],"type":"account.AuthorizationForm"},{"id":"-2128640689","predicate":"account.sentEmailCode","params":[{"name":"email_pattern","type":"string"},{"name":"length","type":"int"}],"type":"account.SentEmailCode"},{"id":"455635795","predicate":"messageActionSecureValuesSentMe","params":[{"name":"values","type":"Vector<SecureValue>"},{"name":"credentials","type":"SecureCredentialsEncrypted"}],"type":"MessageAction"},{"id":"-648257196","predicate":"messageActionSecureValuesSent","params":[{"name":"types","type":"Vector<SecureValueType>"}],"type":"MessageAction"},{"id":"1722786150","predicate":"help.deepLinkInfoEmpty","params":[],"type":"help.DeepLinkInfo"},{"id":"1783556146","predicate":"help.deepLinkInfo","params":[{"name":"flags","type":"#"},{"name":"update_app","type":"flags.0?true"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"}],"type":"help.DeepLinkInfo"},{"id":"289586518","predicate":"savedPhoneContact","params":[{"name":"phone","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"date","type":"int"}],"type":"SavedContact"},{"id":"1304052993","predicate":"account.takeout","params":[{"name":"id","type":"long"}],"type":"account.Takeout"},{"id":"700340377","predicate":"inputTakeoutFileLocation","params":[],"type":"InputFileLocation"},{"id":"-513517117","predicate":"updateDialogUnreadMark","params":[{"name":"flags","type":"#"},{"name":"unread","type":"flags.0?true"},{"name":"peer","type":"DialogPeer"}],"type":"Update"},{"id":"-253500010","predicate":"messages.dialogsNotModified","params":[{"name":"count","type":"int"}],"type":"messages.Dialogs"},{"id":"-1625153079","predicate":"inputWebFileGeoPointLocation","params":[{"name":"geo_point","type":"InputGeoPoint"},{"name":"access_hash","type":"long"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"zoom","type":"int"},{"name":"scale","type":"int"}],"type":"InputWebFileLocation"},{"id":"-1255369827","predicate":"contacts.topPeersDisabled","params":[],"type":"contacts.TopPeers"},{"id":"-1685456582","predicate":"inputReportReasonCopyright","params":[],"type":"ReportReason"},{"id":"-732254058","predicate":"passwordKdfAlgoUnknown","params":[],"type":"PasswordKdfAlgo"},{"id":"4883767","predicate":"securePasswordKdfAlgoUnknown","params":[],"type":"SecurePasswordKdfAlgo"},{"id":"-1141711456","predicate":"securePasswordKdfAlgoPBKDF2HMACSHA512iter100000","params":[{"name":"salt","type":"bytes"}],"type":"SecurePasswordKdfAlgo"},{"id":"-2042159726","predicate":"securePasswordKdfAlgoSHA512","params":[{"name":"salt","type":"bytes"}],"type":"SecurePasswordKdfAlgo"},{"id":"354925740","predicate":"secureSecretSettings","params":[{"name":"secure_algo","type":"SecurePasswordKdfAlgo"},{"name":"secure_secret","type":"bytes"},{"name":"secure_secret_id","type":"long"}],"type":"SecureSecretSettings"},{"id":"982592842","predicate":"passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow","params":[{"name":"salt1","type":"bytes"},{"name":"salt2","type":"bytes"},{"name":"g","type":"int"},{"name":"p","type":"bytes"}],"type":"PasswordKdfAlgo"},{"id":"-1736378792","predicate":"inputCheckPasswordEmpty","params":[],"type":"InputCheckPasswordSRP"},{"id":"-763367294","predicate":"inputCheckPasswordSRP","params":[{"name":"srp_id","type":"long"},{"name":"A","type":"bytes"},{"name":"M1","type":"bytes"}],"type":"InputCheckPasswordSRP"},{"id":"-2036501105","predicate":"secureValueError","params":[{"name":"type","type":"SecureValueType"},{"name":"hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"-1592506512","predicate":"secureValueErrorTranslationFile","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"878931416","predicate":"secureValueErrorTranslationFiles","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"Vector<bytes>"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"-2103600678","predicate":"secureRequiredType","params":[{"name":"flags","type":"#"},{"name":"native_names","type":"flags.0?true"},{"name":"selfie_required","type":"flags.1?true"},{"name":"translation_required","type":"flags.2?true"},{"name":"type","type":"SecureValueType"}],"type":"SecureRequiredType"},{"id":"41187252","predicate":"secureRequiredTypeOneOf","params":[{"name":"types","type":"Vector<SecureRequiredType>"}],"type":"SecureRequiredType"},{"id":"-1078332329","predicate":"help.passportConfigNotModified","params":[],"type":"help.PassportConfig"},{"id":"-1600596305","predicate":"help.passportConfig","params":[{"name":"hash","type":"int"},{"name":"countries_langs","type":"DataJSON"}],"type":"help.PassportConfig"},{"id":"488313413","predicate":"inputAppEvent","params":[{"name":"time","type":"double"},{"name":"type","type":"string"},{"name":"peer","type":"long"},{"name":"data","type":"JSONValue"}],"type":"InputAppEvent"},{"id":"-1059185703","predicate":"jsonObjectValue","params":[{"name":"key","type":"string"},{"name":"value","type":"JSONValue"}],"type":"JSONObjectValue"},{"id":"1064139624","predicate":"jsonNull","params":[],"type":"JSONValue"},{"id":"-952869270","predicate":"jsonBool","params":[{"name":"value","type":"Bool"}],"type":"JSONValue"},{"id":"736157604","predicate":"jsonNumber","params":[{"name":"value","type":"double"}],"type":"JSONValue"},{"id":"-1222740358","predicate":"jsonString","params":[{"name":"value","type":"string"}],"type":"JSONValue"},{"id":"-146520221","predicate":"jsonArray","params":[{"name":"value","type":"Vector<JSONValue>"}],"type":"JSONValue"},{"id":"-1715350371","predicate":"jsonObject","params":[{"name":"value","type":"Vector<JSONObjectValue>"}],"type":"JSONValue"},{"id":"-1311015810","predicate":"inputNotifyBroadcasts","params":[],"type":"InputNotifyPeer"},{"id":"-703403793","predicate":"notifyBroadcasts","params":[],"type":"NotifyPeer"},{"id":"-311786236","predicate":"textSubscript","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"-939827711","predicate":"textSuperscript","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"55281185","predicate":"textMarked","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"483104362","predicate":"textPhone","params":[{"name":"text","type":"RichText"},{"name":"phone","type":"string"}],"type":"RichText"},{"id":"136105807","predicate":"textImage","params":[{"name":"document_id","type":"long"},{"name":"w","type":"int"},{"name":"h","type":"int"}],"type":"RichText"},{"id":"504660880","predicate":"pageBlockKicker","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"878078826","predicate":"pageTableCell","params":[{"name":"flags","type":"#"},{"name":"header","type":"flags.0?true"},{"name":"align_center","type":"flags.3?true"},{"name":"align_right","type":"flags.4?true"},{"name":"valign_middle","type":"flags.5?true"},{"name":"valign_bottom","type":"flags.6?true"},{"name":"text","type":"flags.7?RichText"},{"name":"colspan","type":"flags.1?int"},{"name":"rowspan","type":"flags.2?int"}],"type":"PageTableCell"},{"id":"-524237339","predicate":"pageTableRow","params":[{"name":"cells","type":"Vector<PageTableCell>"}],"type":"PageTableRow"},{"id":"-1085412734","predicate":"pageBlockTable","params":[{"name":"flags","type":"#"},{"name":"bordered","type":"flags.0?true"},{"name":"striped","type":"flags.1?true"},{"name":"title","type":"RichText"},{"name":"rows","type":"Vector<PageTableRow>"}],"type":"PageBlock"},{"id":"1869903447","predicate":"pageCaption","params":[{"name":"text","type":"RichText"},{"name":"credit","type":"RichText"}],"type":"PageCaption"},{"id":"-1188055347","predicate":"pageListItemText","params":[{"name":"text","type":"RichText"}],"type":"PageListItem"},{"id":"635466748","predicate":"pageListItemBlocks","params":[{"name":"blocks","type":"Vector<PageBlock>"}],"type":"PageListItem"},{"id":"1577484359","predicate":"pageListOrderedItemText","params":[{"name":"num","type":"string"},{"name":"text","type":"RichText"}],"type":"PageListOrderedItem"},{"id":"-1730311882","predicate":"pageListOrderedItemBlocks","params":[{"name":"num","type":"string"},{"name":"blocks","type":"Vector<PageBlock>"}],"type":"PageListOrderedItem"},{"id":"-1702174239","predicate":"pageBlockOrderedList","params":[{"name":"items","type":"Vector<PageListOrderedItem>"}],"type":"PageBlock"},{"id":"1987480557","predicate":"pageBlockDetails","params":[{"name":"flags","type":"#"},{"name":"open","type":"flags.0?true"},{"name":"blocks","type":"Vector<PageBlock>"},{"name":"title","type":"RichText"}],"type":"PageBlock"},{"id":"-1282352120","predicate":"pageRelatedArticle","params":[{"name":"flags","type":"#"},{"name":"url","type":"string"},{"name":"webpage_id","type":"long"},{"name":"title","type":"flags.0?string"},{"name":"description","type":"flags.1?string"},{"name":"photo_id","type":"flags.2?long"},{"name":"author","type":"flags.3?string"},{"name":"published_date","type":"flags.4?int"}],"type":"PageRelatedArticle"},{"id":"370236054","predicate":"pageBlockRelatedArticles","params":[{"name":"title","type":"RichText"},{"name":"articles","type":"Vector<PageRelatedArticle>"}],"type":"PageBlock"},{"id":"-1538310410","predicate":"pageBlockMap","params":[{"name":"geo","type":"GeoPoint"},{"name":"zoom","type":"int"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"-1738178803","predicate":"page","params":[{"name":"flags","type":"#"},{"name":"part","type":"flags.0?true"},{"name":"rtl","type":"flags.1?true"},{"name":"v2","type":"flags.2?true"},{"name":"url","type":"string"},{"name":"blocks","type":"Vector<PageBlock>"},{"name":"photos","type":"Vector<Photo>"},{"name":"documents","type":"Vector<Document>"},{"name":"views","type":"flags.3?int"}],"type":"Page"},{"id":"-610373422","predicate":"inputPrivacyKeyPhoneP2P","params":[],"type":"InputPrivacyKey"},{"id":"961092808","predicate":"privacyKeyPhoneP2P","params":[],"type":"PrivacyKey"},{"id":"894777186","predicate":"textAnchor","params":[{"name":"text","type":"RichText"},{"name":"name","type":"string"}],"type":"RichText"},{"id":"-1945767479","predicate":"help.supportName","params":[{"name":"name","type":"string"}],"type":"help.SupportName"},{"id":"-206688531","predicate":"help.userInfoEmpty","params":[],"type":"help.UserInfo"},{"id":"32192344","predicate":"help.userInfo","params":[{"name":"message","type":"string"},{"name":"entities","type":"Vector<MessageEntity>"},{"name":"author","type":"string"},{"name":"date","type":"int"}],"type":"help.UserInfo"},{"id":"-202219658","predicate":"messageActionContactSignUp","params":[],"type":"MessageAction"},{"id":"-1398708869","predicate":"updateMessagePoll","params":[{"name":"flags","type":"#"},{"name":"poll_id","type":"long"},{"name":"poll","type":"flags.0?Poll"},{"name":"results","type":"PollResults"}],"type":"Update"},{"id":"1823064809","predicate":"pollAnswer","params":[{"name":"text","type":"string"},{"name":"option","type":"bytes"}],"type":"PollAnswer"},{"id":"-2032041631","predicate":"poll","params":[{"name":"id","type":"long"},{"name":"flags","type":"#"},{"name":"closed","type":"flags.0?true"},{"name":"public_voters","type":"flags.1?true"},{"name":"multiple_choice","type":"flags.2?true"},{"name":"quiz","type":"flags.3?true"},{"name":"question","type":"string"},{"name":"answers","type":"Vector<PollAnswer>"},{"name":"close_period","type":"flags.4?int"},{"name":"close_date","type":"flags.5?int"}],"type":"Poll"},{"id":"997055186","predicate":"pollAnswerVoters","params":[{"name":"flags","type":"#"},{"name":"chosen","type":"flags.0?true"},{"name":"correct","type":"flags.1?true"},{"name":"option","type":"bytes"},{"name":"voters","type":"int"}],"type":"PollAnswerVoters"},{"id":"-591909213","predicate":"pollResults","params":[{"name":"flags","type":"#"},{"name":"min","type":"flags.0?true"},{"name":"results","type":"flags.1?Vector<PollAnswerVoters>"},{"name":"total_voters","type":"flags.2?int"},{"name":"recent_voters","type":"flags.3?Vector<long>"},{"name":"solution","type":"flags.4?string"},{"name":"solution_entities","type":"flags.4?Vector<MessageEntity>"}],"type":"PollResults"},{"id":"261416433","predicate":"inputMediaPoll","params":[{"name":"flags","type":"#"},{"name":"poll","type":"Poll"},{"name":"correct_answers","type":"flags.0?Vector<bytes>"},{"name":"solution","type":"flags.1?string"},{"name":"solution_entities","type":"flags.1?Vector<MessageEntity>"}],"type":"InputMedia"},{"id":"1272375192","predicate":"messageMediaPoll","params":[{"name":"poll","type":"Poll"},{"name":"results","type":"PollResults"}],"type":"MessageMedia"},{"id":"-264117680","predicate":"chatOnlines","params":[{"name":"onlines","type":"int"}],"type":"ChatOnlines"},{"id":"1202287072","predicate":"statsURL","params":[{"name":"url","type":"string"}],"type":"StatsURL"},{"id":"-525288402","predicate":"photoStrippedSize","params":[{"name":"type","type":"string"},{"name":"bytes","type":"bytes"}],"type":"PhotoSize"},{"id":"1605510357","predicate":"chatAdminRights","params":[{"name":"flags","type":"#"},{"name":"change_info","type":"flags.0?true"},{"name":"post_messages","type":"flags.1?true"},{"name":"edit_messages","type":"flags.2?true"},{"name":"delete_messages","type":"flags.3?true"},{"name":"ban_users","type":"flags.4?true"},{"name":"invite_users","type":"flags.5?true"},{"name":"pin_messages","type":"flags.7?true"},{"name":"add_admins","type":"flags.9?true"},{"name":"anonymous","type":"flags.10?true"},{"name":"manage_call","type":"flags.11?true"},{"name":"other","type":"flags.12?true"}],"type":"ChatAdminRights"},{"id":"-1626209256","predicate":"chatBannedRights","params":[{"name":"flags","type":"#"},{"name":"view_messages","type":"flags.0?true"},{"name":"send_messages","type":"flags.1?true"},{"name":"send_media","type":"flags.2?true"},{"name":"send_stickers","type":"flags.3?true"},{"name":"send_gifs","type":"flags.4?true"},{"name":"send_games","type":"flags.5?true"},{"name":"send_inline","type":"flags.6?true"},{"name":"embed_links","type":"flags.7?true"},{"name":"send_polls","type":"flags.8?true"},{"name":"change_info","type":"flags.10?true"},{"name":"invite_users","type":"flags.15?true"},{"name":"pin_messages","type":"flags.17?true"},{"name":"until_date","type":"int"}],"type":"ChatBannedRights"},{"id":"1421875280","predicate":"updateChatDefaultBannedRights","params":[{"name":"peer","type":"Peer"},{"name":"default_banned_rights","type":"ChatBannedRights"},{"name":"version","type":"int"}],"type":"Update"},{"id":"-433014407","predicate":"inputWallPaper","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputWallPaper"},{"id":"1913199744","predicate":"inputWallPaperSlug","params":[{"name":"slug","type":"string"}],"type":"InputWallPaper"},{"id":"-1150621555","predicate":"channelParticipantsContacts","params":[{"name":"q","type":"string"}],"type":"ChannelParticipantsFilter"},{"id":"771095562","predicate":"channelAdminLogEventActionDefaultBannedRights","params":[{"name":"prev_banned_rights","type":"ChatBannedRights"},{"name":"new_banned_rights","type":"ChatBannedRights"}],"type":"ChannelAdminLogEventAction"},{"id":"-1895328189","predicate":"channelAdminLogEventActionStopPoll","params":[{"name":"message","type":"Message"}],"type":"ChannelAdminLogEventAction"},{"id":"471437699","predicate":"account.wallPapersNotModified","params":[],"type":"account.WallPapers"},{"id":"-842824308","predicate":"account.wallPapers","params":[{"name":"hash","type":"long"},{"name":"wallpapers","type":"Vector<WallPaper>"}],"type":"account.WallPapers"},{"id":"-557924733","predicate":"codeSettings","params":[{"name":"flags","type":"#"},{"name":"allow_flashcall","type":"flags.0?true"},{"name":"current_number","type":"flags.1?true"},{"name":"allow_app_hash","type":"flags.4?true"}],"type":"CodeSettings"},{"id":"499236004","predicate":"wallPaperSettings","params":[{"name":"flags","type":"#"},{"name":"blur","type":"flags.1?true"},{"name":"motion","type":"flags.2?true"},{"name":"background_color","type":"flags.0?int"},{"name":"second_background_color","type":"flags.4?int"},{"name":"third_background_color","type":"flags.5?int"},{"name":"fourth_background_color","type":"flags.6?int"},{"name":"intensity","type":"flags.3?int"},{"name":"rotation","type":"flags.4?int"}],"type":"WallPaperSettings"},{"id":"-532532493","predicate":"autoDownloadSettings","params":[{"name":"flags","type":"#"},{"name":"disabled","type":"flags.0?true"},{"name":"video_preload_large","type":"flags.1?true"},{"name":"audio_preload_next","type":"flags.2?true"},{"name":"phonecalls_less_data","type":"flags.3?true"},{"name":"photo_size_max","type":"int"},{"name":"video_size_max","type":"int"},{"name":"file_size_max","type":"int"},{"name":"video_upload_maxbitrate","type":"int"}],"type":"AutoDownloadSettings"},{"id":"1674235686","predicate":"account.autoDownloadSettings","params":[{"name":"low","type":"AutoDownloadSettings"},{"name":"medium","type":"AutoDownloadSettings"},{"name":"high","type":"AutoDownloadSettings"}],"type":"account.AutoDownloadSettings"},{"id":"-709641735","predicate":"emojiKeyword","params":[{"name":"keyword","type":"string"},{"name":"emoticons","type":"Vector<string>"}],"type":"EmojiKeyword"},{"id":"594408994","predicate":"emojiKeywordDeleted","params":[{"name":"keyword","type":"string"},{"name":"emoticons","type":"Vector<string>"}],"type":"EmojiKeyword"},{"id":"1556570557","predicate":"emojiKeywordsDifference","params":[{"name":"lang_code","type":"string"},{"name":"from_version","type":"int"},{"name":"version","type":"int"},{"name":"keywords","type":"Vector<EmojiKeyword>"}],"type":"EmojiKeywordsDifference"},{"id":"-1519029347","predicate":"emojiURL","params":[{"name":"url","type":"string"}],"type":"EmojiURL"},{"id":"-1275374751","predicate":"emojiLanguage","params":[{"name":"lang_code","type":"string"}],"type":"EmojiLanguage"},{"id":"-1529000952","predicate":"inputPrivacyKeyForwards","params":[],"type":"InputPrivacyKey"},{"id":"1777096355","predicate":"privacyKeyForwards","params":[],"type":"PrivacyKey"},{"id":"1461304012","predicate":"inputPrivacyKeyProfilePhoto","params":[],"type":"InputPrivacyKey"},{"id":"-1777000467","predicate":"privacyKeyProfilePhoto","params":[],"type":"PrivacyKey"},{"id":"1075322878","predicate":"inputPhotoFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"thumb_size","type":"string"}],"type":"InputFileLocation"},{"id":"-667654413","predicate":"inputPhotoLegacyFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"volume_id","type":"long"},{"name":"local_id","type":"int"},{"name":"secret","type":"long"}],"type":"InputFileLocation"},{"id":"925204121","predicate":"inputPeerPhotoFileLocation","params":[{"name":"flags","type":"#"},{"name":"big","type":"flags.0?true"},{"name":"peer","type":"InputPeer"},{"name":"photo_id","type":"long"}],"type":"InputFileLocation"},{"id":"-1652231205","predicate":"inputStickerSetThumb","params":[{"name":"stickerset","type":"InputStickerSet"},{"name":"thumb_version","type":"int"}],"type":"InputFileLocation"},{"id":"-11252123","predicate":"folder","params":[{"name":"flags","type":"#"},{"name":"autofill_new_broadcasts","type":"flags.0?true"},{"name":"autofill_public_groups","type":"flags.1?true"},{"name":"autofill_new_correspondents","type":"flags.2?true"},{"name":"id","type":"int"},{"name":"title","type":"string"},{"name":"photo","type":"flags.3?ChatPhoto"}],"type":"Folder"},{"id":"1908216652","predicate":"dialogFolder","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.2?true"},{"name":"folder","type":"Folder"},{"name":"peer","type":"Peer"},{"name":"top_message","type":"int"},{"name":"unread_muted_peers_count","type":"int"},{"name":"unread_unmuted_peers_count","type":"int"},{"name":"unread_muted_messages_count","type":"int"},{"name":"unread_unmuted_messages_count","type":"int"}],"type":"Dialog"},{"id":"1684014375","predicate":"inputDialogPeerFolder","params":[{"name":"folder_id","type":"int"}],"type":"InputDialogPeer"},{"id":"1363483106","predicate":"dialogPeerFolder","params":[{"name":"folder_id","type":"int"}],"type":"DialogPeer"},{"id":"-70073706","predicate":"inputFolderPeer","params":[{"name":"peer","type":"InputPeer"},{"name":"folder_id","type":"int"}],"type":"InputFolderPeer"},{"id":"-373643672","predicate":"folderPeer","params":[{"name":"peer","type":"Peer"},{"name":"folder_id","type":"int"}],"type":"FolderPeer"},{"id":"422972864","predicate":"updateFolderPeers","params":[{"name":"folder_peers","type":"Vector<FolderPeer>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"497305826","predicate":"inputUserFromMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"user_id","type":"long"}],"type":"InputUser"},{"id":"1536380829","predicate":"inputChannelFromMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"channel_id","type":"long"}],"type":"InputChannel"},{"id":"-1468331492","predicate":"inputPeerUserFromMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"user_id","type":"long"}],"type":"InputPeer"},{"id":"-1121318848","predicate":"inputPeerChannelFromMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"channel_id","type":"long"}],"type":"InputPeer"},{"id":"55761658","predicate":"inputPrivacyKeyPhoneNumber","params":[],"type":"InputPrivacyKey"},{"id":"-778378131","predicate":"privacyKeyPhoneNumber","params":[],"type":"PrivacyKey"},{"id":"-1472172887","predicate":"topPeerCategoryForwardUsers","params":[],"type":"TopPeerCategory"},{"id":"-68239120","predicate":"topPeerCategoryForwardChats","params":[],"type":"TopPeerCategory"},{"id":"84703944","predicate":"channelAdminLogEventActionChangeLinkedChat","params":[{"name":"prev_value","type":"long"},{"name":"new_value","type":"long"}],"type":"ChannelAdminLogEventAction"},{"id":"-398136321","predicate":"messages.searchCounter","params":[{"name":"flags","type":"#"},{"name":"inexact","type":"flags.1?true"},{"name":"filter","type":"MessagesFilter"},{"name":"count","type":"int"}],"type":"messages.SearchCounter"},{"id":"280464681","predicate":"keyboardButtonUrlAuth","params":[{"name":"flags","type":"#"},{"name":"text","type":"string"},{"name":"fwd_text","type":"flags.0?string"},{"name":"url","type":"string"},{"name":"button_id","type":"int"}],"type":"KeyboardButton"},{"id":"-802258988","predicate":"inputKeyboardButtonUrlAuth","params":[{"name":"flags","type":"#"},{"name":"request_write_access","type":"flags.0?true"},{"name":"text","type":"string"},{"name":"fwd_text","type":"flags.1?string"},{"name":"url","type":"string"},{"name":"bot","type":"InputUser"}],"type":"KeyboardButton"},{"id":"-1831650802","predicate":"urlAuthResultRequest","params":[{"name":"flags","type":"#"},{"name":"request_write_access","type":"flags.0?true"},{"name":"bot","type":"User"},{"name":"domain","type":"string"}],"type":"UrlAuthResult"},{"id":"-1886646706","predicate":"urlAuthResultAccepted","params":[{"name":"url","type":"string"}],"type":"UrlAuthResult"},{"id":"-1445536993","predicate":"urlAuthResultDefault","params":[],"type":"UrlAuthResult"},{"id":"-2079962673","predicate":"inputPrivacyValueAllowChatParticipants","params":[{"name":"chats","type":"Vector<long>"}],"type":"InputPrivacyRule"},{"id":"-380694650","predicate":"inputPrivacyValueDisallowChatParticipants","params":[{"name":"chats","type":"Vector<long>"}],"type":"InputPrivacyRule"},{"id":"1796427406","predicate":"privacyValueAllowChatParticipants","params":[{"name":"chats","type":"Vector<long>"}],"type":"PrivacyRule"},{"id":"1103656293","predicate":"privacyValueDisallowChatParticipants","params":[{"name":"chats","type":"Vector<long>"}],"type":"PrivacyRule"},{"id":"-1672577397","predicate":"messageEntityUnderline","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-1090087980","predicate":"messageEntityStrike","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"34469328","predicate":"messageEntityBlockquote","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1786671974","predicate":"updatePeerSettings","params":[{"name":"peer","type":"Peer"},{"name":"settings","type":"PeerSettings"}],"type":"Update"},{"id":"-1078612597","predicate":"channelLocationEmpty","params":[],"type":"ChannelLocation"},{"id":"547062491","predicate":"channelLocation","params":[{"name":"geo_point","type":"GeoPoint"},{"name":"address","type":"string"}],"type":"ChannelLocation"},{"id":"-901375139","predicate":"peerLocated","params":[{"name":"peer","type":"Peer"},{"name":"expires","type":"int"},{"name":"distance","type":"int"}],"type":"PeerLocated"},{"id":"-1263546448","predicate":"updatePeerLocated","params":[{"name":"peers","type":"Vector<PeerLocated>"}],"type":"Update"},{"id":"241923758","predicate":"channelAdminLogEventActionChangeLocation","params":[{"name":"prev_value","type":"ChannelLocation"},{"name":"new_value","type":"ChannelLocation"}],"type":"ChannelAdminLogEventAction"},{"id":"-606798099","predicate":"inputReportReasonGeoIrrelevant","params":[],"type":"ReportReason"},{"id":"1401984889","predicate":"channelAdminLogEventActionToggleSlowMode","params":[{"name":"prev_value","type":"int"},{"name":"new_value","type":"int"}],"type":"ChannelAdminLogEventAction"},{"id":"1148485274","predicate":"auth.authorizationSignUpRequired","params":[{"name":"flags","type":"#"},{"name":"terms_of_service","type":"flags.0?help.TermsOfService"}],"type":"auth.Authorization"},{"id":"-666824391","predicate":"payments.paymentVerificationNeeded","params":[{"name":"url","type":"string"}],"type":"payments.PaymentResult"},{"id":"42402760","predicate":"inputStickerSetAnimatedEmoji","params":[],"type":"InputStickerSet"},{"id":"967122427","predicate":"updateNewScheduledMessage","params":[{"name":"message","type":"Message"}],"type":"Update"},{"id":"-1870238482","predicate":"updateDeleteScheduledMessages","params":[{"name":"peer","type":"Peer"},{"name":"messages","type":"Vector<int>"}],"type":"Update"},{"id":"-797791052","predicate":"restrictionReason","params":[{"name":"platform","type":"string"},{"name":"reason","type":"string"},{"name":"text","type":"string"}],"type":"RestrictionReason"},{"id":"1012306921","predicate":"inputTheme","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputTheme"},{"id":"-175567375","predicate":"inputThemeSlug","params":[{"name":"slug","type":"string"}],"type":"InputTheme"},{"id":"-402474788","predicate":"theme","params":[{"name":"flags","type":"#"},{"name":"creator","type":"flags.0?true"},{"name":"default","type":"flags.1?true"},{"name":"for_chat","type":"flags.5?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"slug","type":"string"},{"name":"title","type":"string"},{"name":"document","type":"flags.2?Document"},{"name":"settings","type":"flags.3?ThemeSettings"},{"name":"installs_count","type":"flags.4?int"}],"type":"Theme"},{"id":"-199313886","predicate":"account.themesNotModified","params":[],"type":"account.Themes"},{"id":"-1707242387","predicate":"account.themes","params":[{"name":"hash","type":"long"},{"name":"themes","type":"Vector<Theme>"}],"type":"account.Themes"},{"id":"-2112423005","predicate":"updateTheme","params":[{"name":"theme","type":"Theme"}],"type":"Update"},{"id":"-786326563","predicate":"inputPrivacyKeyAddedByPhone","params":[],"type":"InputPrivacyKey"},{"id":"1124062251","predicate":"privacyKeyAddedByPhone","params":[],"type":"PrivacyKey"},{"id":"-2027964103","predicate":"updateGeoLiveViewed","params":[{"name":"peer","type":"Peer"},{"name":"msg_id","type":"int"}],"type":"Update"},{"id":"1448076945","predicate":"updateLoginToken","params":[],"type":"Update"},{"id":"1654593920","predicate":"auth.loginToken","params":[{"name":"expires","type":"int"},{"name":"token","type":"bytes"}],"type":"auth.LoginToken"},{"id":"110008598","predicate":"auth.loginTokenMigrateTo","params":[{"name":"dc_id","type":"int"},{"name":"token","type":"bytes"}],"type":"auth.LoginToken"},{"id":"957176926","predicate":"auth.loginTokenSuccess","params":[{"name":"authorization","type":"auth.Authorization"}],"type":"auth.LoginToken"},{"id":"1474462241","predicate":"account.contentSettings","params":[{"name":"flags","type":"#"},{"name":"sensitive_enabled","type":"flags.0?true"},{"name":"sensitive_can_change","type":"flags.1?true"}],"type":"account.ContentSettings"},{"id":"-1456996667","predicate":"messages.inactiveChats","params":[{"name":"dates","type":"Vector<int>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.InactiveChats"},{"id":"-1012849566","predicate":"baseThemeClassic","params":[],"type":"BaseTheme"},{"id":"-69724536","predicate":"baseThemeDay","params":[],"type":"BaseTheme"},{"id":"-1212997976","predicate":"baseThemeNight","params":[],"type":"BaseTheme"},{"id":"1834973166","predicate":"baseThemeTinted","params":[],"type":"BaseTheme"},{"id":"1527845466","predicate":"baseThemeArctic","params":[],"type":"BaseTheme"},{"id":"-1770371538","predicate":"inputWallPaperNoFile","params":[{"name":"id","type":"long"}],"type":"InputWallPaper"},{"id":"-528465642","predicate":"wallPaperNoFile","params":[{"name":"id","type":"long"},{"name":"flags","type":"#"},{"name":"default","type":"flags.1?true"},{"name":"dark","type":"flags.4?true"},{"name":"settings","type":"flags.2?WallPaperSettings"}],"type":"WallPaper"},{"id":"-1881255857","predicate":"inputThemeSettings","params":[{"name":"flags","type":"#"},{"name":"message_colors_animated","type":"flags.2?true"},{"name":"base_theme","type":"BaseTheme"},{"name":"accent_color","type":"int"},{"name":"outbox_accent_color","type":"flags.3?int"},{"name":"message_colors","type":"flags.0?Vector<int>"},{"name":"wallpaper","type":"flags.1?InputWallPaper"},{"name":"wallpaper_settings","type":"flags.1?WallPaperSettings"}],"type":"InputThemeSettings"},{"id":"-94849324","predicate":"themeSettings","params":[{"name":"flags","type":"#"},{"name":"message_colors_animated","type":"flags.2?true"},{"name":"base_theme","type":"BaseTheme"},{"name":"accent_color","type":"int"},{"name":"outbox_accent_color","type":"flags.3?int"},{"name":"message_colors","type":"flags.0?Vector<int>"},{"name":"wallpaper","type":"flags.1?WallPaper"}],"type":"ThemeSettings"},{"id":"1421174295","predicate":"webPageAttributeTheme","params":[{"name":"flags","type":"#"},{"name":"documents","type":"flags.0?Vector<Document>"},{"name":"settings","type":"flags.1?ThemeSettings"}],"type":"WebPageAttribute"},{"id":"274961865","predicate":"updateMessagePollVote","params":[{"name":"poll_id","type":"long"},{"name":"user_id","type":"long"},{"name":"options","type":"Vector<bytes>"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"886196148","predicate":"messageUserVote","params":[{"name":"user_id","type":"long"},{"name":"option","type":"bytes"},{"name":"date","type":"int"}],"type":"MessageUserVote"},{"id":"1017491692","predicate":"messageUserVoteInputOption","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"}],"type":"MessageUserVote"},{"id":"-1973033641","predicate":"messageUserVoteMultiple","params":[{"name":"user_id","type":"long"},{"name":"options","type":"Vector<bytes>"},{"name":"date","type":"int"}],"type":"MessageUserVote"},{"id":"136574537","predicate":"messages.votesList","params":[{"name":"flags","type":"#"},{"name":"count","type":"int"},{"name":"votes","type":"Vector<MessageUserVote>"},{"name":"users","type":"Vector<User>"},{"name":"next_offset","type":"flags.0?string"}],"type":"messages.VotesList"},{"id":"-1144565411","predicate":"keyboardButtonRequestPoll","params":[{"name":"flags","type":"#"},{"name":"quiz","type":"flags.0?Bool"},{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"1981704948","predicate":"messageEntityBankCard","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-177732982","predicate":"bankCardOpenUrl","params":[{"name":"url","type":"string"},{"name":"name","type":"string"}],"type":"BankCardOpenUrl"},{"id":"1042605427","predicate":"payments.bankCardData","params":[{"name":"title","type":"string"},{"name":"open_urls","type":"Vector<BankCardOpenUrl>"}],"type":"payments.BankCardData"},{"id":"-118740917","predicate":"peerSelfLocated","params":[{"name":"expires","type":"int"}],"type":"PeerLocated"},{"id":"1949890536","predicate":"dialogFilter","params":[{"name":"flags","type":"#"},{"name":"contacts","type":"flags.0?true"},{"name":"non_contacts","type":"flags.1?true"},{"name":"groups","type":"flags.2?true"},{"name":"broadcasts","type":"flags.3?true"},{"name":"bots","type":"flags.4?true"},{"name":"exclude_muted","type":"flags.11?true"},{"name":"exclude_read","type":"flags.12?true"},{"name":"exclude_archived","type":"flags.13?true"},{"name":"id","type":"int"},{"name":"title","type":"string"},{"name":"emoticon","type":"flags.25?string"},{"name":"pinned_peers","type":"Vector<InputPeer>"},{"name":"include_peers","type":"Vector<InputPeer>"},{"name":"exclude_peers","type":"Vector<InputPeer>"}],"type":"DialogFilter"},{"id":"2004110666","predicate":"dialogFilterSuggested","params":[{"name":"filter","type":"DialogFilter"},{"name":"description","type":"string"}],"type":"DialogFilterSuggested"},{"id":"654302845","predicate":"updateDialogFilter","params":[{"name":"flags","type":"#"},{"name":"id","type":"int"},{"name":"filter","type":"flags.0?DialogFilter"}],"type":"Update"},{"id":"-1512627963","predicate":"updateDialogFilterOrder","params":[{"name":"order","type":"Vector<int>"}],"type":"Update"},{"id":"889491791","predicate":"updateDialogFilters","params":[],"type":"Update"},{"id":"-1237848657","predicate":"statsDateRangeDays","params":[{"name":"min_date","type":"int"},{"name":"max_date","type":"int"}],"type":"StatsDateRangeDays"},{"id":"-884757282","predicate":"statsAbsValueAndPrev","params":[{"name":"current","type":"double"},{"name":"previous","type":"double"}],"type":"StatsAbsValueAndPrev"},{"id":"-875679776","predicate":"statsPercentValue","params":[{"name":"part","type":"double"},{"name":"total","type":"double"}],"type":"StatsPercentValue"},{"id":"1244130093","predicate":"statsGraphAsync","params":[{"name":"token","type":"string"}],"type":"StatsGraph"},{"id":"-1092839390","predicate":"statsGraphError","params":[{"name":"error","type":"string"}],"type":"StatsGraph"},{"id":"-1901828938","predicate":"statsGraph","params":[{"name":"flags","type":"#"},{"name":"json","type":"DataJSON"},{"name":"zoom_token","type":"flags.0?string"}],"type":"StatsGraph"},{"id":"-1387279939","predicate":"messageInteractionCounters","params":[{"name":"msg_id","type":"int"},{"name":"views","type":"int"},{"name":"forwards","type":"int"}],"type":"MessageInteractionCounters"},{"id":"-1107852396","predicate":"stats.broadcastStats","params":[{"name":"period","type":"StatsDateRangeDays"},{"name":"followers","type":"StatsAbsValueAndPrev"},{"name":"views_per_post","type":"StatsAbsValueAndPrev"},{"name":"shares_per_post","type":"StatsAbsValueAndPrev"},{"name":"enabled_notifications","type":"StatsPercentValue"},{"name":"growth_graph","type":"StatsGraph"},{"name":"followers_graph","type":"StatsGraph"},{"name":"mute_graph","type":"StatsGraph"},{"name":"top_hours_graph","type":"StatsGraph"},{"name":"interactions_graph","type":"StatsGraph"},{"name":"iv_interactions_graph","type":"StatsGraph"},{"name":"views_by_source_graph","type":"StatsGraph"},{"name":"new_followers_by_source_graph","type":"StatsGraph"},{"name":"languages_graph","type":"StatsGraph"},{"name":"recent_message_interactions","type":"Vector<MessageInteractionCounters>"}],"type":"stats.BroadcastStats"},{"id":"-428884101","predicate":"inputMediaDice","params":[{"name":"emoticon","type":"string"}],"type":"InputMedia"},{"id":"1065280907","predicate":"messageMediaDice","params":[{"name":"value","type":"int"},{"name":"emoticon","type":"string"}],"type":"MessageMedia"},{"id":"-427863538","predicate":"inputStickerSetDice","params":[{"name":"emoticon","type":"string"}],"type":"InputStickerSet"},{"id":"-1728664459","predicate":"help.promoDataEmpty","params":[{"name":"expires","type":"int"}],"type":"help.PromoData"},{"id":"-1942390465","predicate":"help.promoData","params":[{"name":"flags","type":"#"},{"name":"proxy","type":"flags.0?true"},{"name":"expires","type":"int"},{"name":"peer","type":"Peer"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"psa_type","type":"flags.1?string"},{"name":"psa_message","type":"flags.2?string"}],"type":"help.PromoData"},{"id":"-567037804","predicate":"videoSize","params":[{"name":"flags","type":"#"},{"name":"type","type":"string"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"size","type":"int"},{"name":"video_start_ts","type":"flags.0?double"}],"type":"VideoSize"},{"id":"643940105","predicate":"updatePhoneCallSignalingData","params":[{"name":"phone_call_id","type":"long"},{"name":"data","type":"bytes"}],"type":"Update"},{"id":"1634294960","predicate":"chatInvitePeek","params":[{"name":"chat","type":"Chat"},{"name":"expires","type":"int"}],"type":"ChatInvite"},{"id":"-1660637285","predicate":"statsGroupTopPoster","params":[{"name":"user_id","type":"long"},{"name":"messages","type":"int"},{"name":"avg_chars","type":"int"}],"type":"StatsGroupTopPoster"},{"id":"-682079097","predicate":"statsGroupTopAdmin","params":[{"name":"user_id","type":"long"},{"name":"deleted","type":"int"},{"name":"kicked","type":"int"},{"name":"banned","type":"int"}],"type":"StatsGroupTopAdmin"},{"id":"1398765469","predicate":"statsGroupTopInviter","params":[{"name":"user_id","type":"long"},{"name":"invitations","type":"int"}],"type":"StatsGroupTopInviter"},{"id":"-276825834","predicate":"stats.megagroupStats","params":[{"name":"period","type":"StatsDateRangeDays"},{"name":"members","type":"StatsAbsValueAndPrev"},{"name":"messages","type":"StatsAbsValueAndPrev"},{"name":"viewers","type":"StatsAbsValueAndPrev"},{"name":"posters","type":"StatsAbsValueAndPrev"},{"name":"growth_graph","type":"StatsGraph"},{"name":"members_graph","type":"StatsGraph"},{"name":"new_members_by_source_graph","type":"StatsGraph"},{"name":"languages_graph","type":"StatsGraph"},{"name":"messages_graph","type":"StatsGraph"},{"name":"actions_graph","type":"StatsGraph"},{"name":"top_hours_graph","type":"StatsGraph"},{"name":"weekdays_graph","type":"StatsGraph"},{"name":"top_posters","type":"Vector<StatsGroupTopPoster>"},{"name":"top_admins","type":"Vector<StatsGroupTopAdmin>"},{"name":"top_inviters","type":"Vector<StatsGroupTopInviter>"},{"name":"users","type":"Vector<User>"}],"type":"stats.MegagroupStats"},{"id":"-1096616924","predicate":"globalPrivacySettings","params":[{"name":"flags","type":"#"},{"name":"archive_and_mute_new_noncontact_peers","type":"flags.0?Bool"}],"type":"GlobalPrivacySettings"},{"id":"1667228533","predicate":"phoneConnectionWebrtc","params":[{"name":"flags","type":"#"},{"name":"turn","type":"flags.0?true"},{"name":"stun","type":"flags.1?true"},{"name":"id","type":"long"},{"name":"ip","type":"string"},{"name":"ipv6","type":"string"},{"name":"port","type":"int"},{"name":"username","type":"string"},{"name":"password","type":"string"}],"type":"PhoneConnection"},{"id":"1107543535","predicate":"help.countryCode","params":[{"name":"flags","type":"#"},{"name":"country_code","type":"string"},{"name":"prefixes","type":"flags.0?Vector<string>"},{"name":"patterns","type":"flags.1?Vector<string>"}],"type":"help.CountryCode"},{"id":"-1014526429","predicate":"help.country","params":[{"name":"flags","type":"#"},{"name":"hidden","type":"flags.0?true"},{"name":"iso2","type":"string"},{"name":"default_name","type":"string"},{"name":"name","type":"flags.1?string"},{"name":"country_codes","type":"Vector<help.CountryCode>"}],"type":"help.Country"},{"id":"-1815339214","predicate":"help.countriesListNotModified","params":[],"type":"help.CountriesList"},{"id":"-2016381538","predicate":"help.countriesList","params":[{"name":"countries","type":"Vector<help.Country>"},{"name":"hash","type":"int"}],"type":"help.CountriesList"},{"id":"1163625789","predicate":"messageViews","params":[{"name":"flags","type":"#"},{"name":"views","type":"flags.0?int"},{"name":"forwards","type":"flags.1?int"},{"name":"replies","type":"flags.2?MessageReplies"}],"type":"MessageViews"},{"id":"-761649164","predicate":"updateChannelMessageForwards","params":[{"name":"channel_id","type":"long"},{"name":"id","type":"int"},{"name":"forwards","type":"int"}],"type":"Update"},{"id":"-96535659","predicate":"photoSizeProgressive","params":[{"name":"type","type":"string"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"sizes","type":"Vector<int>"}],"type":"PhotoSize"},{"id":"-1228606141","predicate":"messages.messageViews","params":[{"name":"views","type":"Vector<MessageViews>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.MessageViews"},{"id":"-693004986","predicate":"updateReadChannelDiscussionInbox","params":[{"name":"flags","type":"#"},{"name":"channel_id","type":"long"},{"name":"top_msg_id","type":"int"},{"name":"read_max_id","type":"int"},{"name":"broadcast_id","type":"flags.0?long"},{"name":"broadcast_post","type":"flags.0?int"}],"type":"Update"},{"id":"1767677564","predicate":"updateReadChannelDiscussionOutbox","params":[{"name":"channel_id","type":"long"},{"name":"top_msg_id","type":"int"},{"name":"read_max_id","type":"int"}],"type":"Update"},{"id":"-1506535550","predicate":"messages.discussionMessage","params":[{"name":"flags","type":"#"},{"name":"messages","type":"Vector<Message>"},{"name":"max_id","type":"flags.0?int"},{"name":"read_inbox_max_id","type":"flags.1?int"},{"name":"read_outbox_max_id","type":"flags.2?int"},{"name":"unread_count","type":"int"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.DiscussionMessage"},{"id":"-1495959709","predicate":"messageReplyHeader","params":[{"name":"flags","type":"#"},{"name":"reply_to_msg_id","type":"int"},{"name":"reply_to_peer_id","type":"flags.0?Peer"},{"name":"reply_to_top_id","type":"flags.1?int"}],"type":"MessageReplyHeader"},{"id":"-2083123262","predicate":"messageReplies","params":[{"name":"flags","type":"#"},{"name":"comments","type":"flags.0?true"},{"name":"replies","type":"int"},{"name":"replies_pts","type":"int"},{"name":"recent_repliers","type":"flags.1?Vector<Peer>"},{"name":"channel_id","type":"flags.0?long"},{"name":"max_id","type":"flags.2?int"},{"name":"read_max_id","type":"flags.3?int"}],"type":"MessageReplies"},{"id":"610945826","predicate":"updatePeerBlocked","params":[{"name":"peer_id","type":"Peer"},{"name":"blocked","type":"Bool"}],"type":"Update"},{"id":"-386039788","predicate":"peerBlocked","params":[{"name":"peer_id","type":"Peer"},{"name":"date","type":"int"}],"type":"PeerBlocked"},{"id":"-1937192669","predicate":"updateChannelUserTyping","params":[{"name":"flags","type":"#"},{"name":"channel_id","type":"long"},{"name":"top_msg_id","type":"flags.0?int"},{"name":"from_id","type":"Peer"},{"name":"action","type":"SendMessageAction"}],"type":"Update"},{"id":"-1392895362","predicate":"inputMessageCallbackQuery","params":[{"name":"id","type":"int"},{"name":"query_id","type":"long"}],"type":"InputMessage"},{"id":"453242886","predicate":"channelParticipantLeft","params":[{"name":"peer","type":"Peer"}],"type":"ChannelParticipant"},{"id":"-531931925","predicate":"channelParticipantsMentions","params":[{"name":"flags","type":"#"},{"name":"q","type":"flags.0?string"},{"name":"top_msg_id","type":"flags.1?int"}],"type":"ChannelParticipantsFilter"},{"id":"-309990731","predicate":"updatePinnedMessages","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.0?true"},{"name":"peer","type":"Peer"},{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"1538885128","predicate":"updatePinnedChannelMessages","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.0?true"},{"name":"channel_id","type":"long"},{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"464520273","predicate":"inputMessagesFilterPinned","params":[],"type":"MessagesFilter"},{"id":"-1986399595","predicate":"stats.messageStats","params":[{"name":"views_graph","type":"StatsGraph"}],"type":"stats.MessageStats"},{"id":"-1730095465","predicate":"messageActionGeoProximityReached","params":[{"name":"from_id","type":"Peer"},{"name":"to_id","type":"Peer"},{"name":"distance","type":"int"}],"type":"MessageAction"},{"id":"-668906175","predicate":"photoPathSize","params":[{"name":"type","type":"string"},{"name":"bytes","type":"bytes"}],"type":"PhotoSize"},{"id":"-651419003","predicate":"speakingInGroupCallAction","params":[],"type":"SendMessageAction"},{"id":"2004925620","predicate":"groupCallDiscarded","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"duration","type":"int"}],"type":"GroupCall"},{"id":"-711498484","predicate":"groupCall","params":[{"name":"flags","type":"#"},{"name":"join_muted","type":"flags.1?true"},{"name":"can_change_join_muted","type":"flags.2?true"},{"name":"join_date_asc","type":"flags.6?true"},{"name":"schedule_start_subscribed","type":"flags.8?true"},{"name":"can_start_video","type":"flags.9?true"},{"name":"record_video_active","type":"flags.11?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"participants_count","type":"int"},{"name":"title","type":"flags.3?string"},{"name":"stream_dc_id","type":"flags.4?int"},{"name":"record_start_date","type":"flags.5?int"},{"name":"schedule_date","type":"flags.7?int"},{"name":"unmuted_video_count","type":"flags.10?int"},{"name":"unmuted_video_limit","type":"int"},{"name":"version","type":"int"}],"type":"GroupCall"},{"id":"-659913713","predicate":"inputGroupCall","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputGroupCall"},{"id":"2047704898","predicate":"messageActionGroupCall","params":[{"name":"flags","type":"#"},{"name":"call","type":"InputGroupCall"},{"name":"duration","type":"flags.0?int"}],"type":"MessageAction"},{"id":"1345295095","predicate":"messageActionInviteToGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"users","type":"Vector<long>"}],"type":"MessageAction"},{"id":"-341428482","predicate":"groupCallParticipant","params":[{"name":"flags","type":"#"},{"name":"muted","type":"flags.0?true"},{"name":"left","type":"flags.1?true"},{"name":"can_self_unmute","type":"flags.2?true"},{"name":"just_joined","type":"flags.4?true"},{"name":"versioned","type":"flags.5?true"},{"name":"min","type":"flags.8?true"},{"name":"muted_by_you","type":"flags.9?true"},{"name":"volume_by_admin","type":"flags.10?true"},{"name":"self","type":"flags.12?true"},{"name":"video_joined","type":"flags.15?true"},{"name":"peer","type":"Peer"},{"name":"date","type":"int"},{"name":"active_date","type":"flags.3?int"},{"name":"source","type":"int"},{"name":"volume","type":"flags.7?int"},{"name":"about","type":"flags.11?string"},{"name":"raise_hand_rating","type":"flags.13?long"},{"name":"video","type":"flags.6?GroupCallParticipantVideo"},{"name":"presentation","type":"flags.14?GroupCallParticipantVideo"}],"type":"GroupCallParticipant"},{"id":"-124097970","predicate":"updateChat","params":[{"name":"chat_id","type":"long"}],"type":"Update"},{"id":"-219423922","predicate":"updateGroupCallParticipants","params":[{"name":"call","type":"InputGroupCall"},{"name":"participants","type":"Vector<GroupCallParticipant>"},{"name":"version","type":"int"}],"type":"Update"},{"id":"347227392","predicate":"updateGroupCall","params":[{"name":"chat_id","type":"long"},{"name":"call","type":"GroupCall"}],"type":"Update"},{"id":"-1636664659","predicate":"phone.groupCall","params":[{"name":"call","type":"GroupCall"},{"name":"participants","type":"Vector<GroupCallParticipant>"},{"name":"participants_next_offset","type":"string"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"phone.GroupCall"},{"id":"-193506890","predicate":"phone.groupParticipants","params":[{"name":"count","type":"int"},{"name":"participants","type":"Vector<GroupCallParticipant>"},{"name":"next_offset","type":"string"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"version","type":"int"}],"type":"phone.GroupParticipants"},{"id":"813821341","predicate":"inlineQueryPeerTypeSameBotPM","params":[],"type":"InlineQueryPeerType"},{"id":"-2093215828","predicate":"inlineQueryPeerTypePM","params":[],"type":"InlineQueryPeerType"},{"id":"-681130742","predicate":"inlineQueryPeerTypeChat","params":[],"type":"InlineQueryPeerType"},{"id":"1589952067","predicate":"inlineQueryPeerTypeMegagroup","params":[],"type":"InlineQueryPeerType"},{"id":"1664413338","predicate":"inlineQueryPeerTypeBroadcast","params":[],"type":"InlineQueryPeerType"},{"id":"589338437","predicate":"channelAdminLogEventActionStartGroupCall","params":[{"name":"call","type":"InputGroupCall"}],"type":"ChannelAdminLogEventAction"},{"id":"-610299584","predicate":"channelAdminLogEventActionDiscardGroupCall","params":[{"name":"call","type":"InputGroupCall"}],"type":"ChannelAdminLogEventAction"},{"id":"-115071790","predicate":"channelAdminLogEventActionParticipantMute","params":[{"name":"participant","type":"GroupCallParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"-431740480","predicate":"channelAdminLogEventActionParticipantUnmute","params":[{"name":"participant","type":"GroupCallParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"1456906823","predicate":"channelAdminLogEventActionToggleGroupCallSetting","params":[{"name":"join_muted","type":"Bool"}],"type":"ChannelAdminLogEventAction"},{"id":"-1966921727","predicate":"inputPaymentCredentialsGooglePay","params":[{"name":"payment_token","type":"DataJSON"}],"type":"InputPaymentCredentials"},{"id":"375566091","predicate":"messages.historyImport","params":[{"name":"id","type":"long"}],"type":"messages.HistoryImport"},{"id":"-606432698","predicate":"sendMessageHistoryImportAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"1578088377","predicate":"messages.historyImportParsed","params":[{"name":"flags","type":"#"},{"name":"pm","type":"flags.0?true"},{"name":"group","type":"flags.1?true"},{"name":"title","type":"flags.2?string"}],"type":"messages.HistoryImportParsed"},{"id":"-170010905","predicate":"inputReportReasonFake","params":[],"type":"ReportReason"},{"id":"-275956116","predicate":"messages.affectedFoundMessages","params":[{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"offset","type":"int"},{"name":"messages","type":"Vector<int>"}],"type":"messages.AffectedFoundMessages"},{"id":"-1441072131","predicate":"messageActionSetMessagesTTL","params":[{"name":"period","type":"int"}],"type":"MessageAction"},{"id":"-1147422299","predicate":"updatePeerHistoryTTL","params":[{"name":"flags","type":"#"},{"name":"peer","type":"Peer"},{"name":"ttl_period","type":"flags.0?int"}],"type":"Update"},{"id":"-796432838","predicate":"updateChatParticipant","params":[{"name":"flags","type":"#"},{"name":"chat_id","type":"long"},{"name":"date","type":"int"},{"name":"actor_id","type":"long"},{"name":"user_id","type":"long"},{"name":"prev_participant","type":"flags.0?ChatParticipant"},{"name":"new_participant","type":"flags.1?ChatParticipant"},{"name":"invite","type":"flags.2?ExportedChatInvite"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"-1738720581","predicate":"updateChannelParticipant","params":[{"name":"flags","type":"#"},{"name":"channel_id","type":"long"},{"name":"date","type":"int"},{"name":"actor_id","type":"long"},{"name":"user_id","type":"long"},{"name":"prev_participant","type":"flags.0?ChannelParticipant"},{"name":"new_participant","type":"flags.1?ChannelParticipant"},{"name":"invite","type":"flags.2?ExportedChatInvite"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"-997782967","predicate":"updateBotStopped","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"},{"name":"stopped","type":"Bool"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"190633460","predicate":"chatInviteImporter","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"}],"type":"ChatInviteImporter"},{"id":"-1111085620","predicate":"messages.exportedChatInvites","params":[{"name":"count","type":"int"},{"name":"invites","type":"Vector<ExportedChatInvite>"},{"name":"users","type":"Vector<User>"}],"type":"messages.ExportedChatInvites"},{"id":"410107472","predicate":"messages.exportedChatInvite","params":[{"name":"invite","type":"ExportedChatInvite"},{"name":"users","type":"Vector<User>"}],"type":"messages.ExportedChatInvite"},{"id":"572915951","predicate":"messages.exportedChatInviteReplaced","params":[{"name":"invite","type":"ExportedChatInvite"},{"name":"new_invite","type":"ExportedChatInvite"},{"name":"users","type":"Vector<User>"}],"type":"messages.ExportedChatInvite"},{"id":"-2118733814","predicate":"messages.chatInviteImporters","params":[{"name":"count","type":"int"},{"name":"importers","type":"Vector<ChatInviteImporter>"},{"name":"users","type":"Vector<User>"}],"type":"messages.ChatInviteImporters"},{"id":"-219353309","predicate":"chatAdminWithInvites","params":[{"name":"admin_id","type":"long"},{"name":"invites_count","type":"int"},{"name":"revoked_invites_count","type":"int"}],"type":"ChatAdminWithInvites"},{"id":"-1231326505","predicate":"messages.chatAdminsWithInvites","params":[{"name":"admins","type":"Vector<ChatAdminWithInvites>"},{"name":"users","type":"Vector<User>"}],"type":"messages.ChatAdminsWithInvites"},{"id":"1557846647","predicate":"channelAdminLogEventActionParticipantJoinByInvite","params":[{"name":"invite","type":"ExportedChatInvite"}],"type":"ChannelAdminLogEventAction"},{"id":"1515256996","predicate":"channelAdminLogEventActionExportedInviteDelete","params":[{"name":"invite","type":"ExportedChatInvite"}],"type":"ChannelAdminLogEventAction"},{"id":"1091179342","predicate":"channelAdminLogEventActionExportedInviteRevoke","params":[{"name":"invite","type":"ExportedChatInvite"}],"type":"ChannelAdminLogEventAction"},{"id":"-384910503","predicate":"channelAdminLogEventActionExportedInviteEdit","params":[{"name":"prev_invite","type":"ExportedChatInvite"},{"name":"new_invite","type":"ExportedChatInvite"}],"type":"ChannelAdminLogEventAction"},{"id":"1048537159","predicate":"channelAdminLogEventActionParticipantVolume","params":[{"name":"participant","type":"GroupCallParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"1855199800","predicate":"channelAdminLogEventActionChangeHistoryTTL","params":[{"name":"prev_value","type":"int"},{"name":"new_value","type":"int"}],"type":"ChannelAdminLogEventAction"},{"id":"-1571952873","predicate":"messages.checkedHistoryImportPeer","params":[{"name":"confirm_text","type":"string"}],"type":"messages.CheckedHistoryImportPeer"},{"id":"93890858","predicate":"inputGroupCallStream","params":[{"name":"flags","type":"#"},{"name":"call","type":"InputGroupCall"},{"name":"time_ms","type":"long"},{"name":"scale","type":"int"},{"name":"video_channel","type":"flags.0?int"},{"name":"video_quality","type":"flags.0?int"}],"type":"InputFileLocation"},{"id":"-1343921601","predicate":"phone.joinAsPeers","params":[{"name":"peers","type":"Vector<Peer>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"phone.JoinAsPeers"},{"id":"541839704","predicate":"phone.exportedGroupCallInvite","params":[{"name":"link","type":"string"}],"type":"phone.ExportedGroupCallInvite"},{"id":"-672693723","predicate":"inputBotInlineMessageMediaInvoice","params":[{"name":"flags","type":"#"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.0?InputWebDocument"},{"name":"invoice","type":"Invoice"},{"name":"payload","type":"bytes"},{"name":"provider","type":"string"},{"name":"provider_data","type":"DataJSON"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"894081801","predicate":"botInlineMessageMediaInvoice","params":[{"name":"flags","type":"#"},{"name":"shipping_address_requested","type":"flags.1?true"},{"name":"test","type":"flags.3?true"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.0?WebDocument"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"-1281329567","predicate":"messageActionGroupCallScheduled","params":[{"name":"call","type":"InputGroupCall"},{"name":"schedule_date","type":"int"}],"type":"MessageAction"},{"id":"-592373577","predicate":"groupCallParticipantVideoSourceGroup","params":[{"name":"semantics","type":"string"},{"name":"sources","type":"Vector<int>"}],"type":"GroupCallParticipantVideoSourceGroup"},{"id":"1735736008","predicate":"groupCallParticipantVideo","params":[{"name":"flags","type":"#"},{"name":"paused","type":"flags.0?true"},{"name":"endpoint","type":"string"},{"name":"source_groups","type":"Vector<GroupCallParticipantVideoSourceGroup>"},{"name":"audio_source","type":"flags.1?int"}],"type":"GroupCallParticipantVideo"},{"id":"192428418","predicate":"updateGroupCallConnection","params":[{"name":"flags","type":"#"},{"name":"presentation","type":"flags.0?true"},{"name":"params","type":"DataJSON"}],"type":"Update"},{"id":"-2046910401","predicate":"stickers.suggestedShortName","params":[{"name":"short_name","type":"string"}],"type":"stickers.SuggestedShortName"},{"id":"795652779","predicate":"botCommandScopeDefault","params":[],"type":"BotCommandScope"},{"id":"1011811544","predicate":"botCommandScopeUsers","params":[],"type":"BotCommandScope"},{"id":"1877059713","predicate":"botCommandScopeChats","params":[],"type":"BotCommandScope"},{"id":"-1180016534","predicate":"botCommandScopeChatAdmins","params":[],"type":"BotCommandScope"},{"id":"-610432643","predicate":"botCommandScopePeer","params":[{"name":"peer","type":"InputPeer"}],"type":"BotCommandScope"},{"id":"1071145937","predicate":"botCommandScopePeerAdmins","params":[{"name":"peer","type":"InputPeer"}],"type":"BotCommandScope"},{"id":"169026035","predicate":"botCommandScopePeerUser","params":[{"name":"peer","type":"InputPeer"},{"name":"user_id","type":"InputUser"}],"type":"BotCommandScope"},{"id":"-478701471","predicate":"account.resetPasswordFailedWait","params":[{"name":"retry_date","type":"int"}],"type":"account.ResetPasswordResult"},{"id":"-370148227","predicate":"account.resetPasswordRequestedWait","params":[{"name":"until_date","type":"int"}],"type":"account.ResetPasswordResult"},{"id":"-383330754","predicate":"account.resetPasswordOk","params":[],"type":"account.ResetPasswordResult"},{"id":"1299263278","predicate":"updateBotCommands","params":[{"name":"peer","type":"Peer"},{"name":"bot_id","type":"long"},{"name":"commands","type":"Vector<BotCommand>"}],"type":"Update"},{"id":"-318022605","predicate":"chatTheme","params":[{"name":"emoticon","type":"string"},{"name":"theme","type":"Theme"},{"name":"dark_theme","type":"Theme"}],"type":"ChatTheme"},{"id":"-535699004","predicate":"account.chatThemesNotModified","params":[],"type":"account.ChatThemes"},{"id":"-28524867","predicate":"account.chatThemes","params":[{"name":"hash","type":"int"},{"name":"themes","type":"Vector<ChatTheme>"}],"type":"account.ChatThemes"},{"id":"-1434950843","predicate":"messageActionSetChatTheme","params":[{"name":"emoticon","type":"string"}],"type":"MessageAction"},{"id":"-1336228175","predicate":"sendMessageChooseStickerAction","params":[],"type":"SendMessageAction"},{"id":"708589599","predicate":"sponsoredMessage","params":[{"name":"flags","type":"#"},{"name":"random_id","type":"bytes"},{"name":"from_id","type":"Peer"},{"name":"start_param","type":"flags.0?string"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"}],"type":"SponsoredMessage"},{"id":"1705297877","predicate":"messages.sponsoredMessages","params":[{"name":"messages","type":"Vector<SponsoredMessage>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.SponsoredMessages"},{"id":"215889721","predicate":"inputStickerSetAnimatedEmojiAnimations","params":[],"type":"InputStickerSet"},{"id":"630664139","predicate":"sendMessageEmojiInteraction","params":[{"name":"emoticon","type":"string"},{"name":"msg_id","type":"int"},{"name":"interaction","type":"DataJSON"}],"type":"SendMessageAction"},{"id":"-1234857938","predicate":"sendMessageEmojiInteractionSeen","params":[{"name":"emoticon","type":"string"}],"type":"SendMessageAction"},{"id":"-1227287081","predicate":"inputBotInlineMessageID64","params":[{"name":"dc_id","type":"int"},{"name":"owner_id","type":"long"},{"name":"id","type":"int"},{"name":"access_hash","type":"long"}],"type":"InputBotInlineMessageID"}],"methods":[{"id":"-878758099","method":"invokeAfterMsg","params":[{"name":"msg_id","type":"long"},{"name":"query","type":"!X"}],"type":"X"},{"id":"1036301552","method":"invokeAfterMsgs","params":[{"name":"msg_ids","type":"Vector<long>"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-1502141361","method":"auth.sendCode","params":[{"name":"phone_number","type":"string"},{"name":"api_id","type":"int"},{"name":"api_hash","type":"string"},{"name":"settings","type":"CodeSettings"}],"type":"auth.SentCode"},{"id":"-2131827673","method":"auth.signUp","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"}],"type":"auth.Authorization"},{"id":"-1126886015","method":"auth.signIn","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"},{"name":"phone_code","type":"string"}],"type":"auth.Authorization"},{"id":"1461180992","method":"auth.logOut","params":[],"type":"Bool"},{"id":"-1616179942","method":"auth.resetAuthorizations","params":[],"type":"Bool"},{"id":"-440401971","method":"auth.exportAuthorization","params":[{"name":"dc_id","type":"int"}],"type":"auth.ExportedAuthorization"},{"id":"-1518699091","method":"auth.importAuthorization","params":[{"name":"id","type":"long"},{"name":"bytes","type":"bytes"}],"type":"auth.Authorization"},{"id":"-841733627","method":"auth.bindTempAuthKey","params":[{"name":"perm_auth_key_id","type":"long"},{"name":"nonce","type":"long"},{"name":"expires_at","type":"int"},{"name":"encrypted_message","type":"bytes"}],"type":"Bool"},{"id":"-326762118","method":"account.registerDevice","params":[{"name":"flags","type":"#"},{"name":"no_muted","type":"flags.0?true"},{"name":"token_type","type":"int"},{"name":"token","type":"string"},{"name":"app_sandbox","type":"Bool"},{"name":"secret","type":"bytes"},{"name":"other_uids","type":"Vector<long>"}],"type":"Bool"},{"id":"1779249670","method":"account.unregisterDevice","params":[{"name":"token_type","type":"int"},{"name":"token","type":"string"},{"name":"other_uids","type":"Vector<long>"}],"type":"Bool"},{"id":"-2067899501","method":"account.updateNotifySettings","params":[{"name":"peer","type":"InputNotifyPeer"},{"name":"settings","type":"InputPeerNotifySettings"}],"type":"Bool"},{"id":"313765169","method":"account.getNotifySettings","params":[{"name":"peer","type":"InputNotifyPeer"}],"type":"PeerNotifySettings"},{"id":"-612493497","method":"account.resetNotifySettings","params":[],"type":"Bool"},{"id":"2018596725","method":"account.updateProfile","params":[{"name":"flags","type":"#"},{"name":"first_name","type":"flags.0?string"},{"name":"last_name","type":"flags.1?string"},{"name":"about","type":"flags.2?string"}],"type":"User"},{"id":"1713919532","method":"account.updateStatus","params":[{"name":"offline","type":"Bool"}],"type":"Bool"},{"id":"127302966","method":"account.getWallPapers","params":[{"name":"hash","type":"long"}],"type":"account.WallPapers"},{"id":"-977650298","method":"account.reportPeer","params":[{"name":"peer","type":"InputPeer"},{"name":"reason","type":"ReportReason"},{"name":"message","type":"string"}],"type":"Bool"},{"id":"227648840","method":"users.getUsers","params":[{"name":"id","type":"Vector<InputUser>"}],"type":"Vector<User>"},{"id":"-902781519","method":"users.getFullUser","params":[{"name":"id","type":"InputUser"}],"type":"UserFull"},{"id":"2061264541","method":"contacts.getContactIDs","params":[{"name":"hash","type":"long"}],"type":"Vector<int>"},{"id":"-995929106","method":"contacts.getStatuses","params":[],"type":"Vector<ContactStatus>"},{"id":"1574346258","method":"contacts.getContacts","params":[{"name":"hash","type":"long"}],"type":"contacts.Contacts"},{"id":"746589157","method":"contacts.importContacts","params":[{"name":"contacts","type":"Vector<InputContact>"}],"type":"contacts.ImportedContacts"},{"id":"157945344","method":"contacts.deleteContacts","params":[{"name":"id","type":"Vector<InputUser>"}],"type":"Updates"},{"id":"269745566","method":"contacts.deleteByPhones","params":[{"name":"phones","type":"Vector<string>"}],"type":"Bool"},{"id":"1758204945","method":"contacts.block","params":[{"name":"id","type":"InputPeer"}],"type":"Bool"},{"id":"-1096393392","method":"contacts.unblock","params":[{"name":"id","type":"InputPeer"}],"type":"Bool"},{"id":"-176409329","method":"contacts.getBlocked","params":[{"name":"offset","type":"int"},{"name":"limit","type":"int"}],"type":"contacts.Blocked"},{"id":"1673946374","method":"messages.getMessages","params":[{"name":"id","type":"Vector<InputMessage>"}],"type":"messages.Messages"},{"id":"-1594569905","method":"messages.getDialogs","params":[{"name":"flags","type":"#"},{"name":"exclude_pinned","type":"flags.0?true"},{"name":"folder_id","type":"flags.1?int"},{"name":"offset_date","type":"int"},{"name":"offset_id","type":"int"},{"name":"offset_peer","type":"InputPeer"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Dialogs"},{"id":"1143203525","method":"messages.getHistory","params":[{"name":"peer","type":"InputPeer"},{"name":"offset_id","type":"int"},{"name":"offset_date","type":"int"},{"name":"add_offset","type":"int"},{"name":"limit","type":"int"},{"name":"max_id","type":"int"},{"name":"min_id","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"-1593989278","method":"messages.search","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"q","type":"string"},{"name":"from_id","type":"flags.0?InputPeer"},{"name":"top_msg_id","type":"flags.1?int"},{"name":"filter","type":"MessagesFilter"},{"name":"min_date","type":"int"},{"name":"max_date","type":"int"},{"name":"offset_id","type":"int"},{"name":"add_offset","type":"int"},{"name":"limit","type":"int"},{"name":"max_id","type":"int"},{"name":"min_id","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"238054714","method":"messages.readHistory","params":[{"name":"peer","type":"InputPeer"},{"name":"max_id","type":"int"}],"type":"messages.AffectedMessages"},{"id":"469850889","method":"messages.deleteHistory","params":[{"name":"flags","type":"#"},{"name":"just_clear","type":"flags.0?true"},{"name":"revoke","type":"flags.1?true"},{"name":"peer","type":"InputPeer"},{"name":"max_id","type":"int"}],"type":"messages.AffectedHistory"},{"id":"-443640366","method":"messages.deleteMessages","params":[{"name":"flags","type":"#"},{"name":"revoke","type":"flags.0?true"},{"name":"id","type":"Vector<int>"}],"type":"messages.AffectedMessages"},{"id":"94983360","method":"messages.receivedMessages","params":[{"name":"max_id","type":"int"}],"type":"Vector<ReceivedNotifyMessage>"},{"id":"1486110434","method":"messages.setTyping","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"top_msg_id","type":"flags.0?int"},{"name":"action","type":"SendMessageAction"}],"type":"Bool"},{"id":"1376532592","method":"messages.sendMessage","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"clear_draft","type":"flags.7?true"},{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"message","type":"string"},{"name":"random_id","type":"long"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"881978281","method":"messages.sendMedia","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"clear_draft","type":"flags.7?true"},{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"media","type":"InputMedia"},{"name":"message","type":"string"},{"name":"random_id","type":"long"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"-637606386","method":"messages.forwardMessages","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"with_my_score","type":"flags.8?true"},{"name":"drop_author","type":"flags.11?true"},{"name":"drop_media_captions","type":"flags.12?true"},{"name":"from_peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"},{"name":"random_id","type":"Vector<long>"},{"name":"to_peer","type":"InputPeer"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"-820669733","method":"messages.reportSpam","params":[{"name":"peer","type":"InputPeer"}],"type":"Bool"},{"id":"913498268","method":"messages.getPeerSettings","params":[{"name":"peer","type":"InputPeer"}],"type":"PeerSettings"},{"id":"-1991005362","method":"messages.report","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"},{"name":"reason","type":"ReportReason"},{"name":"message","type":"string"}],"type":"Bool"},{"id":"1240027791","method":"messages.getChats","params":[{"name":"id","type":"Vector<long>"}],"type":"messages.Chats"},{"id":"-1364194508","method":"messages.getFullChat","params":[{"name":"chat_id","type":"long"}],"type":"messages.ChatFull"},{"id":"1937260541","method":"messages.editChatTitle","params":[{"name":"chat_id","type":"long"},{"name":"title","type":"string"}],"type":"Updates"},{"id":"903730804","method":"messages.editChatPhoto","params":[{"name":"chat_id","type":"long"},{"name":"photo","type":"InputChatPhoto"}],"type":"Updates"},{"id":"-230206493","method":"messages.addChatUser","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"InputUser"},{"name":"fwd_limit","type":"int"}],"type":"Updates"},{"id":"-1575461717","method":"messages.deleteChatUser","params":[{"name":"flags","type":"#"},{"name":"revoke_history","type":"flags.0?true"},{"name":"chat_id","type":"long"},{"name":"user_id","type":"InputUser"}],"type":"Updates"},{"id":"164303470","method":"messages.createChat","params":[{"name":"users","type":"Vector<InputUser>"},{"name":"title","type":"string"}],"type":"Updates"},{"id":"-304838614","method":"updates.getState","params":[],"type":"updates.State"},{"id":"630429265","method":"updates.getDifference","params":[{"name":"flags","type":"#"},{"name":"pts","type":"int"},{"name":"pts_total_limit","type":"flags.0?int"},{"name":"date","type":"int"},{"name":"qts","type":"int"}],"type":"updates.Difference"},{"id":"1926525996","method":"photos.updateProfilePhoto","params":[{"name":"id","type":"InputPhoto"}],"type":"photos.Photo"},{"id":"-1980559511","method":"photos.uploadProfilePhoto","params":[{"name":"flags","type":"#"},{"name":"file","type":"flags.0?InputFile"},{"name":"video","type":"flags.1?InputFile"},{"name":"video_start_ts","type":"flags.2?double"}],"type":"photos.Photo"},{"id":"-2016444625","method":"photos.deletePhotos","params":[{"name":"id","type":"Vector<InputPhoto>"}],"type":"Vector<long>"},{"id":"-1291540959","method":"upload.saveFilePart","params":[{"name":"file_id","type":"long"},{"name":"file_part","type":"int"},{"name":"bytes","type":"bytes"}],"type":"Bool"},{"id":"-1319462148","method":"upload.getFile","params":[{"name":"flags","type":"#"},{"name":"precise","type":"flags.0?true"},{"name":"cdn_supported","type":"flags.1?true"},{"name":"location","type":"InputFileLocation"},{"name":"offset","type":"int"},{"name":"limit","type":"int"}],"type":"upload.File"},{"id":"-990308245","method":"help.getConfig","params":[],"type":"Config"},{"id":"531836966","method":"help.getNearestDc","params":[],"type":"NearestDc"},{"id":"1378703997","method":"help.getAppUpdate","params":[{"name":"source","type":"string"}],"type":"help.AppUpdate"},{"id":"1295590211","method":"help.getInviteText","params":[],"type":"help.InviteText"},{"id":"-1848823128","method":"photos.getUserPhotos","params":[{"name":"user_id","type":"InputUser"},{"name":"offset","type":"int"},{"name":"max_id","type":"long"},{"name":"limit","type":"int"}],"type":"photos.Photos"},{"id":"651135312","method":"messages.getDhConfig","params":[{"name":"version","type":"int"},{"name":"random_length","type":"int"}],"type":"messages.DhConfig"},{"id":"-162681021","method":"messages.requestEncryption","params":[{"name":"user_id","type":"InputUser"},{"name":"random_id","type":"int"},{"name":"g_a","type":"bytes"}],"type":"EncryptedChat"},{"id":"1035731989","method":"messages.acceptEncryption","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"g_b","type":"bytes"},{"name":"key_fingerprint","type":"long"}],"type":"EncryptedChat"},{"id":"-208425312","method":"messages.discardEncryption","params":[{"name":"flags","type":"#"},{"name":"delete_history","type":"flags.0?true"},{"name":"chat_id","type":"int"}],"type":"Bool"},{"id":"2031374829","method":"messages.setEncryptedTyping","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"typing","type":"Bool"}],"type":"Bool"},{"id":"2135648522","method":"messages.readEncryptedHistory","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"max_date","type":"int"}],"type":"Bool"},{"id":"1157265941","method":"messages.sendEncrypted","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.0?true"},{"name":"peer","type":"InputEncryptedChat"},{"name":"random_id","type":"long"},{"name":"data","type":"bytes"}],"type":"messages.SentEncryptedMessage"},{"id":"1431914525","method":"messages.sendEncryptedFile","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.0?true"},{"name":"peer","type":"InputEncryptedChat"},{"name":"random_id","type":"long"},{"name":"data","type":"bytes"},{"name":"file","type":"InputEncryptedFile"}],"type":"messages.SentEncryptedMessage"},{"id":"852769188","method":"messages.sendEncryptedService","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"random_id","type":"long"},{"name":"data","type":"bytes"}],"type":"messages.SentEncryptedMessage"},{"id":"1436924774","method":"messages.receivedQueue","params":[{"name":"max_qts","type":"int"}],"type":"Vector<long>"},{"id":"1259113487","method":"messages.reportEncryptedSpam","params":[{"name":"peer","type":"InputEncryptedChat"}],"type":"Bool"},{"id":"-562337987","method":"upload.saveBigFilePart","params":[{"name":"file_id","type":"long"},{"name":"file_part","type":"int"},{"name":"file_total_parts","type":"int"},{"name":"bytes","type":"bytes"}],"type":"Bool"},{"id":"-1043505495","method":"initConnection","params":[{"name":"flags","type":"#"},{"name":"api_id","type":"int"},{"name":"device_model","type":"string"},{"name":"system_version","type":"string"},{"name":"app_version","type":"string"},{"name":"system_lang_code","type":"string"},{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"},{"name":"proxy","type":"flags.0?InputClientProxy"},{"name":"params","type":"flags.1?JSONValue"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-1663104819","method":"help.getSupport","params":[],"type":"help.Support"},{"id":"916930423","method":"messages.readMessageContents","params":[{"name":"id","type":"Vector<int>"}],"type":"messages.AffectedMessages"},{"id":"655677548","method":"account.checkUsername","params":[{"name":"username","type":"string"}],"type":"Bool"},{"id":"1040964988","method":"account.updateUsername","params":[{"name":"username","type":"string"}],"type":"User"},{"id":"301470424","method":"contacts.search","params":[{"name":"q","type":"string"},{"name":"limit","type":"int"}],"type":"contacts.Found"},{"id":"-623130288","method":"account.getPrivacy","params":[{"name":"key","type":"InputPrivacyKey"}],"type":"account.PrivacyRules"},{"id":"-906486552","method":"account.setPrivacy","params":[{"name":"key","type":"InputPrivacyKey"},{"name":"rules","type":"Vector<InputPrivacyRule>"}],"type":"account.PrivacyRules"},{"id":"1099779595","method":"account.deleteAccount","params":[{"name":"reason","type":"string"}],"type":"Bool"},{"id":"150761757","method":"account.getAccountTTL","params":[],"type":"AccountDaysTTL"},{"id":"608323678","method":"account.setAccountTTL","params":[{"name":"ttl","type":"AccountDaysTTL"}],"type":"Bool"},{"id":"-627372787","method":"invokeWithLayer","params":[{"name":"layer","type":"int"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-113456221","method":"contacts.resolveUsername","params":[{"name":"username","type":"string"}],"type":"contacts.ResolvedPeer"},{"id":"-2108208411","method":"account.sendChangePhoneCode","params":[{"name":"phone_number","type":"string"},{"name":"settings","type":"CodeSettings"}],"type":"auth.SentCode"},{"id":"1891839707","method":"account.changePhone","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"},{"name":"phone_code","type":"string"}],"type":"User"},{"id":"-710552671","method":"messages.getStickers","params":[{"name":"emoticon","type":"string"},{"name":"hash","type":"long"}],"type":"messages.Stickers"},{"id":"-1197432408","method":"messages.getAllStickers","params":[{"name":"hash","type":"long"}],"type":"messages.AllStickers"},{"id":"954152242","method":"account.updateDeviceLocked","params":[{"name":"period","type":"int"}],"type":"Bool"},{"id":"1738800940","method":"auth.importBotAuthorization","params":[{"name":"flags","type":"int"},{"name":"api_id","type":"int"},{"name":"api_hash","type":"string"},{"name":"bot_auth_token","type":"string"}],"type":"auth.Authorization"},{"id":"-1956073268","method":"messages.getWebPagePreview","params":[{"name":"flags","type":"#"},{"name":"message","type":"string"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"}],"type":"MessageMedia"},{"id":"-484392616","method":"account.getAuthorizations","params":[],"type":"account.Authorizations"},{"id":"-545786948","method":"account.resetAuthorization","params":[{"name":"hash","type":"long"}],"type":"Bool"},{"id":"1418342645","method":"account.getPassword","params":[],"type":"account.Password"},{"id":"-1663767815","method":"account.getPasswordSettings","params":[{"name":"password","type":"InputCheckPasswordSRP"}],"type":"account.PasswordSettings"},{"id":"-1516564433","method":"account.updatePasswordSettings","params":[{"name":"password","type":"InputCheckPasswordSRP"},{"name":"new_settings","type":"account.PasswordInputSettings"}],"type":"Bool"},{"id":"-779399914","method":"auth.checkPassword","params":[{"name":"password","type":"InputCheckPasswordSRP"}],"type":"auth.Authorization"},{"id":"-661144474","method":"auth.requestPasswordRecovery","params":[],"type":"auth.PasswordRecovery"},{"id":"923364464","method":"auth.recoverPassword","params":[{"name":"flags","type":"#"},{"name":"code","type":"string"},{"name":"new_settings","type":"flags.0?account.PasswordInputSettings"}],"type":"auth.Authorization"},{"id":"-1080796745","method":"invokeWithoutUpdates","params":[{"name":"query","type":"!X"}],"type":"X"},{"id":"347716823","method":"messages.exportChatInvite","params":[{"name":"flags","type":"#"},{"name":"legacy_revoke_permanent","type":"flags.2?true"},{"name":"peer","type":"InputPeer"},{"name":"expire_date","type":"flags.0?int"},{"name":"usage_limit","type":"flags.1?int"}],"type":"ExportedChatInvite"},{"id":"1051570619","method":"messages.checkChatInvite","params":[{"name":"hash","type":"string"}],"type":"ChatInvite"},{"id":"1817183516","method":"messages.importChatInvite","params":[{"name":"hash","type":"string"}],"type":"Updates"},{"id":"639215886","method":"messages.getStickerSet","params":[{"name":"stickerset","type":"InputStickerSet"}],"type":"messages.StickerSet"},{"id":"-946871200","method":"messages.installStickerSet","params":[{"name":"stickerset","type":"InputStickerSet"},{"name":"archived","type":"Bool"}],"type":"messages.StickerSetInstallResult"},{"id":"-110209570","method":"messages.uninstallStickerSet","params":[{"name":"stickerset","type":"InputStickerSet"}],"type":"Bool"},{"id":"-421563528","method":"messages.startBot","params":[{"name":"bot","type":"InputUser"},{"name":"peer","type":"InputPeer"},{"name":"random_id","type":"long"},{"name":"start_param","type":"string"}],"type":"Updates"},{"id":"-1877938321","method":"help.getAppChangelog","params":[{"name":"prev_app_version","type":"string"}],"type":"Updates"},{"id":"1468322785","method":"messages.getMessagesViews","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"},{"name":"increment","type":"Bool"}],"type":"messages.MessageViews"},{"id":"-871347913","method":"channels.readHistory","params":[{"name":"channel","type":"InputChannel"},{"name":"max_id","type":"int"}],"type":"Bool"},{"id":"-2067661490","method":"channels.deleteMessages","params":[{"name":"channel","type":"InputChannel"},{"name":"id","type":"Vector<int>"}],"type":"messages.AffectedMessages"},{"id":"-787622117","method":"channels.deleteUserHistory","params":[{"name":"channel","type":"InputChannel"},{"name":"user_id","type":"InputUser"}],"type":"messages.AffectedHistory"},{"id":"-32999408","method":"channels.reportSpam","params":[{"name":"channel","type":"InputChannel"},{"name":"user_id","type":"InputUser"},{"name":"id","type":"Vector<int>"}],"type":"Bool"},{"id":"-1383294429","method":"channels.getMessages","params":[{"name":"channel","type":"InputChannel"},{"name":"id","type":"Vector<InputMessage>"}],"type":"messages.Messages"},{"id":"2010044880","method":"channels.getParticipants","params":[{"name":"channel","type":"InputChannel"},{"name":"filter","type":"ChannelParticipantsFilter"},{"name":"offset","type":"int"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"channels.ChannelParticipants"},{"id":"-1599378234","method":"channels.getParticipant","params":[{"name":"channel","type":"InputChannel"},{"name":"participant","type":"InputPeer"}],"type":"channels.ChannelParticipant"},{"id":"176122811","method":"channels.getChannels","params":[{"name":"id","type":"Vector<InputChannel>"}],"type":"messages.Chats"},{"id":"141781513","method":"channels.getFullChannel","params":[{"name":"channel","type":"InputChannel"}],"type":"messages.ChatFull"},{"id":"1029681423","method":"channels.createChannel","params":[{"name":"flags","type":"#"},{"name":"broadcast","type":"flags.0?true"},{"name":"megagroup","type":"flags.1?true"},{"name":"for_import","type":"flags.3?true"},{"name":"title","type":"string"},{"name":"about","type":"string"},{"name":"geo_point","type":"flags.2?InputGeoPoint"},{"name":"address","type":"flags.2?string"}],"type":"Updates"},{"id":"-751007486","method":"channels.editAdmin","params":[{"name":"channel","type":"InputChannel"},{"name":"user_id","type":"InputUser"},{"name":"admin_rights","type":"ChatAdminRights"},{"name":"rank","type":"string"}],"type":"Updates"},{"id":"1450044624","method":"channels.editTitle","params":[{"name":"channel","type":"InputChannel"},{"name":"title","type":"string"}],"type":"Updates"},{"id":"-248621111","method":"channels.editPhoto","params":[{"name":"channel","type":"InputChannel"},{"name":"photo","type":"InputChatPhoto"}],"type":"Updates"},{"id":"283557164","method":"channels.checkUsername","params":[{"name":"channel","type":"InputChannel"},{"name":"username","type":"string"}],"type":"Bool"},{"id":"890549214","method":"channels.updateUsername","params":[{"name":"channel","type":"InputChannel"},{"name":"username","type":"string"}],"type":"Bool"},{"id":"615851205","method":"channels.joinChannel","params":[{"name":"channel","type":"InputChannel"}],"type":"Updates"},{"id":"-130635115","method":"channels.leaveChannel","params":[{"name":"channel","type":"InputChannel"}],"type":"Updates"},{"id":"429865580","method":"channels.inviteToChannel","params":[{"name":"channel","type":"InputChannel"},{"name":"users","type":"Vector<InputUser>"}],"type":"Updates"},{"id":"-1072619549","method":"channels.deleteChannel","params":[{"name":"channel","type":"InputChannel"}],"type":"Updates"},{"id":"51854712","method":"updates.getChannelDifference","params":[{"name":"flags","type":"#"},{"name":"force","type":"flags.0?true"},{"name":"channel","type":"InputChannel"},{"name":"filter","type":"ChannelMessagesFilter"},{"name":"pts","type":"int"},{"name":"limit","type":"int"}],"type":"updates.ChannelDifference"},{"id":"-1470377534","method":"messages.editChatAdmin","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"InputUser"},{"name":"is_admin","type":"Bool"}],"type":"Bool"},{"id":"-1568189671","method":"messages.migrateChat","params":[{"name":"chat_id","type":"long"}],"type":"Updates"},{"id":"1271290010","method":"messages.searchGlobal","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.0?int"},{"name":"q","type":"string"},{"name":"filter","type":"MessagesFilter"},{"name":"min_date","type":"int"},{"name":"max_date","type":"int"},{"name":"offset_rate","type":"int"},{"name":"offset_peer","type":"InputPeer"},{"name":"offset_id","type":"int"},{"name":"limit","type":"int"}],"type":"messages.Messages"},{"id":"2016638777","method":"messages.reorderStickerSets","params":[{"name":"flags","type":"#"},{"name":"masks","type":"flags.0?true"},{"name":"order","type":"Vector<long>"}],"type":"Bool"},{"id":"864953444","method":"messages.getDocumentByHash","params":[{"name":"sha256","type":"bytes"},{"name":"size","type":"int"},{"name":"mime_type","type":"string"}],"type":"Document"},{"id":"1559270965","method":"messages.getSavedGifs","params":[{"name":"hash","type":"long"}],"type":"messages.SavedGifs"},{"id":"846868683","method":"messages.saveGif","params":[{"name":"id","type":"InputDocument"},{"name":"unsave","type":"Bool"}],"type":"Bool"},{"id":"1364105629","method":"messages.getInlineBotResults","params":[{"name":"flags","type":"#"},{"name":"bot","type":"InputUser"},{"name":"peer","type":"InputPeer"},{"name":"geo_point","type":"flags.0?InputGeoPoint"},{"name":"query","type":"string"},{"name":"offset","type":"string"}],"type":"messages.BotResults"},{"id":"-346119674","method":"messages.setInlineBotResults","params":[{"name":"flags","type":"#"},{"name":"gallery","type":"flags.0?true"},{"name":"private","type":"flags.1?true"},{"name":"query_id","type":"long"},{"name":"results","type":"Vector<InputBotInlineResult>"},{"name":"cache_time","type":"int"},{"name":"next_offset","type":"flags.2?string"},{"name":"switch_pm","type":"flags.3?InlineBotSwitchPM"}],"type":"Bool"},{"id":"570955184","method":"messages.sendInlineBotResult","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"clear_draft","type":"flags.7?true"},{"name":"hide_via","type":"flags.11?true"},{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"random_id","type":"long"},{"name":"query_id","type":"long"},{"name":"id","type":"string"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"-432034325","method":"channels.exportMessageLink","params":[{"name":"flags","type":"#"},{"name":"grouped","type":"flags.0?true"},{"name":"thread","type":"flags.1?true"},{"name":"channel","type":"InputChannel"},{"name":"id","type":"int"}],"type":"ExportedMessageLink"},{"id":"527021574","method":"channels.toggleSignatures","params":[{"name":"channel","type":"InputChannel"},{"name":"enabled","type":"Bool"}],"type":"Updates"},{"id":"1056025023","method":"auth.resendCode","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"}],"type":"auth.SentCode"},{"id":"520357240","method":"auth.cancelCode","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"}],"type":"Bool"},{"id":"-39416522","method":"messages.getMessageEditData","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"}],"type":"messages.MessageEditData"},{"id":"1224152952","method":"messages.editMessage","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"},{"name":"message","type":"flags.11?string"},{"name":"media","type":"flags.14?InputMedia"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"},{"name":"schedule_date","type":"flags.15?int"}],"type":"Updates"},{"id":"-2091549254","method":"messages.editInlineBotMessage","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"id","type":"InputBotInlineMessageID"},{"name":"message","type":"flags.11?string"},{"name":"media","type":"flags.14?InputMedia"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"}],"type":"Bool"},{"id":"-1824339449","method":"messages.getBotCallbackAnswer","params":[{"name":"flags","type":"#"},{"name":"game","type":"flags.1?true"},{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"data","type":"flags.0?bytes"},{"name":"password","type":"flags.2?InputCheckPasswordSRP"}],"type":"messages.BotCallbackAnswer"},{"id":"-712043766","method":"messages.setBotCallbackAnswer","params":[{"name":"flags","type":"#"},{"name":"alert","type":"flags.1?true"},{"name":"query_id","type":"long"},{"name":"message","type":"flags.0?string"},{"name":"url","type":"flags.2?string"},{"name":"cache_time","type":"int"}],"type":"Bool"},{"id":"-1758168906","method":"contacts.getTopPeers","params":[{"name":"flags","type":"#"},{"name":"correspondents","type":"flags.0?true"},{"name":"bots_pm","type":"flags.1?true"},{"name":"bots_inline","type":"flags.2?true"},{"name":"phone_calls","type":"flags.3?true"},{"name":"forward_users","type":"flags.4?true"},{"name":"forward_chats","type":"flags.5?true"},{"name":"groups","type":"flags.10?true"},{"name":"channels","type":"flags.15?true"},{"name":"offset","type":"int"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"contacts.TopPeers"},{"id":"451113900","method":"contacts.resetTopPeerRating","params":[{"name":"category","type":"TopPeerCategory"},{"name":"peer","type":"InputPeer"}],"type":"Bool"},{"id":"-462373635","method":"messages.getPeerDialogs","params":[{"name":"peers","type":"Vector<InputDialogPeer>"}],"type":"messages.PeerDialogs"},{"id":"-1137057461","method":"messages.saveDraft","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"peer","type":"InputPeer"},{"name":"message","type":"string"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"}],"type":"Bool"},{"id":"1782549861","method":"messages.getAllDrafts","params":[],"type":"Updates"},{"id":"1685588756","method":"messages.getFeaturedStickers","params":[{"name":"hash","type":"long"}],"type":"messages.FeaturedStickers"},{"id":"1527873830","method":"messages.readFeaturedStickers","params":[{"name":"id","type":"Vector<long>"}],"type":"Bool"},{"id":"-1649852357","method":"messages.getRecentStickers","params":[{"name":"flags","type":"#"},{"name":"attached","type":"flags.0?true"},{"name":"hash","type":"long"}],"type":"messages.RecentStickers"},{"id":"958863608","method":"messages.saveRecentSticker","params":[{"name":"flags","type":"#"},{"name":"attached","type":"flags.0?true"},{"name":"id","type":"InputDocument"},{"name":"unsave","type":"Bool"}],"type":"Bool"},{"id":"-1986437075","method":"messages.clearRecentStickers","params":[{"name":"flags","type":"#"},{"name":"attached","type":"flags.0?true"}],"type":"Bool"},{"id":"1475442322","method":"messages.getArchivedStickers","params":[{"name":"flags","type":"#"},{"name":"masks","type":"flags.0?true"},{"name":"offset_id","type":"long"},{"name":"limit","type":"int"}],"type":"messages.ArchivedStickers"},{"id":"457157256","method":"account.sendConfirmPhoneCode","params":[{"name":"hash","type":"string"},{"name":"settings","type":"CodeSettings"}],"type":"auth.SentCode"},{"id":"1596029123","method":"account.confirmPhone","params":[{"name":"phone_code_hash","type":"string"},{"name":"phone_code","type":"string"}],"type":"Bool"},{"id":"-122669393","method":"channels.getAdminedPublicChannels","params":[{"name":"flags","type":"#"},{"name":"by_location","type":"flags.0?true"},{"name":"check_limit","type":"flags.1?true"}],"type":"messages.Chats"},{"id":"1678738104","method":"messages.getMaskStickers","params":[{"name":"hash","type":"long"}],"type":"messages.AllStickers"},{"id":"-866424884","method":"messages.getAttachedStickers","params":[{"name":"media","type":"InputStickeredMedia"}],"type":"Vector<StickerSetCovered>"},{"id":"-1907842680","method":"auth.dropTempAuthKeys","params":[{"name":"except_auth_keys","type":"Vector<long>"}],"type":"Bool"},{"id":"-1896289088","method":"messages.setGameScore","params":[{"name":"flags","type":"#"},{"name":"edit_message","type":"flags.0?true"},{"name":"force","type":"flags.1?true"},{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"},{"name":"user_id","type":"InputUser"},{"name":"score","type":"int"}],"type":"Updates"},{"id":"363700068","method":"messages.setInlineGameScore","params":[{"name":"flags","type":"#"},{"name":"edit_message","type":"flags.0?true"},{"name":"force","type":"flags.1?true"},{"name":"id","type":"InputBotInlineMessageID"},{"name":"user_id","type":"InputUser"},{"name":"score","type":"int"}],"type":"Bool"},{"id":"-400399203","method":"messages.getGameHighScores","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"},{"name":"user_id","type":"InputUser"}],"type":"messages.HighScores"},{"id":"258170395","method":"messages.getInlineGameHighScores","params":[{"name":"id","type":"InputBotInlineMessageID"},{"name":"user_id","type":"InputUser"}],"type":"messages.HighScores"},{"id":"-468934396","method":"messages.getCommonChats","params":[{"name":"user_id","type":"InputUser"},{"name":"max_id","type":"long"},{"name":"limit","type":"int"}],"type":"messages.Chats"},{"id":"-2023787330","method":"messages.getAllChats","params":[{"name":"except_ids","type":"Vector<long>"}],"type":"messages.Chats"},{"id":"-333262899","method":"help.setBotUpdatesStatus","params":[{"name":"pending_updates_count","type":"int"},{"name":"message","type":"string"}],"type":"Bool"},{"id":"852135825","method":"messages.getWebPage","params":[{"name":"url","type":"string"},{"name":"hash","type":"int"}],"type":"WebPage"},{"id":"-1489903017","method":"messages.toggleDialogPin","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.0?true"},{"name":"peer","type":"InputDialogPeer"}],"type":"Bool"},{"id":"991616823","method":"messages.reorderPinnedDialogs","params":[{"name":"flags","type":"#"},{"name":"force","type":"flags.0?true"},{"name":"folder_id","type":"int"},{"name":"order","type":"Vector<InputDialogPeer>"}],"type":"Bool"},{"id":"-692498958","method":"messages.getPinnedDialogs","params":[{"name":"folder_id","type":"int"}],"type":"messages.PeerDialogs"},{"id":"-1440257555","method":"bots.sendCustomRequest","params":[{"name":"custom_method","type":"string"},{"name":"params","type":"DataJSON"}],"type":"DataJSON"},{"id":"-434028723","method":"bots.answerWebhookJSONQuery","params":[{"name":"query_id","type":"long"},{"name":"data","type":"DataJSON"}],"type":"Bool"},{"id":"619086221","method":"upload.getWebFile","params":[{"name":"location","type":"InputWebFileLocation"},{"name":"offset","type":"int"},{"name":"limit","type":"int"}],"type":"upload.WebFile"},{"id":"-1976353651","method":"payments.getPaymentForm","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"theme_params","type":"flags.0?DataJSON"}],"type":"payments.PaymentForm"},{"id":"611897804","method":"payments.getPaymentReceipt","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"}],"type":"payments.PaymentReceipt"},{"id":"-619695760","method":"payments.validateRequestedInfo","params":[{"name":"flags","type":"#"},{"name":"save","type":"flags.0?true"},{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"info","type":"PaymentRequestedInfo"}],"type":"payments.ValidatedRequestedInfo"},{"id":"818134173","method":"payments.sendPaymentForm","params":[{"name":"flags","type":"#"},{"name":"form_id","type":"long"},{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"requested_info_id","type":"flags.0?string"},{"name":"shipping_option_id","type":"flags.1?string"},{"name":"credentials","type":"InputPaymentCredentials"},{"name":"tip_amount","type":"flags.2?long"}],"type":"payments.PaymentResult"},{"id":"1151208273","method":"account.getTmpPassword","params":[{"name":"password","type":"InputCheckPasswordSRP"},{"name":"period","type":"int"}],"type":"account.TmpPassword"},{"id":"578650699","method":"payments.getSavedInfo","params":[],"type":"payments.SavedInfo"},{"id":"-667062079","method":"payments.clearSavedInfo","params":[{"name":"flags","type":"#"},{"name":"credentials","type":"flags.0?true"},{"name":"info","type":"flags.1?true"}],"type":"Bool"},{"id":"-436833542","method":"messages.setBotShippingResults","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"error","type":"flags.0?string"},{"name":"shipping_options","type":"flags.1?Vector<ShippingOption>"}],"type":"Bool"},{"id":"163765653","method":"messages.setBotPrecheckoutResults","params":[{"name":"flags","type":"#"},{"name":"success","type":"flags.1?true"},{"name":"query_id","type":"long"},{"name":"error","type":"flags.0?string"}],"type":"Bool"},{"id":"-1876841625","method":"stickers.createStickerSet","params":[{"name":"flags","type":"#"},{"name":"masks","type":"flags.0?true"},{"name":"animated","type":"flags.1?true"},{"name":"videos","type":"flags.4?true"},{"name":"user_id","type":"InputUser"},{"name":"title","type":"string"},{"name":"short_name","type":"string"},{"name":"thumb","type":"flags.2?InputDocument"},{"name":"stickers","type":"Vector<InputStickerSetItem>"},{"name":"software","type":"flags.3?string"}],"type":"messages.StickerSet"},{"id":"-143257775","method":"stickers.removeStickerFromSet","params":[{"name":"sticker","type":"InputDocument"}],"type":"messages.StickerSet"},{"id":"-4795190","method":"stickers.changeStickerPosition","params":[{"name":"sticker","type":"InputDocument"},{"name":"position","type":"int"}],"type":"messages.StickerSet"},{"id":"-2041315650","method":"stickers.addStickerToSet","params":[{"name":"stickerset","type":"InputStickerSet"},{"name":"sticker","type":"InputStickerSetItem"}],"type":"messages.StickerSet"},{"id":"1369162417","method":"messages.uploadMedia","params":[{"name":"peer","type":"InputPeer"},{"name":"media","type":"InputMedia"}],"type":"MessageMedia"},{"id":"1430593449","method":"phone.getCallConfig","params":[],"type":"DataJSON"},{"id":"1124046573","method":"phone.requestCall","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.0?true"},{"name":"user_id","type":"InputUser"},{"name":"random_id","type":"int"},{"name":"g_a_hash","type":"bytes"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"phone.PhoneCall"},{"id":"1003664544","method":"phone.acceptCall","params":[{"name":"peer","type":"InputPhoneCall"},{"name":"g_b","type":"bytes"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"phone.PhoneCall"},{"id":"788404002","method":"phone.confirmCall","params":[{"name":"peer","type":"InputPhoneCall"},{"name":"g_a","type":"bytes"},{"name":"key_fingerprint","type":"long"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"phone.PhoneCall"},{"id":"399855457","method":"phone.receivedCall","params":[{"name":"peer","type":"InputPhoneCall"}],"type":"Bool"},{"id":"-1295269440","method":"phone.discardCall","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.0?true"},{"name":"peer","type":"InputPhoneCall"},{"name":"duration","type":"int"},{"name":"reason","type":"PhoneCallDiscardReason"},{"name":"connection_id","type":"long"}],"type":"Updates"},{"id":"1508562471","method":"phone.setCallRating","params":[{"name":"flags","type":"#"},{"name":"user_initiative","type":"flags.0?true"},{"name":"peer","type":"InputPhoneCall"},{"name":"rating","type":"int"},{"name":"comment","type":"string"}],"type":"Updates"},{"id":"662363518","method":"phone.saveCallDebug","params":[{"name":"peer","type":"InputPhoneCall"},{"name":"debug","type":"DataJSON"}],"type":"Bool"},{"id":"536919235","method":"upload.getCdnFile","params":[{"name":"file_token","type":"bytes"},{"name":"offset","type":"int"},{"name":"limit","type":"int"}],"type":"upload.CdnFile"},{"id":"-1691921240","method":"upload.reuploadCdnFile","params":[{"name":"file_token","type":"bytes"},{"name":"request_token","type":"bytes"}],"type":"Vector<FileHash>"},{"id":"1375900482","method":"help.getCdnConfig","params":[],"type":"CdnConfig"},{"id":"-219008246","method":"langpack.getLangPack","params":[{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"}],"type":"LangPackDifference"},{"id":"-269862909","method":"langpack.getStrings","params":[{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"},{"name":"keys","type":"Vector<string>"}],"type":"Vector<LangPackString>"},{"id":"-845657435","method":"langpack.getDifference","params":[{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"},{"name":"from_version","type":"int"}],"type":"LangPackDifference"},{"id":"1120311183","method":"langpack.getLanguages","params":[{"name":"lang_pack","type":"string"}],"type":"Vector<LangPackLanguage>"},{"id":"-1763259007","method":"channels.editBanned","params":[{"name":"channel","type":"InputChannel"},{"name":"participant","type":"InputPeer"},{"name":"banned_rights","type":"ChatBannedRights"}],"type":"Updates"},{"id":"870184064","method":"channels.getAdminLog","params":[{"name":"flags","type":"#"},{"name":"channel","type":"InputChannel"},{"name":"q","type":"string"},{"name":"events_filter","type":"flags.0?ChannelAdminLogEventsFilter"},{"name":"admins","type":"flags.1?Vector<InputUser>"},{"name":"max_id","type":"long"},{"name":"min_id","type":"long"},{"name":"limit","type":"int"}],"type":"channels.AdminLogResults"},{"id":"1302676017","method":"upload.getCdnFileHashes","params":[{"name":"file_token","type":"bytes"},{"name":"offset","type":"int"}],"type":"Vector<FileHash>"},{"id":"-914493408","method":"messages.sendScreenshotNotification","params":[{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"int"},{"name":"random_id","type":"long"}],"type":"Updates"},{"id":"-359881479","method":"channels.setStickers","params":[{"name":"channel","type":"InputChannel"},{"name":"stickerset","type":"InputStickerSet"}],"type":"Bool"},{"id":"82946729","method":"messages.getFavedStickers","params":[{"name":"hash","type":"long"}],"type":"messages.FavedStickers"},{"id":"-1174420133","method":"messages.faveSticker","params":[{"name":"id","type":"InputDocument"},{"name":"unfave","type":"Bool"}],"type":"Bool"},{"id":"-357180360","method":"channels.readMessageContents","params":[{"name":"channel","type":"InputChannel"},{"name":"id","type":"Vector<int>"}],"type":"Bool"},{"id":"-2020263951","method":"contacts.resetSaved","params":[],"type":"Bool"},{"id":"1180140658","method":"messages.getUnreadMentions","params":[{"name":"peer","type":"InputPeer"},{"name":"offset_id","type":"int"},{"name":"add_offset","type":"int"},{"name":"limit","type":"int"},{"name":"max_id","type":"int"},{"name":"min_id","type":"int"}],"type":"messages.Messages"},{"id":"-1355375294","method":"channels.deleteHistory","params":[{"name":"channel","type":"InputChannel"},{"name":"max_id","type":"int"}],"type":"Bool"},{"id":"1036054804","method":"help.getRecentMeUrls","params":[{"name":"referer","type":"string"}],"type":"help.RecentMeUrls"},{"id":"-356796084","method":"channels.togglePreHistoryHidden","params":[{"name":"channel","type":"InputChannel"},{"name":"enabled","type":"Bool"}],"type":"Updates"},{"id":"251759059","method":"messages.readMentions","params":[{"name":"peer","type":"InputPeer"}],"type":"messages.AffectedHistory"},{"id":"1881817312","method":"messages.getRecentLocations","params":[{"name":"peer","type":"InputPeer"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"-872345397","method":"messages.sendMultiMedia","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"clear_draft","type":"flags.7?true"},{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"multi_media","type":"Vector<InputSingleMedia>"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"1347929239","method":"messages.uploadEncryptedFile","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"file","type":"InputEncryptedFile"}],"type":"EncryptedFile"},{"id":"405695855","method":"account.getWebAuthorizations","params":[],"type":"account.WebAuthorizations"},{"id":"755087855","method":"account.resetWebAuthorization","params":[{"name":"hash","type":"long"}],"type":"Bool"},{"id":"1747789204","method":"account.resetWebAuthorizations","params":[],"type":"Bool"},{"id":"896555914","method":"messages.searchStickerSets","params":[{"name":"flags","type":"#"},{"name":"exclude_featured","type":"flags.0?true"},{"name":"q","type":"string"},{"name":"hash","type":"long"}],"type":"messages.FoundStickerSets"},{"id":"-956147407","method":"upload.getFileHashes","params":[{"name":"location","type":"InputFileLocation"},{"name":"offset","type":"int"}],"type":"Vector<FileHash>"},{"id":"749019089","method":"help.getTermsOfServiceUpdate","params":[],"type":"help.TermsOfServiceUpdate"},{"id":"-294455398","method":"help.acceptTermsOfService","params":[{"name":"id","type":"DataJSON"}],"type":"Bool"},{"id":"-1299661699","method":"account.getAllSecureValues","params":[],"type":"Vector<SecureValue>"},{"id":"1936088002","method":"account.getSecureValue","params":[{"name":"types","type":"Vector<SecureValueType>"}],"type":"Vector<SecureValue>"},{"id":"-1986010339","method":"account.saveSecureValue","params":[{"name":"value","type":"InputSecureValue"},{"name":"secure_secret_id","type":"long"}],"type":"SecureValue"},{"id":"-1199522741","method":"account.deleteSecureValue","params":[{"name":"types","type":"Vector<SecureValueType>"}],"type":"Bool"},{"id":"-1865902923","method":"users.setSecureValueErrors","params":[{"name":"id","type":"InputUser"},{"name":"errors","type":"Vector<SecureValueError>"}],"type":"Bool"},{"id":"-1456907910","method":"account.getAuthorizationForm","params":[{"name":"bot_id","type":"long"},{"name":"scope","type":"string"},{"name":"public_key","type":"string"}],"type":"account.AuthorizationForm"},{"id":"-202552205","method":"account.acceptAuthorization","params":[{"name":"bot_id","type":"long"},{"name":"scope","type":"string"},{"name":"public_key","type":"string"},{"name":"value_hashes","type":"Vector<SecureValueHash>"},{"name":"credentials","type":"SecureCredentialsEncrypted"}],"type":"Bool"},{"id":"-1516022023","method":"account.sendVerifyPhoneCode","params":[{"name":"phone_number","type":"string"},{"name":"settings","type":"CodeSettings"}],"type":"auth.SentCode"},{"id":"1305716726","method":"account.verifyPhone","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"},{"name":"phone_code","type":"string"}],"type":"Bool"},{"id":"1880182943","method":"account.sendVerifyEmailCode","params":[{"name":"email","type":"string"}],"type":"account.SentEmailCode"},{"id":"-323339813","method":"account.verifyEmail","params":[{"name":"email","type":"string"},{"name":"code","type":"string"}],"type":"Bool"},{"id":"1072547679","method":"help.getDeepLinkInfo","params":[{"name":"path","type":"string"}],"type":"help.DeepLinkInfo"},{"id":"-2098076769","method":"contacts.getSaved","params":[],"type":"Vector<SavedContact>"},{"id":"-2092831552","method":"channels.getLeftChannels","params":[{"name":"offset","type":"int"}],"type":"messages.Chats"},{"id":"-262453244","method":"account.initTakeoutSession","params":[{"name":"flags","type":"#"},{"name":"contacts","type":"flags.0?true"},{"name":"message_users","type":"flags.1?true"},{"name":"message_chats","type":"flags.2?true"},{"name":"message_megagroups","type":"flags.3?true"},{"name":"message_channels","type":"flags.4?true"},{"name":"files","type":"flags.5?true"},{"name":"file_max_size","type":"flags.5?int"}],"type":"account.Takeout"},{"id":"489050862","method":"account.finishTakeoutSession","params":[{"name":"flags","type":"#"},{"name":"success","type":"flags.0?true"}],"type":"Bool"},{"id":"486505992","method":"messages.getSplitRanges","params":[],"type":"Vector<MessageRange>"},{"id":"911373810","method":"invokeWithMessagesRange","params":[{"name":"range","type":"MessageRange"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-1398145746","method":"invokeWithTakeout","params":[{"name":"takeout_id","type":"long"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-1031349873","method":"messages.markDialogUnread","params":[{"name":"flags","type":"#"},{"name":"unread","type":"flags.0?true"},{"name":"peer","type":"InputDialogPeer"}],"type":"Bool"},{"id":"585256482","method":"messages.getDialogUnreadMarks","params":[],"type":"Vector<DialogPeer>"},{"id":"-2062238246","method":"contacts.toggleTopPeers","params":[{"name":"enabled","type":"Bool"}],"type":"Bool"},{"id":"2119757468","method":"messages.clearAllDrafts","params":[],"type":"Bool"},{"id":"-1735311088","method":"help.getAppConfig","params":[],"type":"JSONValue"},{"id":"1862465352","method":"help.saveAppLog","params":[{"name":"events","type":"Vector<InputAppEvent>"}],"type":"Bool"},{"id":"-966677240","method":"help.getPassportConfig","params":[{"name":"hash","type":"int"}],"type":"help.PassportConfig"},{"id":"1784243458","method":"langpack.getLanguage","params":[{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"}],"type":"LangPackLanguage"},{"id":"-760547348","method":"messages.updatePinnedMessage","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.0?true"},{"name":"unpin","type":"flags.1?true"},{"name":"pm_oneside","type":"flags.2?true"},{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"}],"type":"Updates"},{"id":"-1881204448","method":"account.confirmPasswordEmail","params":[{"name":"code","type":"string"}],"type":"Bool"},{"id":"2055154197","method":"account.resendPasswordEmail","params":[],"type":"Bool"},{"id":"-1043606090","method":"account.cancelPasswordEmail","params":[],"type":"Bool"},{"id":"-748624084","method":"help.getSupportName","params":[],"type":"help.SupportName"},{"id":"59377875","method":"help.getUserInfo","params":[{"name":"user_id","type":"InputUser"}],"type":"help.UserInfo"},{"id":"1723407216","method":"help.editUserInfo","params":[{"name":"user_id","type":"InputUser"},{"name":"message","type":"string"},{"name":"entities","type":"Vector<MessageEntity>"}],"type":"help.UserInfo"},{"id":"-1626880216","method":"account.getContactSignUpNotification","params":[],"type":"Bool"},{"id":"-806076575","method":"account.setContactSignUpNotification","params":[{"name":"silent","type":"Bool"}],"type":"Bool"},{"id":"1398240377","method":"account.getNotifyExceptions","params":[{"name":"flags","type":"#"},{"name":"compare_sound","type":"flags.1?true"},{"name":"peer","type":"flags.0?InputNotifyPeer"}],"type":"Updates"},{"id":"283795844","method":"messages.sendVote","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"options","type":"Vector<bytes>"}],"type":"Updates"},{"id":"1941660731","method":"messages.getPollResults","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"}],"type":"Updates"},{"id":"1848369232","method":"messages.getOnlines","params":[{"name":"peer","type":"InputPeer"}],"type":"ChatOnlines"},{"id":"-554301545","method":"messages.editChatAbout","params":[{"name":"peer","type":"InputPeer"},{"name":"about","type":"string"}],"type":"Bool"},{"id":"-1517917375","method":"messages.editChatDefaultBannedRights","params":[{"name":"peer","type":"InputPeer"},{"name":"banned_rights","type":"ChatBannedRights"}],"type":"Updates"},{"id":"-57811990","method":"account.getWallPaper","params":[{"name":"wallpaper","type":"InputWallPaper"}],"type":"WallPaper"},{"id":"-578472351","method":"account.uploadWallPaper","params":[{"name":"file","type":"InputFile"},{"name":"mime_type","type":"string"},{"name":"settings","type":"WallPaperSettings"}],"type":"WallPaper"},{"id":"1817860919","method":"account.saveWallPaper","params":[{"name":"wallpaper","type":"InputWallPaper"},{"name":"unsave","type":"Bool"},{"name":"settings","type":"WallPaperSettings"}],"type":"Bool"},{"id":"-18000023","method":"account.installWallPaper","params":[{"name":"wallpaper","type":"InputWallPaper"},{"name":"settings","type":"WallPaperSettings"}],"type":"Bool"},{"id":"-1153722364","method":"account.resetWallPapers","params":[],"type":"Bool"},{"id":"1457130303","method":"account.getAutoDownloadSettings","params":[],"type":"account.AutoDownloadSettings"},{"id":"1995661875","method":"account.saveAutoDownloadSettings","params":[{"name":"flags","type":"#"},{"name":"low","type":"flags.0?true"},{"name":"high","type":"flags.1?true"},{"name":"settings","type":"AutoDownloadSettings"}],"type":"Bool"},{"id":"899735650","method":"messages.getEmojiKeywords","params":[{"name":"lang_code","type":"string"}],"type":"EmojiKeywordsDifference"},{"id":"352892591","method":"messages.getEmojiKeywordsDifference","params":[{"name":"lang_code","type":"string"},{"name":"from_version","type":"int"}],"type":"EmojiKeywordsDifference"},{"id":"1318675378","method":"messages.getEmojiKeywordsLanguages","params":[{"name":"lang_codes","type":"Vector<string>"}],"type":"Vector<EmojiLanguage>"},{"id":"-709817306","method":"messages.getEmojiURL","params":[{"name":"lang_code","type":"string"}],"type":"EmojiURL"},{"id":"1749536939","method":"folders.editPeerFolders","params":[{"name":"folder_peers","type":"Vector<InputFolderPeer>"}],"type":"Updates"},{"id":"472471681","method":"folders.deleteFolder","params":[{"name":"folder_id","type":"int"}],"type":"Updates"},{"id":"1932455680","method":"messages.getSearchCounters","params":[{"name":"peer","type":"InputPeer"},{"name":"filters","type":"Vector<MessagesFilter>"}],"type":"Vector<messages.SearchCounter>"},{"id":"-170208392","method":"channels.getGroupsForDiscussion","params":[],"type":"messages.Chats"},{"id":"1079520178","method":"channels.setDiscussionGroup","params":[{"name":"broadcast","type":"InputChannel"},{"name":"group","type":"InputChannel"}],"type":"Bool"},{"id":"428848198","method":"messages.requestUrlAuth","params":[{"name":"flags","type":"#"},{"name":"peer","type":"flags.1?InputPeer"},{"name":"msg_id","type":"flags.1?int"},{"name":"button_id","type":"flags.1?int"},{"name":"url","type":"flags.2?string"}],"type":"UrlAuthResult"},{"id":"-1322487515","method":"messages.acceptUrlAuth","params":[{"name":"flags","type":"#"},{"name":"write_allowed","type":"flags.0?true"},{"name":"peer","type":"flags.1?InputPeer"},{"name":"msg_id","type":"flags.1?int"},{"name":"button_id","type":"flags.1?int"},{"name":"url","type":"flags.2?string"}],"type":"UrlAuthResult"},{"id":"1336717624","method":"messages.hidePeerSettingsBar","params":[{"name":"peer","type":"InputPeer"}],"type":"Bool"},{"id":"-386636848","method":"contacts.addContact","params":[{"name":"flags","type":"#"},{"name":"add_phone_privacy_exception","type":"flags.0?true"},{"name":"id","type":"InputUser"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"phone","type":"string"}],"type":"Updates"},{"id":"-130964977","method":"contacts.acceptContact","params":[{"name":"id","type":"InputUser"}],"type":"Updates"},{"id":"-1892102881","method":"channels.editCreator","params":[{"name":"channel","type":"InputChannel"},{"name":"user_id","type":"InputUser"},{"name":"password","type":"InputCheckPasswordSRP"}],"type":"Updates"},{"id":"-750207932","method":"contacts.getLocated","params":[{"name":"flags","type":"#"},{"name":"background","type":"flags.1?true"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"self_expires","type":"flags.0?int"}],"type":"Updates"},{"id":"1491484525","method":"channels.editLocation","params":[{"name":"channel","type":"InputChannel"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"address","type":"string"}],"type":"Bool"},{"id":"-304832784","method":"channels.toggleSlowMode","params":[{"name":"channel","type":"InputChannel"},{"name":"seconds","type":"int"}],"type":"Updates"},{"id":"-183077365","method":"messages.getScheduledHistory","params":[{"name":"peer","type":"InputPeer"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"-1111817116","method":"messages.getScheduledMessages","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"}],"type":"messages.Messages"},{"id":"-1120369398","method":"messages.sendScheduledMessages","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"}],"type":"Updates"},{"id":"1504586518","method":"messages.deleteScheduledMessages","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"}],"type":"Updates"},{"id":"473805619","method":"account.uploadTheme","params":[{"name":"flags","type":"#"},{"name":"file","type":"InputFile"},{"name":"thumb","type":"flags.0?InputFile"},{"name":"file_name","type":"string"},{"name":"mime_type","type":"string"}],"type":"Document"},{"id":"-2077048289","method":"account.createTheme","params":[{"name":"flags","type":"#"},{"name":"slug","type":"string"},{"name":"title","type":"string"},{"name":"document","type":"flags.2?InputDocument"},{"name":"settings","type":"flags.3?InputThemeSettings"}],"type":"Theme"},{"id":"1555261397","method":"account.updateTheme","params":[{"name":"flags","type":"#"},{"name":"format","type":"string"},{"name":"theme","type":"InputTheme"},{"name":"slug","type":"flags.0?string"},{"name":"title","type":"flags.1?string"},{"name":"document","type":"flags.2?InputDocument"},{"name":"settings","type":"flags.3?InputThemeSettings"}],"type":"Theme"},{"id":"-229175188","method":"account.saveTheme","params":[{"name":"theme","type":"InputTheme"},{"name":"unsave","type":"Bool"}],"type":"Bool"},{"id":"2061776695","method":"account.installTheme","params":[{"name":"flags","type":"#"},{"name":"dark","type":"flags.0?true"},{"name":"format","type":"flags.1?string"},{"name":"theme","type":"flags.1?InputTheme"}],"type":"Bool"},{"id":"-1919060949","method":"account.getTheme","params":[{"name":"format","type":"string"},{"name":"theme","type":"InputTheme"},{"name":"document_id","type":"long"}],"type":"Theme"},{"id":"1913054296","method":"account.getThemes","params":[{"name":"format","type":"string"},{"name":"hash","type":"long"}],"type":"account.Themes"},{"id":"-1210022402","method":"auth.exportLoginToken","params":[{"name":"api_id","type":"int"},{"name":"api_hash","type":"string"},{"name":"except_ids","type":"Vector<long>"}],"type":"auth.LoginToken"},{"id":"-1783866140","method":"auth.importLoginToken","params":[{"name":"token","type":"bytes"}],"type":"auth.LoginToken"},{"id":"-392909491","method":"auth.acceptLoginToken","params":[{"name":"token","type":"bytes"}],"type":"Authorization"},{"id":"-1250643605","method":"account.setContentSettings","params":[{"name":"flags","type":"#"},{"name":"sensitive_enabled","type":"flags.0?true"}],"type":"Bool"},{"id":"-1952756306","method":"account.getContentSettings","params":[],"type":"account.ContentSettings"},{"id":"300429806","method":"channels.getInactiveChannels","params":[],"type":"messages.InactiveChats"},{"id":"1705865692","method":"account.getMultiWallPapers","params":[{"name":"wallpapers","type":"Vector<InputWallPaper>"}],"type":"Vector<WallPaper>"},{"id":"-1200736242","method":"messages.getPollVotes","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"},{"name":"option","type":"flags.0?bytes"},{"name":"offset","type":"flags.1?string"},{"name":"limit","type":"int"}],"type":"messages.VotesList"},{"id":"-1257951254","method":"messages.toggleStickerSets","params":[{"name":"flags","type":"#"},{"name":"uninstall","type":"flags.0?true"},{"name":"archive","type":"flags.1?true"},{"name":"unarchive","type":"flags.2?true"},{"name":"stickersets","type":"Vector<InputStickerSet>"}],"type":"Bool"},{"id":"779736953","method":"payments.getBankCardData","params":[{"name":"number","type":"string"}],"type":"payments.BankCardData"},{"id":"-241247891","method":"messages.getDialogFilters","params":[],"type":"Vector<DialogFilter>"},{"id":"-1566780372","method":"messages.getSuggestedDialogFilters","params":[],"type":"Vector<DialogFilterSuggested>"},{"id":"450142282","method":"messages.updateDialogFilter","params":[{"name":"flags","type":"#"},{"name":"id","type":"int"},{"name":"filter","type":"flags.0?DialogFilter"}],"type":"Bool"},{"id":"-983318044","method":"messages.updateDialogFiltersOrder","params":[{"name":"order","type":"Vector<int>"}],"type":"Bool"},{"id":"-1421720550","method":"stats.getBroadcastStats","params":[{"name":"flags","type":"#"},{"name":"dark","type":"flags.0?true"},{"name":"channel","type":"InputChannel"}],"type":"stats.BroadcastStats"},{"id":"1646092192","method":"stats.loadAsyncGraph","params":[{"name":"flags","type":"#"},{"name":"token","type":"string"},{"name":"x","type":"flags.0?long"}],"type":"StatsGraph"},{"id":"-1707717072","method":"stickers.setStickerSetThumb","params":[{"name":"stickerset","type":"InputStickerSet"},{"name":"thumb","type":"InputDocument"}],"type":"messages.StickerSet"},{"id":"85399130","method":"bots.setBotCommands","params":[{"name":"scope","type":"BotCommandScope"},{"name":"lang_code","type":"string"},{"name":"commands","type":"Vector<BotCommand>"}],"type":"Bool"},{"id":"2127598753","method":"messages.getOldFeaturedStickers","params":[{"name":"offset","type":"int"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"messages.FeaturedStickers"},{"id":"-1063816159","method":"help.getPromoData","params":[],"type":"help.PromoData"},{"id":"505748629","method":"help.hidePromoData","params":[{"name":"peer","type":"InputPeer"}],"type":"Bool"},{"id":"-8744061","method":"phone.sendSignalingData","params":[{"name":"peer","type":"InputPhoneCall"},{"name":"data","type":"bytes"}],"type":"Bool"},{"id":"-589330937","method":"stats.getMegagroupStats","params":[{"name":"flags","type":"#"},{"name":"dark","type":"flags.0?true"},{"name":"channel","type":"InputChannel"}],"type":"stats.MegagroupStats"},{"id":"-349483786","method":"account.getGlobalPrivacySettings","params":[],"type":"GlobalPrivacySettings"},{"id":"517647042","method":"account.setGlobalPrivacySettings","params":[{"name":"settings","type":"GlobalPrivacySettings"}],"type":"GlobalPrivacySettings"},{"id":"-183649631","method":"help.dismissSuggestion","params":[{"name":"peer","type":"InputPeer"},{"name":"suggestion","type":"string"}],"type":"Bool"},{"id":"1935116200","method":"help.getCountriesList","params":[{"name":"lang_code","type":"string"},{"name":"hash","type":"int"}],"type":"help.CountriesList"},{"id":"584962828","method":"messages.getReplies","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"offset_id","type":"int"},{"name":"offset_date","type":"int"},{"name":"add_offset","type":"int"},{"name":"limit","type":"int"},{"name":"max_id","type":"int"},{"name":"min_id","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"1147761405","method":"messages.getDiscussionMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"}],"type":"messages.DiscussionMessage"},{"id":"-147740172","method":"messages.readDiscussion","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"read_max_id","type":"int"}],"type":"Bool"},{"id":"698914348","method":"contacts.blockFromReplies","params":[{"name":"flags","type":"#"},{"name":"delete_message","type":"flags.0?true"},{"name":"delete_history","type":"flags.1?true"},{"name":"report_spam","type":"flags.2?true"},{"name":"msg_id","type":"int"}],"type":"Updates"},{"id":"1445996571","method":"stats.getMessagePublicForwards","params":[{"name":"channel","type":"InputChannel"},{"name":"msg_id","type":"int"},{"name":"offset_rate","type":"int"},{"name":"offset_peer","type":"InputPeer"},{"name":"offset_id","type":"int"},{"name":"limit","type":"int"}],"type":"messages.Messages"},{"id":"-1226791947","method":"stats.getMessageStats","params":[{"name":"flags","type":"#"},{"name":"dark","type":"flags.0?true"},{"name":"channel","type":"InputChannel"},{"name":"msg_id","type":"int"}],"type":"stats.MessageStats"},{"id":"-265962357","method":"messages.unpinAllMessages","params":[{"name":"peer","type":"InputPeer"}],"type":"messages.AffectedHistory"},{"id":"1221445336","method":"phone.createGroupCall","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"random_id","type":"int"},{"name":"title","type":"flags.0?string"},{"name":"schedule_date","type":"flags.1?int"}],"type":"Updates"},{"id":"-1322057861","method":"phone.joinGroupCall","params":[{"name":"flags","type":"#"},{"name":"muted","type":"flags.0?true"},{"name":"video_stopped","type":"flags.2?true"},{"name":"call","type":"InputGroupCall"},{"name":"join_as","type":"InputPeer"},{"name":"invite_hash","type":"flags.1?string"},{"name":"params","type":"DataJSON"}],"type":"Updates"},{"id":"1342404601","method":"phone.leaveGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"source","type":"int"}],"type":"Updates"},{"id":"2067345760","method":"phone.inviteToGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"users","type":"Vector<InputUser>"}],"type":"Updates"},{"id":"2054648117","method":"phone.discardGroupCall","params":[{"name":"call","type":"InputGroupCall"}],"type":"Updates"},{"id":"1958458429","method":"phone.toggleGroupCallSettings","params":[{"name":"flags","type":"#"},{"name":"reset_invite_hash","type":"flags.1?true"},{"name":"call","type":"InputGroupCall"},{"name":"join_muted","type":"flags.0?Bool"}],"type":"Updates"},{"id":"68699611","method":"phone.getGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"limit","type":"int"}],"type":"phone.GroupCall"},{"id":"-984033109","method":"phone.getGroupParticipants","params":[{"name":"call","type":"InputGroupCall"},{"name":"ids","type":"Vector<InputPeer>"},{"name":"sources","type":"Vector<int>"},{"name":"offset","type":"string"},{"name":"limit","type":"int"}],"type":"phone.GroupParticipants"},{"id":"-1248003721","method":"phone.checkGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"sources","type":"Vector<int>"}],"type":"Vector<int>"},{"id":"1540419152","method":"messages.deleteChat","params":[{"name":"chat_id","type":"long"}],"type":"Bool"},{"id":"-104078327","method":"messages.deletePhoneCallHistory","params":[{"name":"flags","type":"#"},{"name":"revoke","type":"flags.0?true"}],"type":"messages.AffectedFoundMessages"},{"id":"1140726259","method":"messages.checkHistoryImport","params":[{"name":"import_head","type":"string"}],"type":"messages.HistoryImportParsed"},{"id":"873008187","method":"messages.initHistoryImport","params":[{"name":"peer","type":"InputPeer"},{"name":"file","type":"InputFile"},{"name":"media_count","type":"int"}],"type":"messages.HistoryImport"},{"id":"713433234","method":"messages.uploadImportedMedia","params":[{"name":"peer","type":"InputPeer"},{"name":"import_id","type":"long"},{"name":"file_name","type":"string"},{"name":"media","type":"InputMedia"}],"type":"MessageMedia"},{"id":"-1271008444","method":"messages.startHistoryImport","params":[{"name":"peer","type":"InputPeer"},{"name":"import_id","type":"long"}],"type":"Bool"},{"id":"-1565154314","method":"messages.getExportedChatInvites","params":[{"name":"flags","type":"#"},{"name":"revoked","type":"flags.3?true"},{"name":"peer","type":"InputPeer"},{"name":"admin_id","type":"InputUser"},{"name":"offset_date","type":"flags.2?int"},{"name":"offset_link","type":"flags.2?string"},{"name":"limit","type":"int"}],"type":"messages.ExportedChatInvites"},{"id":"1937010524","method":"messages.getExportedChatInvite","params":[{"name":"peer","type":"InputPeer"},{"name":"link","type":"string"}],"type":"messages.ExportedChatInvite"},{"id":"48562110","method":"messages.editExportedChatInvite","params":[{"name":"flags","type":"#"},{"name":"revoked","type":"flags.2?true"},{"name":"peer","type":"InputPeer"},{"name":"link","type":"string"},{"name":"expire_date","type":"flags.0?int"},{"name":"usage_limit","type":"flags.1?int"}],"type":"messages.ExportedChatInvite"},{"id":"1452833749","method":"messages.deleteRevokedExportedChatInvites","params":[{"name":"peer","type":"InputPeer"},{"name":"admin_id","type":"InputUser"}],"type":"Bool"},{"id":"-731601877","method":"messages.deleteExportedChatInvite","params":[{"name":"peer","type":"InputPeer"},{"name":"link","type":"string"}],"type":"Bool"},{"id":"958457583","method":"messages.getAdminsWithInvites","params":[{"name":"peer","type":"InputPeer"}],"type":"messages.ChatAdminsWithInvites"},{"id":"654013065","method":"messages.getChatInviteImporters","params":[{"name":"peer","type":"InputPeer"},{"name":"link","type":"string"},{"name":"offset_date","type":"int"},{"name":"offset_user","type":"InputUser"},{"name":"limit","type":"int"}],"type":"messages.ChatInviteImporters"},{"id":"-1207017500","method":"messages.setHistoryTTL","params":[{"name":"peer","type":"InputPeer"},{"name":"period","type":"int"}],"type":"Updates"},{"id":"-91437323","method":"account.reportProfilePhoto","params":[{"name":"peer","type":"InputPeer"},{"name":"photo_id","type":"InputPhoto"},{"name":"reason","type":"ReportReason"},{"name":"message","type":"string"}],"type":"Bool"},{"id":"187239529","method":"channels.convertToGigagroup","params":[{"name":"channel","type":"InputChannel"}],"type":"Updates"},{"id":"1573261059","method":"messages.checkHistoryImportPeer","params":[{"name":"peer","type":"InputPeer"}],"type":"messages.CheckedHistoryImportPeer"},{"id":"-248985848","method":"phone.toggleGroupCallRecord","params":[{"name":"flags","type":"#"},{"name":"start","type":"flags.0?true"},{"name":"video","type":"flags.2?true"},{"name":"call","type":"InputGroupCall"},{"name":"title","type":"flags.1?string"},{"name":"video_portrait","type":"flags.2?Bool"}],"type":"Updates"},{"id":"-1524155713","method":"phone.editGroupCallParticipant","params":[{"name":"flags","type":"#"},{"name":"call","type":"InputGroupCall"},{"name":"participant","type":"InputPeer"},{"name":"muted","type":"flags.0?Bool"},{"name":"volume","type":"flags.1?int"},{"name":"raise_hand","type":"flags.2?Bool"},{"name":"video_stopped","type":"flags.3?Bool"},{"name":"video_paused","type":"flags.4?Bool"},{"name":"presentation_paused","type":"flags.5?Bool"}],"type":"Updates"},{"id":"480685066","method":"phone.editGroupCallTitle","params":[{"name":"call","type":"InputGroupCall"},{"name":"title","type":"string"}],"type":"Updates"},{"id":"-277077702","method":"phone.getGroupCallJoinAs","params":[{"name":"peer","type":"InputPeer"}],"type":"phone.JoinAsPeers"},{"id":"-425040769","method":"phone.exportGroupCallInvite","params":[{"name":"flags","type":"#"},{"name":"can_self_unmute","type":"flags.0?true"},{"name":"call","type":"InputGroupCall"}],"type":"phone.ExportedGroupCallInvite"},{"id":"563885286","method":"phone.toggleGroupCallStartSubscription","params":[{"name":"call","type":"InputGroupCall"},{"name":"subscribed","type":"Bool"}],"type":"Updates"},{"id":"1451287362","method":"phone.startScheduledGroupCall","params":[{"name":"call","type":"InputGroupCall"}],"type":"Updates"},{"id":"1465786252","method":"phone.saveDefaultGroupCallJoinAs","params":[{"name":"peer","type":"InputPeer"},{"name":"join_as","type":"InputPeer"}],"type":"Bool"},{"id":"-873829436","method":"phone.joinGroupCallPresentation","params":[{"name":"call","type":"InputGroupCall"},{"name":"params","type":"DataJSON"}],"type":"Updates"},{"id":"475058500","method":"phone.leaveGroupCallPresentation","params":[{"name":"call","type":"InputGroupCall"}],"type":"Updates"},{"id":"676017721","method":"stickers.checkShortName","params":[{"name":"short_name","type":"string"}],"type":"Bool"},{"id":"1303364867","method":"stickers.suggestShortName","params":[{"name":"title","type":"string"}],"type":"stickers.SuggestedShortName"},{"id":"1032708345","method":"bots.resetBotCommands","params":[{"name":"scope","type":"BotCommandScope"},{"name":"lang_code","type":"string"}],"type":"Bool"},{"id":"-481554986","method":"bots.getBotCommands","params":[{"name":"scope","type":"BotCommandScope"},{"name":"lang_code","type":"string"}],"type":"Vector<BotCommand>"},{"id":"-1828139493","method":"account.resetPassword","params":[],"type":"account.ResetPasswordResult"},{"id":"1284770294","method":"account.declinePasswordReset","params":[],"type":"Bool"},{"id":"221691769","method":"auth.checkRecoveryPassword","params":[{"name":"code","type":"string"}],"type":"Bool"},{"id":"-690545285","method":"account.getChatThemes","params":[{"name":"hash","type":"int"}],"type":"account.ChatThemes"},{"id":"-432283329","method":"messages.setChatTheme","params":[{"name":"peer","type":"InputPeer"},{"name":"emoticon","type":"string"}],"type":"Updates"},{"id":"-1095836780","method":"channels.viewSponsoredMessage","params":[{"name":"channel","type":"InputChannel"},{"name":"random_id","type":"bytes"}],"type":"Bool"},{"id":"-333377601","method":"channels.getSponsoredMessages","params":[{"name":"channel","type":"InputChannel"}],"type":"messages.SponsoredMessages"},{"id":"745510839","method":"messages.getMessageReadParticipants","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"}],"type":"Vector<long>"}]} \ No newline at end of file diff --git a/data/core.telegram.org/stickers.html b/data/core.telegram.org/stickers.html new file mode 100644 index 0000000000..b1683a7d5b --- /dev/null +++ b/data/core.telegram.org/stickers.html @@ -0,0 +1,249 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Stickers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="All users can create, send and share custom artwork using Telegram's open Sticker Platform. Stickers take many forms – from…"> + <meta property="og:title" content="Telegram Stickers"> + <meta property="og:image" content=""> + <meta property="og:description" content="All users can create, send and share custom artwork using Telegram's open Sticker Platform. Stickers take many forms – from…"> + <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?215" 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 Stickers</h1> + + <div id="dev_page_content"><p>All users can create, send and share custom artwork using Telegram's open <strong>Sticker Platform</strong>. Stickers take many forms – from <strong>basic images</strong> to stunning <strong>vector animations</strong>. </p> +<p>To start building your own custom sets, click below:</p> +<ul> +<li><a href="#animated-stickers">Animated Stickers</a></li> +<li><a href="#video-stickers">Video Stickers</a></li> +<li><a href="#static-stickers">Static Stickers</a></li> +<li><a href="#using-the-stickers-bot">Uploading your Stickers</a></li> +<li><a href="#importing-stickers-from-other-apps">Importing from other apps</a></li> +</ul> +<h3><a class="anchor" name="animated-stickers" href="#animated-stickers"><i class="anchor-icon"></i></a>Animated Stickers</h3> +<p>Telegram stickers can move with smooth <strong>60 FPS animations</strong> to bring your characters to life in high-resolution.</p> +<blockquote> +<p>Animated stickers use Telegram's unique <strong>.TGS format</strong> – click <a href="#video-stickers">here</a> for <strong>Video Stickers</strong> made in <strong>.WEBM format</strong>.</p> +</blockquote> +<h4><a class="anchor" name="creating-animated-stickers" href="#creating-animated-stickers"><i class="anchor-icon"></i></a>Creating Animated Stickers</h4> +<p>To create vector animated stickers you will need the following:</p> +<ol> +<li>Any vector graphics editor that allows exporting vector objects to Adobe After Effects to turn them into animations.</li> +<li>Adobe After Effects.</li> +<li>The <a href="https://github.com/TelegramMessenger/bodymovin-extension">Bodymovin-TG</a> plugin, a fork of Bodymovin for Adobe After Effects that can be used to export animations to <strong>.TGS</strong>, the Telegram animated sticker format.</li> +</ol> +<blockquote> +<p>The Lottie-based .TGS format allows for incredibly detailed stickers that are <strong>less than 30 KB</strong> in size – six times smaller than the average photo.</p> +</blockquote> +<h4><a class="anchor" name="animated-sticker-requirements" href="#animated-sticker-requirements"><i class="anchor-icon"></i></a>Animated Sticker Requirements</h4> +<ul> +<li>Sticker/canvas size must be <strong>512х512 pixels</strong>.</li> +<li>Sticker objects must not leave the canvas.</li> +<li>Animation length must not exceed <strong>3 seconds</strong>.</li> +<li>All animations must be looped.</li> +<li>Sticker size must not exceed <strong>64 KB</strong> after rendering in Bodymovin.</li> +<li>All animations must run at <strong>60 Frames Per Second</strong>.</li> +<li>You <strong>must not</strong> use the following Adobe After Effects functionality when animating your stickers: <em>Auto-bezier keys, Expressions, Masks, Layer Effects, Images, Solids, Texts, 3D Layers, Merge Paths, Star Shapes, Gradient Strokes, Repeaters, Time Stretching, Time Remapping, Auto-Oriented Layers</em>.</li> +</ul> +<h4><a class="anchor" name="uploading-animated-stickers" href="#uploading-animated-stickers"><i class="anchor-icon"></i></a>Uploading Animated Stickers</h4> +<p>When your stickers are ready, send the <code>/newanimated</code> command to the <a href="https://t.me/Stickers">@Stickers</a> bot – then send it the .TGS files.</p> +<p>Your set will need an icon. Icons for animated sticker sets must be <strong>100x100 pixels</strong>, with a looped animation not exceeding 3 seconds.</p> +<hr> +<h3><a class="anchor" name="video-stickers" href="#video-stickers"><i class="anchor-icon"></i></a>Video Stickers</h3> +<p><a href="https://telegram.org/blog/video-stickers-better-reactions">Video Stickers</a> are built with <strong>.WEBM</strong> – an open-source format that is compatible with many graphics editors to create high-detail images. Requires <a href="https://telegram.org/apps">Telegram 8.5</a> or higher.</p> +<!-- +> This format also allows you to [import custom stickers](https://core.telegram.org/import-stickers) to Telegram from other apps. +--> + +<h4><a class="anchor" name="creating-video-stickers" href="#creating-video-stickers"><i class="anchor-icon"></i></a>Creating Video Stickers</h4> +<p>To create Video Stickers, you only need <a href="https://core.telegram.org/stickers/webm-vp9-encoding">editing software</a> that lets you export your project as a <strong>.WEBM video file</strong> (alpha channel <strong>no longer required</strong>).</p> +<h4><a class="anchor" name="video-sticker-requirements" href="#video-sticker-requirements"><i class="anchor-icon"></i></a>Video Sticker Requirements</h4> +<blockquote> +<p>See this <a href="https://core.telegram.org/stickers/webm-vp9-encoding">Encoding .WEBM with VP9 Guide</a> for details </p> +</blockquote> +<ul> +<li>One side of the sticker must be exactly <strong>512 pixels</strong> in size – the other side can be 512 pixels <strong>or less</strong>.</li> +<li>Video duration must not exceed <strong>3 seconds</strong>.</li> +<li>Frame rate can be up to <strong>30 FPS</strong>.</li> +<li><del>Video must have a transparent layer</del> (this is no longer required).</li> +<li>Video should be looped for optimal user experience.</li> +<li>Video size should not exceed <strong>256 KB</strong>. </li> +<li>Video must be in .WEBM format encoded with the <strong>VP9 codec</strong>.</li> +<li>Video must have <strong>no audio stream</strong>.</li> +</ul> +<h4><a class="anchor" name="uploading-video-stickers" href="#uploading-video-stickers"><i class="anchor-icon"></i></a>Uploading Video Stickers</h4> +<p>Once your stickers are ready, send the <code>/newvideo</code> command to the <a href="https://t.me/Stickers">@Stickers</a> bot – then send it the .WEBM files.</p> +<p>Your set will need a .WEBM icon. Icons for video sticker sets must be <strong>100x100 pixels</strong>, with a looped animation not exceeding 3 seconds.</p> +<hr> +<h3><a class="anchor" name="static-stickers" href="#static-stickers"><i class="anchor-icon"></i></a>Static Stickers</h3> +<p>Turn your favorite drawings and memes into packs of images that are easily accessible <strong>on any device</strong> – no more digging through your gallery.</p> +<h4><a class="anchor" name="creating-static-stickers" href="#creating-static-stickers"><i class="anchor-icon"></i></a>Creating Static Stickers</h4> +<p>To create static stickers for the Telegram platform, you only need an image editor that lets you export in <strong>.PNG</strong> or <strong>.WEBP</strong> format.</p> +<h4><a class="anchor" name="static-sticker-requirements" href="#static-sticker-requirements"><i class="anchor-icon"></i></a>Static Sticker Requirements</h4> +<ul> +<li>One side of the sticker must be exactly <strong>512 pixels</strong> in size – the other side can be 512 pixels <strong>or less</strong>.</li> +<li>The image file must be in either .PNG or .WEBP format.</li> +</ul> +<blockquote> +<p>Tip: a transparent background, white stroke and black shadow effect will make your sticker stand out.</p> +</blockquote> +<h4><a class="anchor" name="uploading-static-stickers" href="#uploading-static-stickers"><i class="anchor-icon"></i></a>Uploading Static Stickers</h4> +<p>Once your stickers are ready, start a chat with the <a href="https://t.me/Stickers">@Stickers</a> bot and send the command <code>/newpack</code>. Your sticker set can also have a <strong>custom icon</strong> – a <strong>100x100 pixel image</strong> in .PNG or .WEBP format.</p> +<blockquote> +<p>For more info about using the <a href="https://t.me/Stickers">@Stickers</a> bot, click <a href="#using-the-stickers-bot">here</a>.</p> +</blockquote> +<hr> +<h3><a class="anchor" name="using-the-stickers-bot" href="#using-the-stickers-bot"><i class="anchor-icon"></i></a>Using the @Stickers Bot</h3> +<p>Publishing and <a href="#editing-a-sticker-pack">editing</a> sticker packs is <strong>simple</strong> and <strong>automated</strong>, thanks to the <a href="https://t.me/Stickers">@Stickers</a> bot. It can also show you <a href="#sticker-stats">detailed stats</a> for stickers and packs.</p> +<h4><a class="anchor" name="publishing-a-sticker-pack" href="#publishing-a-sticker-pack"><i class="anchor-icon"></i></a>Publishing a Sticker Pack</h4> +<p>Once you open the bot, press the <strong>Start button</strong> or send <code>/start</code>. The bot will reply, describing its different commands. It will walk you through step by step, but here's a quick guide:</p> +<ul> +<li>Open the <a href="https://t.me/TelegramTips/283">bot menu</a> in the message bar and select the <code>/newpack</code> command to start uploading <a href="#uploading-static-stickers">static stickers</a>. For <a href="#uploading-animated-stickers">animated stickers</a> use <code>/newanimated</code>, or <code>/newvideo</code> for <a href="#uploading-video-stickers">video stickers</a>.</li> +<li>Give your sticker pack a <strong>name</strong> – this name will appear <strong>as the title</strong> for your pack in the sticker panel.</li> +<li>Send your first sticker file – an <a href="#static-stickers">image file</a>, <a href="#animated-stickers">.TGS file</a>, or <a href="#video-stickers">.WEBM file</a>. Using one of the <a href="https://telegram.org/apps#desktop-apps">Desktop</a> or <a href="https://telegram.org/apps#web-apps">Web apps</a> is <strong>strongly recommended</strong>.</li> +<li>Choose an <strong>emoji</strong> that corresponds to your sticker – this lets users quickly find it with <a href="https://t.me/TelegramTips/294">sticker suggestions</a>.</li> +<li>Continue uploading all your sticker files.</li> +<li>When you're done uploading, send the <code>/publish</code> command.</li> +<li>Set an icon for your pack – <a href="#static-stickers">static sticker</a> packs can <code>/skip</code> this step, but it is required for <a href="#animated-stickers">animated</a> or <a href="#video-stickers">video stickers</a>.</li> +<li>Choose a <strong>short name</strong> for your sticker pack – it will be used to create a <strong>shareable link</strong> for the pack like <a href="https://t.me/addstickers/HotCherry">t.me/addstickers/HotCherry</a>. Congratulations! Your stickers are ready for the world.</li> +</ul> +<blockquote> +<p>After your pack is finished, you can send <code>/start</code> again to see the full list of commands, or use the bot menu to create another pack, <a href="#editing-a-sticker-pack">edit an existing pack</a>, or <a href="#sticker-stats">see statistics</a>.</p> +</blockquote> +<h4><a class="anchor" name="editing-a-sticker-pack" href="#editing-a-sticker-pack"><i class="anchor-icon"></i></a>Editing a Sticker Pack</h4> +<p>Once you've created <a href="#publishing-a-sticker-pack">one or more packs</a>, you can <strong>add</strong>, <strong>edit</strong> or <strong>replace stickers</strong> in your existing sets.</p> +<ul> +<li>Use <code>/addsticker</code> if you have more artwork you'd like to add to a set. Choose one of your packs from the list – the upload process is <a href="#publishing-a-sticker-pack">exactly the same</a> as before.</li> +<li>Use <code>/editsticker</code> to <strong>change the emoji</strong> you assigned to a sticker – select the pack and sticker, or simply send the intended sticker from your panel.</li> +<li>Use <code>/replacesticker</code> if you want to swap out an older sticker for an updated version.</li> +<li>Use <code>/ordersticker</code> to <strong>change the order</strong> of stickers in your pack. Choose the pack and one of the stickers, then choose another sticker to appear before it (to the left) in the panel.</li> +<li>Use <code>/delsticker</code> to <strong>remove a sticker</strong> from the pack – you can always use <code>/addsticker</code> to add it again if you change your mind.</li> +<li>Use <code>/seticon</code> to set an icon for your pack or to <strong>change the icon</strong>. Static sticker packs without a custom icon will use the first sticker as its icon.</li> +</ul> +<blockquote> +<p>Edits to your sticker packs may take up to an hour to update for all users.</p> +</blockquote> +<h4><a class="anchor" name="sticker-stats" href="#sticker-stats"><i class="anchor-icon"></i></a>Sticker Stats</h4> +<p>There are a number of commands that let you <strong>see statistics</strong> for your stickers – here's what they all do:</p> +<ul> +<li><code>/packstats</code> shows how many times your pack was <strong>used</strong>, <strong>installed</strong> and <strong>removed</strong> – both recently and overall.</li> +<li><code>/stats</code> shows how many times an <strong>individual sticker</strong> has been sent.</li> +<li><code>/top</code> shows the most popular stickers from <strong>all your packs</strong>.</li> +<li><code>/packtop</code> shows your most popular sticker packs and their <strong>individual stats</strong>.</li> +<li><code>/topbypack</code> shows the top stickers from a <strong>specific sticker pack</strong>.</li> +<li><code>/packusagetop</code> shows your most popular packs by <strong>recent usage</strong>.</li> +</ul> +<blockquote> +<p>You can filter the results of <code>/top</code>, <code>/packtop</code>, <code>/topbypack</code> and <code>/packusagetop</code>. For example <code>/top 20</code> would show your top 20 stickers, and <code>/topbypack -5</code> would show the 5 least popular stickers from a pack.</p> +</blockquote> +<h3><a class="anchor" name="importing-stickers-from-other-apps" href="#importing-stickers-from-other-apps"><i class="anchor-icon"></i></a>Importing Stickers From Other Apps</h3> +<p>Developers can build apps to automate importing stickers using Telegram’s API. With these tools, users can instantly bring their favorite stickers to Telegram.</p> +<h4><a class="anchor" name="for-developers" href="#for-developers"><i class="anchor-icon"></i></a>For Developers</h4> +<p>As of version 7.8, Telegram apps support a simple API for importing stickers. Developers can use this to <strong>build apps</strong> or <strong>add tools</strong> to apps that let users instantly transfer stickers to Telegram – or create custom stickers from photos or videos.</p> +<blockquote> +<p>Click <a href="https://core.telegram.org/import-stickers#sticker-formats">here</a> for more information about developing apps for importing stickers.</p> +</blockquote> +<h4><a class="anchor" name="for-users" href="#for-users"><i class="anchor-icon"></i></a>For Users</h4> +<p>Users can find apps that allow them to import stickers or quickly <strong>generate their own</strong>. They can also easily <a href="#publishing-a-sticker-pack">publish custom stickers</a> with the <a href="https://t.me/Stickers">@Stickers</a> bot using <a href="#static-stickers">.PNG</a>, <a href="#static-stickers">.WEBP</a> or <a href="#video-stickers">.WEBM</a> files for stickers from other 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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/stickers/webm-vp9-encoding.html b/data/core.telegram.org/stickers/webm-vp9-encoding.html new file mode 100644 index 0000000000..adb9aa235c --- /dev/null +++ b/data/core.telegram.org/stickers/webm-vp9-encoding.html @@ -0,0 +1,159 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Encoding Video Stickers with .WEBM and VP9</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="The Video Sticker format allows anyone to easily create high-detail animations that users can send and share instantly in…"> + <meta property="og:title" content="Encoding Video Stickers with .WEBM and VP9"> + <meta property="og:image" content=""> + <meta property="og:description" content="The Video Sticker format allows anyone to easily create high-detail animations that users can send and share instantly in…"> + <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?215" 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">Encoding Video Stickers with .WEBM and VP9</h1> + + <div id="dev_page_content"><p>The <a href="https://telegram.org/blog/video-stickers-better-reactions">Video Sticker</a> format allows anyone to easily create <strong>high-detail animations</strong> that users can send and share instantly in Telegram.</p> +<h3><a class="anchor" name="video-sticker-requirements" href="#video-sticker-requirements"><i class="anchor-icon"></i></a>Video Sticker Requirements</h3> +<ul> +<li>Video must be in <strong>.WEBM</strong> format, up to <strong>30 FPS</strong>.</li> +<li>Video must be encoded with the <strong>VP9 codec</strong>.</li> +<li>Video must have <strong>no audio stream</strong>.</li> +<li>One side must be <strong>512 pixels</strong> in size – the other side can be 512 pixels <strong>or less</strong>.</li> +<li>Duration must not exceed <strong>3 seconds</strong>.</li> +<li><del>Video must have a transparent layer</del> (this is no longer required).</li> +<li>Video should be looped for optimal user experience.</li> +<li>Video size should not exceed <strong>256 KB</strong> after encoding. </li> +</ul> +<h3><a class="anchor" name="encoding-video-files" href="#encoding-video-files"><i class="anchor-icon"></i></a>Encoding Video Files</h3> +<p>You can design your animation in your <strong>preferred app</strong> – but depending on the app’s export settings, you may need an <strong>encoding program</strong> to create the final file.</p> +<blockquote> +<p>Programs like <a href="https://handbrake.fr/downloads.php">Handbrake</a> or <a href="https://www.ffmpeg.org/download.html">ffmpeg</a> natively support .WEBM encoding with VP9.</p> +</blockquote> +<h4><a class="anchor" name="encoding-with-adobe-media-encoder" href="#encoding-with-adobe-media-encoder"><i class="anchor-icon"></i></a>Encoding with Adobe Media Encoder</h4> +<p>Adobe’s Media Encoder <strong>requires a plug-in</strong> to support .WEBM encoding. Here is a modified version of a plug-in by <a href="https://github.com/fnordware/AdobeWebM">fnord software</a> that you can install to render your video stickers with Media Encoder.</p> +<ul> +<li><p><a href="/file/464001139/fd54/udyaRyjzBQ0.837957.zip/cd1e72526a65d383e5">Windows WEBM plug-in</a><br>Windows Installation Path<br><code>C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore</code></p> +</li> +<li><p><a href="/file/464001958/101cc/d7q2KrY6DDU.1628141.zip/15bbe083289d292ce6">macOS WEBM plug-in (M1 and Intel)</a><br>macOS Installation Path:<br><code>~/Library/Application Support/Adobe/Common/Plug-ins/7.0/MediaCore</code></p> +</li> +</ul> +<p>After the plug-in is installed, .WEBM will appear in the list of formats in the Queue tab.</p> +<blockquote> +<p>On macOS, you may need to go to Settings > Security & Privacy to approve installation.</p> +</blockquote> +<h4><a class="anchor" name="render-settings" href="#render-settings"><i class="anchor-icon"></i></a>Render Settings</h4> +<p>If it’s your first time working with encoding software, here are some tips that might help:</p> +<ul> +<li>Make sure to check that <strong>VP9</strong> is selected in the codec settings – some apps may default to VP8.</li> +<li>Make sure to <strong>remove</strong> any audio streams (uncheck ‘Export Audio’ in Adobe programs).</li> +<li>Make sure the frame rate is a <strong>constant 30 FPS</strong>.</li> +<li>Use <strong>Constant Quality</strong> and a lower (or lowest) quality setting – size dramatically decreases without affecting fidelity.</li> +<li>In <strong>Media Encoder</strong>, make sure your Renderer is set to ‘Software Only’.</li> +<li>If your file fails to render, try importing it as a <strong>PNG Sequence</strong>.</li> +</ul> +<blockquote> +<p>After Effects projects integrate directly with Media Encoder via <em>File > Export > Add to Media Encoder Queue</em>.</p> +</blockquote> +<h3><a class="anchor" name="uploading-video-stickers" href="#uploading-video-stickers"><i class="anchor-icon"></i></a>Uploading Video Stickers</h3> +<p>The <a href="https://t.me/Stickers">@Stickers</a> bot lets you quickly <strong>publish</strong> and <strong>manage</strong> your sticker packs. Start a chat with it on Telegram and it will walk you through the process. For <strong>step-by-step instructions</strong> and more information, see <a href="https://core.telegram.org/stickers#using-the-stickers-bot">this guide</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/tdlib.html b/data/core.telegram.org/tdlib.html new file mode 100644 index 0000000000..a48649c3b4 --- /dev/null +++ b/data/core.telegram.org/tdlib.html @@ -0,0 +1,147 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Database Library</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="TDLib (Telegram Database Library) is a cross-platform, fully functional Telegram client. We designed it to help third-party…"> + <meta property="og:title" content="Telegram Database Library"> + <meta property="og:image" content="https://core.telegram.org/file/811140459/1bdb/rl5NwUNbBzM.26909.gif/0ecbc461e020d4bc3a"> + <meta property="og:description" content="TDLib (Telegram Database Library) is a cross-platform, fully functional Telegram client. We designed it to help third-party…"> + <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?215" 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 Database Library</h1> + + <div id="dev_page_content"><div> + <a href="/file/811140459/1bdb/rl5NwUNbBzM.26909.gif/0ecbc461e020d4bc3a" target="_blank"><img src="/file/811140459/1bdb/rl5NwUNbBzM.26909.gif/0ecbc461e020d4bc3a" title="TDLib" style="max-width: 200px;float:right; padding-bottom:15px" /></a> +</div> + +<p><strong>TDLib</strong> (Telegram Database Library) is a cross-platform, fully functional Telegram client. We designed it to help third-party developers create their own <strong>custom apps</strong> using the Telegram platform.</p> +<blockquote> +<p><a href="https://telegram.org/blog/tdlib">Read about TDLib on the Telegram blog »</a></p> +</blockquote> +<h4><a class="anchor" name="tdlib-advantages" href="#tdlib-advantages"><i class="anchor-icon"></i></a>TDLib Advantages</h4> +<ul> +<li><strong>Cross-platform</strong>. TDLib can be used on Android, iOS, Windows, macOS, Linux, WebAssembly, FreeBSD, Windows Phone, watchOS, tvOS, Tizen, Cygwin. It should also work on other *nix systems with or without minimal effort.</li> +<li><strong>Multilanguage</strong>. TDLib can be easily used with <strong>any programming language</strong> that is able to execute C functions. Additionally it already has native bindings to Java (using JNI) and C# (using C++/CLI).</li> +<li><strong>Easy to use</strong>. TDLib takes care of all <strong>network implementation details</strong>, <strong>encryption</strong> and <strong>local data storage</strong>.</li> +<li><strong>High-performance</strong>. In the Telegram Bot API, each TDLib instance handles more than <strong>24,000</strong> active bots simultaneously.</li> +<li><strong>Well-documented</strong>. All TDLib API methods and public interfaces are <a href="/tdlib/docs/"><strong>fully documented</strong></a>.</li> +<li><strong>Consistent</strong>. TDLib guarantees that all updates will be delivered in the <strong>right order</strong>.</li> +<li><strong>Reliable</strong>. TDLib remains <strong>stable</strong> on slow and unreliable Internet connections.</li> +<li><strong>Secure</strong>: All local data is <strong>encrypted</strong> using a user-provided encryption key.</li> +<li><strong>Fully-asynchronous</strong>. Requests to TDLib don't block each other or anything else, responses will be sent when they are available.</li> +</ul> +<blockquote> +<p><a href="https://core.telegram.org/tdlib/getting-started">Getting started with TDLib »</a></p> +</blockquote> +<h4><a class="anchor" name="resources" href="#resources"><i class="anchor-icon"></i></a>Resources</h4> +<p>TDLib is fully <strong>open source</strong>, all code is available on <a href="https://github.com/tdlib/td">GitHub</a>.</p> +<p><strong>See also:</strong></p> +<ul> +<li><a href="/tdlib/docs/">Library documentation</a></li> +<li><a href="/tdlib/options">List of available options</a></li> +<li><a href="/tdlib/notification-api/">Notification API documentation</a></li> +<li><a href="/tdlib/tdlib.zip">Prebuilt library for Android</a></li> +</ul> +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/themes.html b/data/core.telegram.org/themes.html new file mode 100644 index 0000000000..bf98edc07e --- /dev/null +++ b/data/core.telegram.org/themes.html @@ -0,0 +1,143 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Creating Custom Cloud Themes</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Official Telegram apps support custom cloud themes as of version 5.11. Everyone is welcome to create and share their themes.…"> + <meta property="og:title" content="Creating Custom Cloud Themes"> + <meta property="og:image" content=""> + <meta property="og:description" content="Official Telegram apps support custom cloud themes as of version 5.11. Everyone is welcome to create and share their themes.…"> + <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?215" 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">Creating Custom Cloud Themes</h1> + + <div id="dev_page_content"><p>Official Telegram apps support <a href="https://telegram.org/blog/scheduled-reminders-themes#custom-cloud-themes">custom cloud themes</a> as of version <strong>5.11</strong>. Everyone is welcome to create and share their themes.</p> +<h3><a class="anchor" name="creating-a-theme" href="#creating-a-theme"><i class="anchor-icon"></i></a>Creating a theme</h3> +<p>You can use the <a href="https://themes.contest.com/"><strong>Online Theme Editor</strong></a> (use a <strong>VPN</strong> if it is blocked in your country) to create new Telegram themes from scratch or edit existing ones. Simply log in with your Telegram account and pick a platform to start <strong>editing</strong> the relevant theme file – or <strong>import</strong> an existing theme.</p> +<ul> +<li>Set a <strong>name</strong> for your theme using the <code>name</code> attribute</li> +<li>Set colors for elements using <strong>hex codes</strong> or the <strong>color picker</strong></li> +<li>Press ‘Save and apply theme’ to <strong>push changes</strong> to all users of your theme</li> +</ul> +<h3><a class="anchor" name="checking-your-theme-in-app" href="#checking-your-theme-in-app"><i class="anchor-icon"></i></a>Checking your theme in-app</h3> +<p>Once you have <strong>saved</strong> a theme for the first time, Telegram will send you a message with its <a href="#publishing-your-theme">sharing link</a>. Open the link in the app to switch to your theme.</p> +<p>You can always switch to your theme in <em>Settings > Chat Settings</em>. On iOS and MacOS native app – <em>Settings > Appearance</em>.</p> +<h3><a class="anchor" name="publishing-your-theme" href="#publishing-your-theme"><i class="anchor-icon"></i></a>Publishing your theme</h3> +<p>Each theme has a <code>t.me/addtheme</code> <strong>link</strong> which people can use to switch to your theme. You can choose a beautiful short link (e.g., <a href="https://t.me/addtheme/desert"><a href="https://t.me/addtheme/desert">https://t.me/addtheme/desert</a></a>) by changing the <code>shortname</code> attribute. If you add support for multiple platforms, the same link can be used for setting your theme on <strong>all</strong> of them.</p> +<h3><a class="anchor" name="updating-your-theme" href="#updating-your-theme"><i class="anchor-icon"></i></a>Updating your theme</h3> +<p>Your theme gets <strong>updated automatically</strong> for all its users whenever you save and apply changes.</p> +<h3><a class="anchor" name="including-a-chat-background" href="#including-a-chat-background"><i class="anchor-icon"></i></a>Including a chat background</h3> +<p>Your themes can include a <a href="https://telegram.org/blog/backgrounds-2-0">custom wallpaper</a>. To do this, simply go to <em>Settings > Chat Settings > Chat Background</em>. On iOS and MacOS native app – <em>Settings > Appearance > Chat Background</em>.</p> +<p>Open any background and tap the sharing button in the top right corner, then copy its <code>t.me/bg/...</code> link. In the theme file, set this link as the value of the <code>wallpaper</code> attribute.</p> +<p>For Telegram Desktop, if you want to make the background <strong>tiled</strong>, add <code>?mode=tiled</code> at the end of the link. For example:</p> +<pre><code>wallpaper: t.me/bg/-jI7lnO3DFABAAAA1vXcFaZP_Vo?mode=tiled</code></pre> +<h3><a class="anchor" name="creating-themes-in-app" href="#creating-themes-in-app"><i class="anchor-icon"></i></a>Creating themes in-app</h3> +<p>If you prefer a more WYSIWYG approach, try creating themes using the in-app tools for customizing appearance. Telegram for <a href="https://telegra.ph/Create-Theme-Android-FAQ">Android</a> and <a href="https://telegra.ph/Create-Theme-Desktop-FAQ">Telegram Desktop</a> have advanced in-app theme editors. Telegram for iOS and MacOS allow choosing a custom accent color from the color wheel and a background, then saving the result as a custom theme.</p> +<p>Once you have saved a new theme in any of the apps, it also becomes accessible in the <a href="https://themes.contest.com/">online editor</a>.</p> +<p><strong>Read more</strong></p> +<ul> +<li><a href="https://telegra.ph/Create-Theme-Android-FAQ">Android Theme Editor</a></li> +<li><a href="https://telegra.ph/Create-Theme-Desktop-FAQ">Telegram Desktop Theme Editor</a></li> +</ul> +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/BotInlineMessage.html b/data/core.telegram.org/type/BotInlineMessage.html new file mode 100644 index 0000000000..316feda9a8 --- /dev/null +++ b/data/core.telegram.org/type/BotInlineMessage.html @@ -0,0 +1,168 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>BotInlineMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Inline message"> + <meta property="og:title" content="BotInlineMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Inline message"> + <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?215" 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="/type/BotInlineMessage" >BotInlineMessage</a></li></ul></div> + <h1 id="dev_page_title">BotInlineMessage</h1> + + <div id="dev_page_content"><p>Inline message</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/botInlineMessageMediaAuto" >botInlineMessageMediaAuto</a>#764cf810 flags:<a href="/type/%23" >#</a> message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" class="current_page_link" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageText" >botInlineMessageText</a>#8c7f65e2 flags:<a href="/type/%23" >#</a> no_webpage:flags.0?true message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" class="current_page_link" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageMediaGeo" >botInlineMessageMediaGeo</a>#51846fd flags:<a href="/type/%23" >#</a> geo:<a href="/type/GeoPoint" >GeoPoint</a> heading:flags.0?<a href="/type/int" >int</a> period:flags.1?<a href="/type/int" >int</a> proximity_notification_radius:flags.3?<a href="/type/int" >int</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" class="current_page_link" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageMediaVenue" >botInlineMessageMediaVenue</a>#8a86659c flags:<a href="/type/%23" >#</a> geo:<a href="/type/GeoPoint" >GeoPoint</a> title:<a href="/type/string" >string</a> address:<a href="/type/string" >string</a> provider:<a href="/type/string" >string</a> venue_id:<a href="/type/string" >string</a> venue_type:<a href="/type/string" >string</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" class="current_page_link" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageMediaContact" >botInlineMessageMediaContact</a>#18d1cdc2 flags:<a href="/type/%23" >#</a> phone_number:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> vcard:<a href="/type/string" >string</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" class="current_page_link" >BotInlineMessage</a>; +<a href="/constructor/botInlineMessageMediaInvoice" >botInlineMessageMediaInvoice</a>#354a9b09 flags:<a href="/type/%23" >#</a> shipping_address_requested:flags.1?true test:flags.3?true title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.0?<a href="/type/WebDocument" >WebDocument</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> = <a href="/type/BotInlineMessage" class="current_page_link" >BotInlineMessage</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/botInlineMessageMediaAuto">botInlineMessageMediaAuto</a></td> +<td>Send whatever media is attached to the <a href="/constructor/botInlineMediaResult">botInlineMediaResult</a></td> +</tr> +<tr> +<td><a href="/constructor/botInlineMessageText">botInlineMessageText</a></td> +<td>Send a simple text message</td> +</tr> +<tr> +<td><a href="/constructor/botInlineMessageMediaGeo">botInlineMessageMediaGeo</a></td> +<td>Send a geolocation</td> +</tr> +<tr> +<td><a href="/constructor/botInlineMessageMediaVenue">botInlineMessageMediaVenue</a></td> +<td>Send a venue</td> +</tr> +<tr> +<td><a href="/constructor/botInlineMessageMediaContact">botInlineMessageMediaContact</a></td> +<td>Send a contact</td> +</tr> +<tr> +<td><a href="/constructor/botInlineMessageMediaInvoice">botInlineMessageMediaInvoice</a></td> +<td>Send an invoice</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/DialogPeer.html b/data/core.telegram.org/type/DialogPeer.html new file mode 100644 index 0000000000..02a027396f --- /dev/null +++ b/data/core.telegram.org/type/DialogPeer.html @@ -0,0 +1,148 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>DialogPeer</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Peer, or all peers in a folder"> + <meta property="og:title" content="DialogPeer"> + <meta property="og:image" content=""> + <meta property="og:description" content="Peer, or all peers in a folder"> + <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?215" 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="/type/DialogPeer" >DialogPeer</a></li></ul></div> + <h1 id="dev_page_title">DialogPeer</h1> + + <div id="dev_page_content"><p>Peer, or all peers in a folder</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/dialogPeer" >dialogPeer</a>#e56dbf05 peer:<a href="/type/Peer" >Peer</a> = <a href="/type/DialogPeer" class="current_page_link" >DialogPeer</a>; +<a href="/constructor/dialogPeerFolder" >dialogPeerFolder</a>#514519e2 folder_id:<a href="/type/int" >int</a> = <a href="/type/DialogPeer" class="current_page_link" >DialogPeer</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/dialogPeer">dialogPeer</a></td> +<td>Peer</td> +</tr> +<tr> +<td><a href="/constructor/dialogPeerFolder">dialogPeerFolder</a></td> +<td>Folder</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/InputClientProxy.html b/data/core.telegram.org/type/InputFile.html similarity index 85% rename from data/core.telegram.org/type/InputClientProxy.html rename to data/core.telegram.org/type/InputFile.html index 2e7b988df4..3b71dbb92a 100644 --- a/data/core.telegram.org/type/InputClientProxy.html +++ b/data/core.telegram.org/type/InputFile.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>InputClientProxy</title> + <title>InputFile</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Info about an MTProxy used to connect."> - <meta property="og:title" content="InputClientProxy"> + <meta property="description" content="Defines a file uploaded by the client."> + <meta property="og:title" content="InputFile"> <meta property="og:image" content=""> - <meta property="og:description" content="Info about an MTProxy used to connect."> + <meta property="og:description" content="Defines a file uploaded by the client."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/InputClientProxy" >InputClientProxy</a></li></ul></div> - <h1 id="dev_page_title">InputClientProxy</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/InputFile" >InputFile</a></li></ul></div> + <h1 id="dev_page_title">InputFile</h1> - <div id="dev_page_content"><p>Info about an <a href="/mtproto/mtproto-transports#transport-obfuscation">MTProxy</a> used to connect.</p> + <div id="dev_page_content"><p>Defines a file uploaded by the client.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,8 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputClientProxy" >inputClientProxy</a>#75588b3f address:<a href="/type/string" >string</a> port:<a href="/type/int" >int</a> = <a href="/type/InputClientProxy" class="current_page_link" >InputClientProxy</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputFile" >inputFile</a>#f52ff27f id:<a href="/type/long" >long</a> parts:<a href="/type/int" >int</a> name:<a href="/type/string" >string</a> md5_checksum:<a href="/type/string" >string</a> = <a href="/type/InputFile" class="current_page_link" >InputFile</a>; +<a href="/constructor/inputFileBig" >inputFileBig</a>#fa4f0bb5 id:<a href="/type/long" >long</a> parts:<a href="/type/int" >int</a> name:<a href="/type/string" >string</a> = <a href="/type/InputFile" class="current_page_link" >InputFile</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -63,13 +64,15 @@ </thead> <tbody> <tr> -<td><a href="/constructor/inputClientProxy">inputClientProxy</a></td> -<td>Info about an <a href="/mtproto/mtproto-transports#transport-obfuscation">MTProxy</a> used to connect.</td> +<td><a href="/constructor/inputFile">inputFile</a></td> +<td>Defines a file saved in parts using the method <a href="/method/upload.saveFilePart">upload.saveFilePart</a>.</td> +</tr> +<tr> +<td><a href="/constructor/inputFileBig">inputFileBig</a></td> +<td>Assigns a big file (over 10Mb in size), saved in part using the method <a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a>.</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="#mtproto-transports" id="mtproto-transports" name="mtproto-transports"><i class="anchor-icon"></i></a><a href="/mtproto/mtproto-transports">MTProto transports</a></h4></div> +</table></div> </div> diff --git a/data/core.telegram.org/type/StatsDateRangeDays.html b/data/core.telegram.org/type/InputGroupCall.html similarity index 90% rename from data/core.telegram.org/type/StatsDateRangeDays.html rename to data/core.telegram.org/type/InputGroupCall.html index 00204cac14..c1dc72f9a4 100644 --- a/data/core.telegram.org/type/StatsDateRangeDays.html +++ b/data/core.telegram.org/type/InputGroupCall.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>StatsDateRangeDays</title> + <title>InputGroupCall</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Channel statistics date range"> - <meta property="og:title" content="StatsDateRangeDays"> + <meta property="description" content="Indicates a group call"> + <meta property="og:title" content="InputGroupCall"> <meta property="og:image" content=""> - <meta property="og:description" content="Channel statistics date range"> + <meta property="og:description" content="Indicates a group call"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/StatsDateRangeDays" >StatsDateRangeDays</a></li></ul></div> - <h1 id="dev_page_title">StatsDateRangeDays</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/InputGroupCall" >InputGroupCall</a></li></ul></div> + <h1 id="dev_page_title">InputGroupCall</h1> - <div id="dev_page_content"><p>Channel statistics date range</p> + <div id="dev_page_content"><p>Indicates a group call</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/statsDateRangeDays" >statsDateRangeDays</a>#b637edaf min_date:<a href="/type/int" >int</a> max_date:<a href="/type/int" >int</a> = <a href="/type/StatsDateRangeDays" class="current_page_link" >StatsDateRangeDays</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputGroupCall" >inputGroupCall</a>#d8aa840f id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputGroupCall" class="current_page_link" >InputGroupCall</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -63,8 +63,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/statsDateRangeDays">statsDateRangeDays</a></td> -<td>Channel statistics date range</td> +<td><a href="/constructor/inputGroupCall">inputGroupCall</a></td> +<td>Points to a specific group call</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/InputSingleMedia.html b/data/core.telegram.org/type/InputSingleMedia.html deleted file mode 100644 index e414427aa0..0000000000 --- a/data/core.telegram.org/type/InputSingleMedia.html +++ /dev/null @@ -1,148 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>InputSingleMedia</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="A single media in an album or grouped media sent with messages.sendMultiMedia."> - <meta property="og:title" content="InputSingleMedia"> - <meta property="og:image" content=""> - <meta property="og:description" content="A single media in an album or grouped media sent with messages.sendMultiMedia."> - <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?215" 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="/type/InputSingleMedia" >InputSingleMedia</a></li></ul></div> - <h1 id="dev_page_title">InputSingleMedia</h1> - - <div id="dev_page_content"><p>A single media in an <a href="/api/files#albums-grouped-media">album or grouped media</a> sent with <a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/inputSingleMedia" >inputSingleMedia</a>#1cc6e91f flags:<a href="/type/%23" >#</a> media:<a href="/type/InputMedia" >InputMedia</a> random_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> entities:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/InputSingleMedia" class="current_page_link" >InputSingleMedia</a>;</code></pre></p> -<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> -<table class="table"> -<thead> -<tr> -<th>Constructor</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/constructor/inputSingleMedia">inputSingleMedia</a></td> -<td>A single media in an <a href="/api/files#albums-grouped-media">album or grouped media</a> sent with <a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a>.</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="#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="#messagessendmultimedia" id="messagessendmultimedia" name="messagessendmultimedia"><i class="anchor-icon"></i></a><a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a></h4> -<p>Send an <a href="/api/files#albums-grouped-media">album or grouped media</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/core.telegram.org/type/NearestDc.html b/data/core.telegram.org/type/InputWebFileLocation.html similarity index 84% rename from data/core.telegram.org/type/NearestDc.html rename to data/core.telegram.org/type/InputWebFileLocation.html index b39d7f7256..29e25fee26 100644 --- a/data/core.telegram.org/type/NearestDc.html +++ b/data/core.telegram.org/type/InputWebFileLocation.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>NearestDc</title> + <title>InputWebFileLocation</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Object contains info on nearest data centre."> - <meta property="og:title" content="NearestDc"> + <meta property="description" content="Location of remote file"> + <meta property="og:title" content="InputWebFileLocation"> <meta property="og:image" content=""> - <meta property="og:description" content="Object contains info on nearest data centre."> + <meta property="og:description" content="Location of remote file"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/NearestDc" >NearestDc</a></li></ul></div> - <h1 id="dev_page_title">NearestDc</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/InputWebFileLocation" >InputWebFileLocation</a></li></ul></div> + <h1 id="dev_page_title">InputWebFileLocation</h1> - <div id="dev_page_content"><p>Object contains info on nearest data centre.</p> + <div id="dev_page_content"><p>Location of remote file</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,8 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/nearestDc" >nearestDc</a>#8e1a1775 country:<a href="/type/string" >string</a> this_dc:<a href="/type/int" >int</a> nearest_dc:<a href="/type/int" >int</a> = <a href="/type/NearestDc" class="current_page_link" >NearestDc</a>; - ----functions--- - -<a href="/method/help.getNearestDc" >help.getNearestDc</a>#1fb33026 = <a href="/type/NearestDc" class="current_page_link" >NearestDc</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputWebFileLocation" >inputWebFileLocation</a>#c239d686 url:<a href="/type/string" >string</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputWebFileLocation" class="current_page_link" >InputWebFileLocation</a>; +<a href="/constructor/inputWebFileGeoPointLocation" >inputWebFileGeoPointLocation</a>#9f2221c9 geo_point:<a href="/type/InputGeoPoint" >InputGeoPoint</a> access_hash:<a href="/type/long" >long</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> zoom:<a href="/type/int" >int</a> scale:<a href="/type/int" >int</a> = <a href="/type/InputWebFileLocation" class="current_page_link" >InputWebFileLocation</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -67,23 +64,12 @@ </thead> <tbody> <tr> -<td><a href="/constructor/nearestDc">nearestDc</a></td> -<td>Nearest data centre, according to geo-ip.</td> +<td><a href="/constructor/inputWebFileLocation">inputWebFileLocation</a></td> +<td>Location of a remote HTTP(s) file</td> </tr> -</tbody> -</table> -<h3><a class="anchor" href="#methods" id="methods" name="methods"><i class="anchor-icon"></i></a>Methods</h3> -<table class="table"> -<thead> <tr> -<th>Method</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/method/help.getNearestDc">help.getNearestDc</a></td> -<td>Returns info on data centre nearest to the user.</td> +<td><a href="/constructor/inputWebFileGeoPointLocation">inputWebFileGeoPointLocation</a></td> +<td>Geolocation</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/help.InviteText b/data/core.telegram.org/type/LangPackDifference.html similarity index 82% rename from data/core.telegram.org/type/help.InviteText rename to data/core.telegram.org/type/LangPackDifference.html index 8c0e105fe5..23fbb1494f 100644 --- a/data/core.telegram.org/type/help.InviteText +++ b/data/core.telegram.org/type/LangPackDifference.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>help.InviteText</title> + <title>LangPackDifference</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Object contains info on the text of a message with an invitation."> - <meta property="og:title" content="help.InviteText"> + <meta property="description" content="Language pack changes"> + <meta property="og:title" content="LangPackDifference"> <meta property="og:image" content=""> - <meta property="og:description" content="Object contains info on the text of a message with an invitation."> + <meta property="og:description" content="Language pack changes"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/help.InviteText" >help.InviteText</a></li></ul></div> - <h1 id="dev_page_title">help.InviteText</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/LangPackDifference" >LangPackDifference</a></li></ul></div> + <h1 id="dev_page_title">LangPackDifference</h1> - <div id="dev_page_content"><p>Object contains info on the text of a message with an invitation.</p> + <div id="dev_page_content"><p>Language pack changes</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,12 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/help.inviteText" >help.inviteText</a>#18cb9f78 message:<a href="/type/string" >string</a> = <a href="/type/help.InviteText" class="current_page_link" >help.InviteText</a>; +<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><<a href="/type/LangPackString" >LangPackString</a>> = <a href="/type/LangPackDifference" class="current_page_link" >LangPackDifference</a>; ---functions--- -<a href="/method/help.getInviteText" >help.getInviteText</a>#4d392343 = <a href="/type/help.InviteText" class="current_page_link" >help.InviteText</a>;</code></pre></p> +<a href="/method/langpack.getLangPack" >langpack.getLangPack</a>#f2f2330a lang_pack:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> = <a href="/type/LangPackDifference" class="current_page_link" >LangPackDifference</a>; +<a href="/method/langpack.getDifference" >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" class="current_page_link" >LangPackDifference</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -67,8 +68,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/help.inviteText">help.inviteText</a></td> -<td>Text of a text message with an invitation to install application.</td> +<td><a href="/constructor/langPackDifference">langPackDifference</a></td> +<td>Changes to the app's localization pack</td> </tr> </tbody> </table> @@ -82,8 +83,12 @@ </thead> <tbody> <tr> -<td><a href="/method/help.getInviteText">help.getInviteText</a></td> -<td>Returns text of a text message with an invitation.</td> +<td><a href="/method/langpack.getLangPack">langpack.getLangPack</a></td> +<td>Get localization pack strings</td> +</tr> +<tr> +<td><a href="/method/langpack.getDifference">langpack.getDifference</a></td> +<td>Get new strings in languagepack</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/MessageAction.html b/data/core.telegram.org/type/MessageAction.html new file mode 100644 index 0000000000..0df8432505 --- /dev/null +++ b/data/core.telegram.org/type/MessageAction.html @@ -0,0 +1,283 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>MessageAction</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Object describing actions connected to a service message."> + <meta property="og:title" content="MessageAction"> + <meta property="og:image" content=""> + <meta property="og:description" content="Object describing actions connected to a service message."> + <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?215" 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="/type/MessageAction" >MessageAction</a></li></ul></div> + <h1 id="dev_page_title">MessageAction</h1> + + <div id="dev_page_content"><p>Object describing actions connected to a service message.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messageActionEmpty" >messageActionEmpty</a>#b6aef7b0 = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChatCreate" >messageActionChatCreate</a>#bd47cbad title:<a href="/type/string" >string</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChatEditTitle" >messageActionChatEditTitle</a>#b5a1ce5a title:<a href="/type/string" >string</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChatEditPhoto" >messageActionChatEditPhoto</a>#7fcb13a8 photo:<a href="/type/Photo" >Photo</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChatDeletePhoto" >messageActionChatDeletePhoto</a>#95e3fbef = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChatAddUser" >messageActionChatAddUser</a>#15cefd00 users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChatDeleteUser" >messageActionChatDeleteUser</a>#a43f30cc user_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChatJoinedByLink" >messageActionChatJoinedByLink</a>#31224c3 inviter_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChannelCreate" >messageActionChannelCreate</a>#95d2ac92 title:<a href="/type/string" >string</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChatMigrateTo" >messageActionChatMigrateTo</a>#e1037f92 channel_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionChannelMigrateFrom" >messageActionChannelMigrateFrom</a>#ea3948e9 title:<a href="/type/string" >string</a> chat_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionPinMessage" >messageActionPinMessage</a>#94bd38ed = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionHistoryClear" >messageActionHistoryClear</a>#9fbab604 = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionGameScore" >messageActionGameScore</a>#92a72876 game_id:<a href="/type/long" >long</a> score:<a href="/type/int" >int</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionPaymentSentMe" >messageActionPaymentSentMe</a>#8f31b327 flags:<a href="/type/%23" >#</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href="/type/string" >string</a> charge:<a href="/type/PaymentCharge" >PaymentCharge</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionPaymentSent" >messageActionPaymentSent</a>#40699cd0 currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionPhoneCall" >messageActionPhoneCall</a>#80e11a7f flags:<a href="/type/%23" >#</a> video:flags.2?true call_id:<a href="/type/long" >long</a> reason:flags.0?<a href="/type/PhoneCallDiscardReason" >PhoneCallDiscardReason</a> duration:flags.1?<a href="/type/int" >int</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionScreenshotTaken" >messageActionScreenshotTaken</a>#4792929b = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionCustomAction" >messageActionCustomAction</a>#fae69f56 message:<a href="/type/string" >string</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionBotAllowed" >messageActionBotAllowed</a>#abe9affe domain:<a href="/type/string" >string</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionSecureValuesSentMe" >messageActionSecureValuesSentMe</a>#1b287353 values:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValue" >SecureValue</a>> credentials:<a href="/type/SecureCredentialsEncrypted" >SecureCredentialsEncrypted</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionSecureValuesSent" >messageActionSecureValuesSent</a>#d95c6154 types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueType" >SecureValueType</a>> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionContactSignUp" >messageActionContactSignUp</a>#f3f25f76 = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionGeoProximityReached" >messageActionGeoProximityReached</a>#98e0d697 from_id:<a href="/type/Peer" >Peer</a> to_id:<a href="/type/Peer" >Peer</a> distance:<a href="/type/int" >int</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionGroupCall" >messageActionGroupCall</a>#7a0d7f42 flags:<a href="/type/%23" >#</a> call:<a href="/type/InputGroupCall" >InputGroupCall</a> duration:flags.0?<a href="/type/int" >int</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionInviteToGroupCall" >messageActionInviteToGroupCall</a>#502f92f7 call:<a href="/type/InputGroupCall" >InputGroupCall</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionSetMessagesTTL" >messageActionSetMessagesTTL</a>#aa1afbfd period:<a href="/type/int" >int</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionGroupCallScheduled" >messageActionGroupCallScheduled</a>#b3a07661 call:<a href="/type/InputGroupCall" >InputGroupCall</a> schedule_date:<a href="/type/int" >int</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>; +<a href="/constructor/messageActionSetChatTheme" >messageActionSetChatTheme</a>#aa786345 emoticon:<a href="/type/string" >string</a> = <a href="/type/MessageAction" class="current_page_link" >MessageAction</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/messageActionEmpty">messageActionEmpty</a></td> +<td>Empty constructor.</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChatCreate">messageActionChatCreate</a></td> +<td>Group created</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChatEditTitle">messageActionChatEditTitle</a></td> +<td>Group name changed.</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChatEditPhoto">messageActionChatEditPhoto</a></td> +<td>Group profile changed</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChatDeletePhoto">messageActionChatDeletePhoto</a></td> +<td>Group profile photo removed.</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChatAddUser">messageActionChatAddUser</a></td> +<td>New member in the group</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChatDeleteUser">messageActionChatDeleteUser</a></td> +<td>User left the group.</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChatJoinedByLink">messageActionChatJoinedByLink</a></td> +<td>A user joined the chat via an invite link</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChannelCreate">messageActionChannelCreate</a></td> +<td>The channel was created</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChatMigrateTo">messageActionChatMigrateTo</a></td> +<td>Indicates the chat was <a href="/api/channel">migrated</a> to the specified supergroup</td> +</tr> +<tr> +<td><a href="/constructor/messageActionChannelMigrateFrom">messageActionChannelMigrateFrom</a></td> +<td>Indicates the channel was <a href="/api/channel">migrated</a> from the specified chat</td> +</tr> +<tr> +<td><a href="/constructor/messageActionPinMessage">messageActionPinMessage</a></td> +<td>A message was pinned</td> +</tr> +<tr> +<td><a href="/constructor/messageActionHistoryClear">messageActionHistoryClear</a></td> +<td>Chat history was cleared</td> +</tr> +<tr> +<td><a href="/constructor/messageActionGameScore">messageActionGameScore</a></td> +<td>Someone scored in a game</td> +</tr> +<tr> +<td><a href="/constructor/messageActionPaymentSentMe">messageActionPaymentSentMe</a></td> +<td>A user just sent a payment to me (a bot)</td> +</tr> +<tr> +<td><a href="/constructor/messageActionPaymentSent">messageActionPaymentSent</a></td> +<td>A payment was sent</td> +</tr> +<tr> +<td><a href="/constructor/messageActionPhoneCall">messageActionPhoneCall</a></td> +<td>A phone call</td> +</tr> +<tr> +<td><a href="/constructor/messageActionScreenshotTaken">messageActionScreenshotTaken</a></td> +<td>A screenshot of the chat was taken</td> +</tr> +<tr> +<td><a href="/constructor/messageActionCustomAction">messageActionCustomAction</a></td> +<td>Custom action (most likely not supported by the current layer, an upgrade might be needed)</td> +</tr> +<tr> +<td><a href="/constructor/messageActionBotAllowed">messageActionBotAllowed</a></td> +<td>The domain name of the website on which the user has logged in. <a href="/widgets/login">More about Telegram Login »</a></td> +</tr> +<tr> +<td><a href="/constructor/messageActionSecureValuesSentMe">messageActionSecureValuesSentMe</a></td> +<td>Secure <a href="/passport">telegram passport</a> values were received</td> +</tr> +<tr> +<td><a href="/constructor/messageActionSecureValuesSent">messageActionSecureValuesSent</a></td> +<td>Request for secure <a href="/passport">telegram passport</a> values was sent</td> +</tr> +<tr> +<td><a href="/constructor/messageActionContactSignUp">messageActionContactSignUp</a></td> +<td>A contact just signed up to telegram</td> +</tr> +<tr> +<td><a href="/constructor/messageActionGeoProximityReached">messageActionGeoProximityReached</a></td> +<td>We are now in proximity of this user (triggered by the other user, by sending a <a href="/constructor/messageMediaGeoLive">live geolocation with the proximity_notification_radius flag</a>)</td> +</tr> +<tr> +<td><a href="/constructor/messageActionGroupCall">messageActionGroupCall</a></td> +<td>The group call has ended</td> +</tr> +<tr> +<td><a href="/constructor/messageActionInviteToGroupCall">messageActionInviteToGroupCall</a></td> +<td>A set of users was invited to the group call</td> +</tr> +<tr> +<td><a href="/constructor/messageActionSetMessagesTTL">messageActionSetMessagesTTL</a></td> +<td>You changed the Time-To-Live of your messages in this chat.</td> +</tr> +<tr> +<td><a href="/constructor/messageActionGroupCallScheduled">messageActionGroupCallScheduled</a></td> +<td>A group call was scheduled</td> +</tr> +<tr> +<td><a href="/constructor/messageActionSetChatTheme">messageActionSetChatTheme</a></td> +<td>The chat theme was changed</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/ImportedContact.html b/data/core.telegram.org/type/MessageInteractionCounters.html similarity index 88% rename from data/core.telegram.org/type/ImportedContact.html rename to data/core.telegram.org/type/MessageInteractionCounters.html index 9b2c4ab572..e5aa85ea07 100644 --- a/data/core.telegram.org/type/ImportedContact.html +++ b/data/core.telegram.org/type/MessageInteractionCounters.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>ImportedContact</title> + <title>MessageInteractionCounters</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Object contains info on a successfully imported contact."> - <meta property="og:title" content="ImportedContact"> + <meta property="description" content="Message interaction counters"> + <meta property="og:title" content="MessageInteractionCounters"> <meta property="og:image" content=""> - <meta property="og:description" content="Object contains info on a successfully imported contact."> + <meta property="og:description" content="Message interaction counters"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/ImportedContact" >ImportedContact</a></li></ul></div> - <h1 id="dev_page_title">ImportedContact</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/MessageInteractionCounters" >MessageInteractionCounters</a></li></ul></div> + <h1 id="dev_page_title">MessageInteractionCounters</h1> - <div id="dev_page_content"><p>Object contains info on a successfully imported contact.</p> + <div id="dev_page_content"><p>Message interaction counters</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/importedContact" >importedContact</a>#c13e3c50 user_id:<a href="/type/long" >long</a> client_id:<a href="/type/long" >long</a> = <a href="/type/ImportedContact" class="current_page_link" >ImportedContact</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageInteractionCounters" >messageInteractionCounters</a>#ad4fc9bd msg_id:<a href="/type/int" >int</a> views:<a href="/type/int" >int</a> forwards:<a href="/type/int" >int</a> = <a href="/type/MessageInteractionCounters" class="current_page_link" >MessageInteractionCounters</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -63,8 +63,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/importedContact">importedContact</a></td> -<td>Successfully imported contact.</td> +<td><a href="/constructor/messageInteractionCounters">messageInteractionCounters</a></td> +<td>Message interaction counters</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/InputWebDocument.html b/data/core.telegram.org/type/PageListItem.html similarity index 87% rename from data/core.telegram.org/type/InputWebDocument.html rename to data/core.telegram.org/type/PageListItem.html index 574c186612..72eaddf3ea 100644 --- a/data/core.telegram.org/type/InputWebDocument.html +++ b/data/core.telegram.org/type/PageListItem.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>InputWebDocument</title> + <title>PageListItem</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Specifies a document that will have to be downloaded from the URL by the telegram servers"> - <meta property="og:title" content="InputWebDocument"> + <meta property="description" content="Item in block list"> + <meta property="og:title" content="PageListItem"> <meta property="og:image" content=""> - <meta property="og:description" content="Specifies a document that will have to be downloaded from the URL by the telegram servers"> + <meta property="og:description" content="Item in block list"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/InputWebDocument" >InputWebDocument</a></li></ul></div> - <h1 id="dev_page_title">InputWebDocument</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/PageListItem" >PageListItem</a></li></ul></div> + <h1 id="dev_page_title">PageListItem</h1> - <div id="dev_page_content"><p>Specifies a document that will have to be downloaded from the URL by the telegram servers</p> + <div id="dev_page_content"><p>Item in block list</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,8 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputWebDocument" >inputWebDocument</a>#9bed434d url:<a href="/type/string" >string</a> size:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> = <a href="/type/InputWebDocument" class="current_page_link" >InputWebDocument</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/pageListItemText" >pageListItemText</a>#b92fb6cd text:<a href="/type/RichText" >RichText</a> = <a href="/type/PageListItem" class="current_page_link" >PageListItem</a>; +<a href="/constructor/pageListItemBlocks" >pageListItemBlocks</a>#25e073fc blocks:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PageBlock" >PageBlock</a>> = <a href="/type/PageListItem" class="current_page_link" >PageListItem</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -63,8 +64,12 @@ </thead> <tbody> <tr> -<td><a href="/constructor/inputWebDocument">inputWebDocument</a></td> -<td>The document</td> +<td><a href="/constructor/pageListItemText">pageListItemText</a></td> +<td>List item</td> +</tr> +<tr> +<td><a href="/constructor/pageListItemBlocks">pageListItemBlocks</a></td> +<td>List item</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/PageTableCell.html b/data/core.telegram.org/type/PageTableCell.html new file mode 100644 index 0000000000..0cd1136272 --- /dev/null +++ b/data/core.telegram.org/type/PageTableCell.html @@ -0,0 +1,143 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>PageTableCell</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Represents a table in an instant view table"> + <meta property="og:title" content="PageTableCell"> + <meta property="og:image" content=""> + <meta property="og:description" content="Represents a table in an instant view table"> + <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?215" 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="/type/PageTableCell" >PageTableCell</a></li></ul></div> + <h1 id="dev_page_title">PageTableCell</h1> + + <div id="dev_page_content"><p>Represents a table in an <a href="https://instantview.telegram.org">instant view table</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/pageTableCell" >pageTableCell</a>#34566b6a flags:<a href="/type/%23" >#</a> header:flags.0?true align_center:flags.3?true align_right:flags.4?true valign_middle:flags.5?true valign_bottom:flags.6?true text:flags.7?<a href="/type/RichText" >RichText</a> colspan:flags.1?<a href="/type/int" >int</a> rowspan:flags.2?<a href="/type/int" >int</a> = <a href="/type/PageTableCell" class="current_page_link" >PageTableCell</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/pageTableCell">pageTableCell</a></td> +<td>Table cell</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/PaymentRequestedInfo.html b/data/core.telegram.org/type/PaymentRequestedInfo.html new file mode 100644 index 0000000000..884f917385 --- /dev/null +++ b/data/core.telegram.org/type/PaymentRequestedInfo.html @@ -0,0 +1,143 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>PaymentRequestedInfo</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Requested payment info"> + <meta property="og:title" content="PaymentRequestedInfo"> + <meta property="og:image" content=""> + <meta property="og:description" content="Requested payment 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?215" 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="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a></li></ul></div> + <h1 id="dev_page_title">PaymentRequestedInfo</h1> + + <div id="dev_page_content"><p>Requested payment info</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/paymentRequestedInfo" >paymentRequestedInfo</a>#909c3f94 flags:<a href="/type/%23" >#</a> name:flags.0?<a href="/type/string" >string</a> phone:flags.1?<a href="/type/string" >string</a> email:flags.2?<a href="/type/string" >string</a> shipping_address:flags.3?<a href="/type/PostAddress" >PostAddress</a> = <a href="/type/PaymentRequestedInfo" class="current_page_link" >PaymentRequestedInfo</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/paymentRequestedInfo">paymentRequestedInfo</a></td> +<td>Order info provided by the user</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/Peer.html b/data/core.telegram.org/type/Peer.html new file mode 100644 index 0000000000..6ba68784c5 --- /dev/null +++ b/data/core.telegram.org/type/Peer.html @@ -0,0 +1,153 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Peer</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Chat partner or group."> + <meta property="og:title" content="Peer"> + <meta property="og:image" content=""> + <meta property="og:description" content="Chat partner or group."> + <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?215" 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="/type/Peer" >Peer</a></li></ul></div> + <h1 id="dev_page_title">Peer</h1> + + <div id="dev_page_content"><p>Chat partner or group.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/peerUser" >peerUser</a>#59511722 user_id:<a href="/type/long" >long</a> = <a href="/type/Peer" class="current_page_link" >Peer</a>; +<a href="/constructor/peerChat" >peerChat</a>#36c6019a chat_id:<a href="/type/long" >long</a> = <a href="/type/Peer" class="current_page_link" >Peer</a>; +<a href="/constructor/peerChannel" >peerChannel</a>#a2a5371e channel_id:<a href="/type/long" >long</a> = <a href="/type/Peer" class="current_page_link" >Peer</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/peerUser">peerUser</a></td> +<td>Chat partner</td> +</tr> +<tr> +<td><a href="/constructor/peerChat">peerChat</a></td> +<td>Group.</td> +</tr> +<tr> +<td><a href="/constructor/peerChannel">peerChannel</a></td> +<td>Channel/supergroup</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/help.RecentMeUrls b/data/core.telegram.org/type/PeerNotifySettings.html similarity index 85% rename from data/core.telegram.org/type/help.RecentMeUrls rename to data/core.telegram.org/type/PeerNotifySettings.html index ecbddce68b..c49c82e618 100644 --- a/data/core.telegram.org/type/help.RecentMeUrls +++ b/data/core.telegram.org/type/PeerNotifySettings.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>Help.RecentMeUrls</title> + <title>PeerNotifySettings</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Recent t.me URLs"> - <meta property="og:title" content="Help.RecentMeUrls"> + <meta property="description" content="Notification settings."> + <meta property="og:title" content="PeerNotifySettings"> <meta property="og:image" content=""> - <meta property="og:description" content="Recent t.me URLs"> + <meta property="og:description" content="Notification settings."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/help.RecentMeUrls" >Help.RecentMeUrls</a></li></ul></div> - <h1 id="dev_page_title">Help.RecentMeUrls</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/PeerNotifySettings" >PeerNotifySettings</a></li></ul></div> + <h1 id="dev_page_title">PeerNotifySettings</h1> - <div id="dev_page_content"><p>Recent t.me URLs</p> + <div id="dev_page_content"><p>Notification settings.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/help.recentMeUrls" >help.recentMeUrls</a>#e0310d7 urls:<a href="/type/Vector%20t" >Vector</a><<a href="/type/RecentMeUrl" >RecentMeUrl</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/help.RecentMeUrls" class="current_page_link" >help.RecentMeUrls</a>; +<pre class="page_scheme"><code><a href="/constructor/peerNotifySettings" >peerNotifySettings</a>#af509d20 flags:<a href="/type/%23" >#</a> show_previews:flags.0?<a href="/type/Bool" >Bool</a> silent:flags.1?<a href="/type/Bool" >Bool</a> mute_until:flags.2?<a href="/type/int" >int</a> sound:flags.3?<a href="/type/string" >string</a> = <a href="/type/PeerNotifySettings" class="current_page_link" >PeerNotifySettings</a>; ---functions--- -<a href="/method/help.getRecentMeUrls" >help.getRecentMeUrls</a>#3dc0f114 referer:<a href="/type/string" >string</a> = <a href="/type/help.RecentMeUrls" class="current_page_link" >help.RecentMeUrls</a>;</code></pre></p> +<a href="/method/account.getNotifySettings" >account.getNotifySettings</a>#12b3ad31 peer:<a href="/type/InputNotifyPeer" >InputNotifyPeer</a> = <a href="/type/PeerNotifySettings" class="current_page_link" >PeerNotifySettings</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -67,8 +67,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/help.recentMeUrls">help.recentMeUrls</a></td> -<td>Recent t.me URLs</td> +<td><a href="/constructor/peerNotifySettings">peerNotifySettings</a></td> +<td>Notification settings.</td> </tr> </tbody> </table> @@ -82,8 +82,8 @@ </thead> <tbody> <tr> -<td><a href="/method/help.getRecentMeUrls">help.getRecentMeUrls</a></td> -<td>Get recently used <code>t.me</code> links</td> +<td><a href="/method/account.getNotifySettings">account.getNotifySettings</a></td> +<td>Gets current notification settings for a given user/group, from all users/all groups.</td> </tr> </tbody> </table></div> diff --git a/data/corefork.telegram.org/type/Photo.html b/data/core.telegram.org/type/Photo.html similarity index 98% rename from data/corefork.telegram.org/type/Photo.html rename to data/core.telegram.org/type/Photo.html index f1e863dd51..f81614edab 100644 --- a/data/corefork.telegram.org/type/Photo.html +++ b/data/core.telegram.org/type/Photo.html @@ -111,9 +111,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -130,7 +130,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/type/SecureFile.html b/data/core.telegram.org/type/SecureFile.html new file mode 100644 index 0000000000..bd82e09aee --- /dev/null +++ b/data/core.telegram.org/type/SecureFile.html @@ -0,0 +1,151 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>SecureFile</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Secure passport file, for more info see the passport docs »"> + <meta property="og:title" content="SecureFile"> + <meta property="og:image" content=""> + <meta property="og:description" content="Secure passport file, for more info see the passport docs »"> + <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?215" 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="/type/SecureFile" >SecureFile</a></li></ul></div> + <h1 id="dev_page_title">SecureFile</h1> + + <div id="dev_page_content"><p>Secure <a href="/passport">passport</a> file, for more info <a href="/passport/encryption#inputsecurefile">see the passport docs »</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureFileEmpty" >secureFileEmpty</a>#64199744 = <a href="/type/SecureFile" class="current_page_link" >SecureFile</a>; +<a href="/constructor/secureFile" >secureFile</a>#e0277a62 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> size:<a href="/type/int" >int</a> dc_id:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> file_hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureFile" class="current_page_link" >SecureFile</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/secureFileEmpty">secureFileEmpty</a></td> +<td>Empty constructor</td> +</tr> +<tr> +<td><a href="/constructor/secureFile">secureFile</a></td> +<td>Secure file</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4> +<h4><a class="anchor" href="#telegram-passport-encryption-details" id="telegram-passport-encryption-details" name="telegram-passport-encryption-details"><i class="anchor-icon"></i></a><a href="/passport/encryption">Telegram Passport Encryption Details</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/phone.PhoneCall b/data/core.telegram.org/type/Theme.html similarity index 77% rename from data/core.telegram.org/type/phone.PhoneCall rename to data/core.telegram.org/type/Theme.html index c214b95a23..a7fbcafad3 100644 --- a/data/core.telegram.org/type/phone.PhoneCall +++ b/data/core.telegram.org/type/Theme.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>Phone.PhoneCall</title> + <title>Theme</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Phone call"> - <meta property="og:title" content="Phone.PhoneCall"> + <meta property="description" content="Cloud theme"> + <meta property="og:title" content="Theme"> <meta property="og:image" content=""> - <meta property="og:description" content="Phone call"> + <meta property="og:description" content="Cloud theme"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/phone.PhoneCall" >Phone.PhoneCall</a></li></ul></div> - <h1 id="dev_page_title">Phone.PhoneCall</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/Theme" >Theme</a></li></ul></div> + <h1 id="dev_page_title">Theme</h1> - <div id="dev_page_content"><p>Phone call</p> + <div id="dev_page_content"><p>Cloud theme</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,13 +52,13 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/phone.phoneCall" >phone.phoneCall</a>#ec82e140 phone_call:<a href="/type/PhoneCall" >PhoneCall</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/phone.PhoneCall" class="current_page_link" >phone.PhoneCall</a>; +<pre class="page_scheme"><code><a href="/constructor/theme" >theme</a>#e802b8dc flags:<a href="/type/%23" >#</a> creator:flags.0?true default:flags.1?true for_chat:flags.5?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> slug:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> document:flags.2?<a href="/type/Document" >Document</a> settings:flags.3?<a href="/type/ThemeSettings" >ThemeSettings</a> installs_count:flags.4?<a href="/type/int" >int</a> = <a href="/type/Theme" class="current_page_link" >Theme</a>; ---functions--- -<a href="/method/phone.requestCall" >phone.requestCall</a>#42ff96ed flags:<a href="/type/%23" >#</a> video:flags.0?true user_id:<a href="/type/InputUser" >InputUser</a> random_id:<a href="/type/int" >int</a> g_a_hash:<a href="/type/bytes" >bytes</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/phone.PhoneCall" class="current_page_link" >phone.PhoneCall</a>; -<a href="/method/phone.acceptCall" >phone.acceptCall</a>#3bd2b4a0 peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> g_b:<a href="/type/bytes" >bytes</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/phone.PhoneCall" class="current_page_link" >phone.PhoneCall</a>; -<a href="/method/phone.confirmCall" >phone.confirmCall</a>#2efe1722 peer:<a href="/type/InputPhoneCall" >InputPhoneCall</a> g_a:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/phone.PhoneCall" class="current_page_link" >phone.PhoneCall</a>;</code></pre></p> +<a href="/method/account.createTheme" >account.createTheme</a>#8432c21f flags:<a href="/type/%23" >#</a> slug:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> document:flags.2?<a href="/type/InputDocument" >InputDocument</a> settings:flags.3?<a href="/type/InputThemeSettings" >InputThemeSettings</a> = <a href="/type/Theme" class="current_page_link" >Theme</a>; +<a href="/method/account.updateTheme" >account.updateTheme</a>#5cb367d5 flags:<a href="/type/%23" >#</a> format:<a href="/type/string" >string</a> theme:<a href="/type/InputTheme" >InputTheme</a> slug:flags.0?<a href="/type/string" >string</a> title:flags.1?<a href="/type/string" >string</a> document:flags.2?<a href="/type/InputDocument" >InputDocument</a> settings:flags.3?<a href="/type/InputThemeSettings" >InputThemeSettings</a> = <a href="/type/Theme" class="current_page_link" >Theme</a>; +<a href="/method/account.getTheme" >account.getTheme</a>#8d9d742b format:<a href="/type/string" >string</a> theme:<a href="/type/InputTheme" >InputTheme</a> document_id:<a href="/type/long" >long</a> = <a href="/type/Theme" class="current_page_link" >Theme</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -69,8 +69,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/phone.phoneCall">phone.phoneCall</a></td> -<td>A VoIP phone call</td> +<td><a href="/constructor/theme">theme</a></td> +<td>Theme</td> </tr> </tbody> </table> @@ -84,16 +84,16 @@ </thead> <tbody> <tr> -<td><a href="/method/phone.requestCall">phone.requestCall</a></td> -<td>Start a telegram phone call</td> +<td><a href="/method/account.createTheme">account.createTheme</a></td> +<td>Create a theme</td> </tr> <tr> -<td><a href="/method/phone.acceptCall">phone.acceptCall</a></td> -<td>Accept incoming call</td> +<td><a href="/method/account.updateTheme">account.updateTheme</a></td> +<td>Update theme</td> </tr> <tr> -<td><a href="/method/phone.confirmCall">phone.confirmCall</a></td> -<td><a href="/api/end-to-end/voice-calls">Complete phone call E2E encryption key exchange »</a></td> +<td><a href="/method/account.getTheme">account.getTheme</a></td> +<td>Get theme information</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/BotInfo.html b/data/core.telegram.org/type/TopPeer.html similarity index 90% rename from data/core.telegram.org/type/BotInfo.html rename to data/core.telegram.org/type/TopPeer.html index d988f6935f..94574c28ac 100644 --- a/data/core.telegram.org/type/BotInfo.html +++ b/data/core.telegram.org/type/TopPeer.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>BotInfo</title> + <title>TopPeer</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Info about bots (available bot commands, etc)"> - <meta property="og:title" content="BotInfo"> + <meta property="description" content="Top peer"> + <meta property="og:title" content="TopPeer"> <meta property="og:image" content=""> - <meta property="og:description" content="Info about bots (available bot commands, etc)"> + <meta property="og:description" content="Top peer"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/BotInfo" >BotInfo</a></li></ul></div> - <h1 id="dev_page_title">BotInfo</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/TopPeer" >TopPeer</a></li></ul></div> + <h1 id="dev_page_title">TopPeer</h1> - <div id="dev_page_content"><p>Info about bots (available bot commands, etc)</p> + <div id="dev_page_content"><p>Top peer</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/botInfo" >botInfo</a>#1b74b335 user_id:<a href="/type/long" >long</a> description:<a href="/type/string" >string</a> commands:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotCommand" >BotCommand</a>> = <a href="/type/BotInfo" class="current_page_link" >BotInfo</a>;</code></pre></p> +<pre class="page_scheme"><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" class="current_page_link" >TopPeer</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -63,8 +63,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/botInfo">botInfo</a></td> -<td>Info about bots (available bot commands, etc)</td> +<td><a href="/constructor/topPeer">topPeer</a></td> +<td>Top peer</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/RecentMeUrl.html b/data/core.telegram.org/type/TopPeerCategory.html similarity index 73% rename from data/core.telegram.org/type/RecentMeUrl.html rename to data/core.telegram.org/type/TopPeerCategory.html index 0562d74e7d..dac2ccf4ae 100644 --- a/data/core.telegram.org/type/RecentMeUrl.html +++ b/data/core.telegram.org/type/TopPeerCategory.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>RecentMeUrl</title> + <title>TopPeerCategory</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Recent t.me urls"> - <meta property="og:title" content="RecentMeUrl"> + <meta property="description" content="Top peer category"> + <meta property="og:title" content="TopPeerCategory"> <meta property="og:image" content=""> - <meta property="og:description" content="Recent t.me urls"> + <meta property="og:description" content="Top peer category"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/RecentMeUrl" >RecentMeUrl</a></li></ul></div> - <h1 id="dev_page_title">RecentMeUrl</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/TopPeerCategory" >TopPeerCategory</a></li></ul></div> + <h1 id="dev_page_title">TopPeerCategory</h1> - <div id="dev_page_content"><p>Recent t.me urls</p> + <div id="dev_page_content"><p>Top peer category</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,14 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/recentMeUrlUnknown" >recentMeUrlUnknown</a>#46e1d13d url:<a href="/type/string" >string</a> = <a href="/type/RecentMeUrl" class="current_page_link" >RecentMeUrl</a>; -<a href="/constructor/recentMeUrlUser" >recentMeUrlUser</a>#b92c09e2 url:<a href="/type/string" >string</a> user_id:<a href="/type/long" >long</a> = <a href="/type/RecentMeUrl" class="current_page_link" >RecentMeUrl</a>; -<a href="/constructor/recentMeUrlChat" >recentMeUrlChat</a>#b2da71d2 url:<a href="/type/string" >string</a> chat_id:<a href="/type/long" >long</a> = <a href="/type/RecentMeUrl" class="current_page_link" >RecentMeUrl</a>; -<a href="/constructor/recentMeUrlChatInvite" >recentMeUrlChatInvite</a>#eb49081d url:<a href="/type/string" >string</a> chat_invite:<a href="/type/ChatInvite" >ChatInvite</a> = <a href="/type/RecentMeUrl" class="current_page_link" >RecentMeUrl</a>; -<a href="/constructor/recentMeUrlStickerSet" >recentMeUrlStickerSet</a>#bc0a57dc url:<a href="/type/string" >string</a> set:<a href="/type/StickerSetCovered" >StickerSetCovered</a> = <a href="/type/RecentMeUrl" class="current_page_link" >RecentMeUrl</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryBotsPM" >topPeerCategoryBotsPM</a>#ab661b5b = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryBotsInline" >topPeerCategoryBotsInline</a>#148677e2 = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryCorrespondents" >topPeerCategoryCorrespondents</a>#637b7ed = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryGroups" >topPeerCategoryGroups</a>#bd17a14a = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryChannels" >topPeerCategoryChannels</a>#161d9628 = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryPhoneCalls" >topPeerCategoryPhoneCalls</a>#1e76a78c = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryForwardUsers" >topPeerCategoryForwardUsers</a>#a8406ca9 = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryForwardChats" >topPeerCategoryForwardChats</a>#fbeec0f0 = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -67,24 +70,36 @@ </thead> <tbody> <tr> -<td><a href="/constructor/recentMeUrlUnknown">recentMeUrlUnknown</a></td> -<td>Unknown t.me url</td> +<td><a href="/constructor/topPeerCategoryBotsPM">topPeerCategoryBotsPM</a></td> +<td>Most used bots</td> </tr> <tr> -<td><a href="/constructor/recentMeUrlUser">recentMeUrlUser</a></td> -<td>Recent t.me link to a user</td> +<td><a href="/constructor/topPeerCategoryBotsInline">topPeerCategoryBotsInline</a></td> +<td>Most used inline bots</td> </tr> <tr> -<td><a href="/constructor/recentMeUrlChat">recentMeUrlChat</a></td> -<td>Recent t.me link to a chat</td> +<td><a href="/constructor/topPeerCategoryCorrespondents">topPeerCategoryCorrespondents</a></td> +<td>Users we've chatted most frequently with</td> </tr> <tr> -<td><a href="/constructor/recentMeUrlChatInvite">recentMeUrlChatInvite</a></td> -<td>Recent t.me invite link to a chat</td> +<td><a href="/constructor/topPeerCategoryGroups">topPeerCategoryGroups</a></td> +<td>Often-opened groups and supergroups</td> </tr> <tr> -<td><a href="/constructor/recentMeUrlStickerSet">recentMeUrlStickerSet</a></td> -<td>Recent t.me stickerset installation URL</td> +<td><a href="/constructor/topPeerCategoryChannels">topPeerCategoryChannels</a></td> +<td>Most frequently visited channels</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryPhoneCalls">topPeerCategoryPhoneCalls</a></td> +<td>Most frequently called users</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryForwardUsers">topPeerCategoryForwardUsers</a></td> +<td>Users to which the users often forwards messages to</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryForwardChats">topPeerCategoryForwardChats</a></td> +<td>Chats to which the users often forwards messages to</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/Update.html b/data/core.telegram.org/type/Update.html new file mode 100644 index 0000000000..4b82d7af3a --- /dev/null +++ b/data/core.telegram.org/type/Update.html @@ -0,0 +1,603 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Update</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Object contains info on events occured."> + <meta property="og:title" content="Update"> + <meta property="og:image" content=""> + <meta property="og:description" content="Object contains info on events occured."> + <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?215" 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="/type/Update" >Update</a></li></ul></div> + <h1 id="dev_page_title">Update</h1> + + <div id="dev_page_content"><p>Object contains info on events occured.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/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" class="current_page_link" >Update</a>; +<a href="/constructor/updateMessageID" >updateMessageID</a>#4e90bfd6 id:<a href="/type/int" >int</a> random_id:<a href="/type/long" >long</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDeleteMessages" >updateDeleteMessages</a>#a20db0e5 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserTyping" >updateUserTyping</a>#c01e857f user_id:<a href="/type/long" >long</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatUserTyping" >updateChatUserTyping</a>#83487af0 chat_id:<a href="/type/long" >long</a> from_id:<a href="/type/Peer" >Peer</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipants" >updateChatParticipants</a>#7761198 participants:<a href="/type/ChatParticipants" >ChatParticipants</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserStatus" >updateUserStatus</a>#e5bdf8de user_id:<a href="/type/long" >long</a> status:<a href="/type/UserStatus" >UserStatus</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserName" >updateUserName</a>#c3f202e0 user_id:<a href="/type/long" >long</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> username:<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserPhoto" >updateUserPhoto</a>#f227868c user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> photo:<a href="/type/UserProfilePhoto" >UserProfilePhoto</a> previous:<a href="/type/Bool" >Bool</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateNewEncryptedMessage" >updateNewEncryptedMessage</a>#12bcbd9a message:<a href="/type/EncryptedMessage" >EncryptedMessage</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEncryptedChatTyping" >updateEncryptedChatTyping</a>#1710f156 chat_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEncryption" >updateEncryption</a>#b4a2e88d chat:<a href="/type/EncryptedChat" >EncryptedChat</a> date:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEncryptedMessagesRead" >updateEncryptedMessagesRead</a>#38fe25b7 chat_id:<a href="/type/int" >int</a> max_date:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipantAdd" >updateChatParticipantAdd</a>#3dda5451 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> inviter_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipantDelete" >updateChatParticipantDelete</a>#e32f3d77 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDcOptions" >updateDcOptions</a>#8e5e9873 dc_options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DcOption" >DcOption</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateNotifySettings" >updateNotifySettings</a>#bec268ef peer:<a href="/type/NotifyPeer" >NotifyPeer</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateServiceNotification" >updateServiceNotification</a>#ebe46819 flags:<a href="/type/%23" >#</a> popup:flags.0?true inbox_date:flags.1?<a href="/type/int" >int</a> type:<a href="/type/string" >string</a> message:<a href="/type/string" >string</a> media:<a href="/type/MessageMedia" >MessageMedia</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePrivacy" >updatePrivacy</a>#ee3b272a key:<a href="/type/PrivacyKey" >PrivacyKey</a> rules:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PrivacyRule" >PrivacyRule</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserPhone" >updateUserPhone</a>#5492a13 user_id:<a href="/type/long" >long</a> phone:<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadHistoryInbox" >updateReadHistoryInbox</a>#9c974fdf flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> peer:<a href="/type/Peer" >Peer</a> max_id:<a href="/type/int" >int</a> still_unread_count:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadHistoryOutbox" >updateReadHistoryOutbox</a>#2f2f21bf peer:<a href="/type/Peer" >Peer</a> max_id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateWebPage" >updateWebPage</a>#7f891213 webpage:<a href="/type/WebPage" >WebPage</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadMessagesContents" >updateReadMessagesContents</a>#68c13933 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelTooLong" >updateChannelTooLong</a>#108d941f flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> pts:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannel" >updateChannel</a>#635b4c09 channel_id:<a href="/type/long" >long</a> = <a href="/type/Update" class="current_page_link" >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" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadChannelInbox" >updateReadChannelInbox</a>#922e6e10 flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> channel_id:<a href="/type/long" >long</a> max_id:<a href="/type/int" >int</a> still_unread_count:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDeleteChannelMessages" >updateDeleteChannelMessages</a>#c32d5b12 channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelMessageViews" >updateChannelMessageViews</a>#f226ac08 channel_id:<a href="/type/long" >long</a> id:<a href="/type/int" >int</a> views:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipantAdmin" >updateChatParticipantAdmin</a>#d7ca61a2 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> is_admin:<a href="/type/Bool" >Bool</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateNewStickerSet" >updateNewStickerSet</a>#688a30aa stickerset:<a href="/type/messages.StickerSet" >messages.StickerSet</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateStickerSetsOrder" >updateStickerSetsOrder</a>#bb2d201 flags:<a href="/type/%23" >#</a> masks:flags.0?true order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateStickerSets" >updateStickerSets</a>#43ae3dec = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateSavedGifs" >updateSavedGifs</a>#9375341e = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotInlineQuery" >updateBotInlineQuery</a>#496f379c flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> query:<a href="/type/string" >string</a> geo:flags.0?<a href="/type/GeoPoint" >GeoPoint</a> peer_type:flags.1?<a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a> offset:<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotInlineSend" >updateBotInlineSend</a>#12f12a07 flags:<a href="/type/%23" >#</a> user_id:<a href="/type/long" >long</a> query:<a href="/type/string" >string</a> geo:flags.0?<a href="/type/GeoPoint" >GeoPoint</a> id:<a href="/type/string" >string</a> msg_id:flags.1?<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEditChannelMessage" >updateEditChannelMessage</a>#1b3f4df7 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" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotCallbackQuery" >updateBotCallbackQuery</a>#b9cfc48d flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> peer:<a href="/type/Peer" >Peer</a> msg_id:<a href="/type/int" >int</a> chat_instance:<a href="/type/long" >long</a> data:flags.0?<a href="/type/bytes" >bytes</a> game_short_name:flags.1?<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEditMessage" >updateEditMessage</a>#e40370a3 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" class="current_page_link" >Update</a>; +<a href="/constructor/updateInlineBotCallbackQuery" >updateInlineBotCallbackQuery</a>#691e9052 flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> msg_id:<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> chat_instance:<a href="/type/long" >long</a> data:flags.0?<a href="/type/bytes" >bytes</a> game_short_name:flags.1?<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadChannelOutbox" >updateReadChannelOutbox</a>#b75f99a9 channel_id:<a href="/type/long" >long</a> max_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDraftMessage" >updateDraftMessage</a>#ee2bb969 peer:<a href="/type/Peer" >Peer</a> draft:<a href="/type/DraftMessage" >DraftMessage</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadFeaturedStickers" >updateReadFeaturedStickers</a>#571d2742 = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateRecentStickers" >updateRecentStickers</a>#9a422c20 = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateConfig" >updateConfig</a>#a229dd06 = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePtsChanged" >updatePtsChanged</a>#3354678f = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelWebPage" >updateChannelWebPage</a>#2f2ba99f channel_id:<a href="/type/long" >long</a> webpage:<a href="/type/WebPage" >WebPage</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogPinned" >updateDialogPinned</a>#6e6fe51c flags:<a href="/type/%23" >#</a> pinned:flags.0?true folder_id:flags.1?<a href="/type/int" >int</a> peer:<a href="/type/DialogPeer" >DialogPeer</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePinnedDialogs" >updatePinnedDialogs</a>#fa0f3ca2 flags:<a href="/type/%23" >#</a> folder_id:flags.1?<a href="/type/int" >int</a> order:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/DialogPeer" >DialogPeer</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotWebhookJSON" >updateBotWebhookJSON</a>#8317c0c3 data:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotWebhookJSONQuery" >updateBotWebhookJSONQuery</a>#9b9240a6 query_id:<a href="/type/long" >long</a> data:<a href="/type/DataJSON" >DataJSON</a> timeout:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotShippingQuery" >updateBotShippingQuery</a>#b5aefd7d query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> shipping_address:<a href="/type/PostAddress" >PostAddress</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotPrecheckoutQuery" >updateBotPrecheckoutQuery</a>#8caa9a96 flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href="/type/string" >string</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePhoneCall" >updatePhoneCall</a>#ab0f6b1e phone_call:<a href="/type/PhoneCall" >PhoneCall</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateLangPackTooLong" >updateLangPackTooLong</a>#46560264 lang_code:<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateLangPack" >updateLangPack</a>#56022f4d difference:<a href="/type/LangPackDifference" >LangPackDifference</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateFavedStickers" >updateFavedStickers</a>#e511996d = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelReadMessagesContents" >updateChannelReadMessagesContents</a>#44bdd535 channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateContactsReset" >updateContactsReset</a>#7084a7be = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelAvailableMessages" >updateChannelAvailableMessages</a>#b23fc698 channel_id:<a href="/type/long" >long</a> available_min_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogUnreadMark" >updateDialogUnreadMark</a>#e16459c3 flags:<a href="/type/%23" >#</a> unread:flags.0?true peer:<a href="/type/DialogPeer" >DialogPeer</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateMessagePoll" >updateMessagePoll</a>#aca1657b flags:<a href="/type/%23" >#</a> poll_id:<a href="/type/long" >long</a> poll:flags.0?<a href="/type/Poll" >Poll</a> results:<a href="/type/PollResults" >PollResults</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatDefaultBannedRights" >updateChatDefaultBannedRights</a>#54c01850 peer:<a href="/type/Peer" >Peer</a> default_banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateFolderPeers" >updateFolderPeers</a>#19360dc0 folder_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/FolderPeer" >FolderPeer</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePeerSettings" >updatePeerSettings</a>#6a7e7366 peer:<a href="/type/Peer" >Peer</a> settings:<a href="/type/PeerSettings" >PeerSettings</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePeerLocated" >updatePeerLocated</a>#b4afcfb0 peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PeerLocated" >PeerLocated</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateNewScheduledMessage" >updateNewScheduledMessage</a>#39a51dfb message:<a href="/type/Message" >Message</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDeleteScheduledMessages" >updateDeleteScheduledMessages</a>#90866cee peer:<a href="/type/Peer" >Peer</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateTheme" >updateTheme</a>#8216fba3 theme:<a href="/type/Theme" >Theme</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateGeoLiveViewed" >updateGeoLiveViewed</a>#871fb939 peer:<a href="/type/Peer" >Peer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateLoginToken" >updateLoginToken</a>#564fe691 = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateMessagePollVote" >updateMessagePollVote</a>#106395c9 poll_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogFilter" >updateDialogFilter</a>#26ffde7d flags:<a href="/type/%23" >#</a> id:<a href="/type/int" >int</a> filter:flags.0?<a href="/type/DialogFilter" >DialogFilter</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogFilterOrder" >updateDialogFilterOrder</a>#a5d72105 order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogFilters" >updateDialogFilters</a>#3504914f = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePhoneCallSignalingData" >updatePhoneCallSignalingData</a>#2661bf09 phone_call_id:<a href="/type/long" >long</a> data:<a href="/type/bytes" >bytes</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelMessageForwards" >updateChannelMessageForwards</a>#d29a27f4 channel_id:<a href="/type/long" >long</a> id:<a href="/type/int" >int</a> forwards:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadChannelDiscussionInbox" >updateReadChannelDiscussionInbox</a>#d6b19546 flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> top_msg_id:<a href="/type/int" >int</a> read_max_id:<a href="/type/int" >int</a> broadcast_id:flags.0?<a href="/type/long" >long</a> broadcast_post:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadChannelDiscussionOutbox" >updateReadChannelDiscussionOutbox</a>#695c9e7c channel_id:<a href="/type/long" >long</a> top_msg_id:<a href="/type/int" >int</a> read_max_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePeerBlocked" >updatePeerBlocked</a>#246a4b22 peer_id:<a href="/type/Peer" >Peer</a> blocked:<a href="/type/Bool" >Bool</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelUserTyping" >updateChannelUserTyping</a>#8c88c923 flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> top_msg_id:flags.0?<a href="/type/int" >int</a> from_id:<a href="/type/Peer" >Peer</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePinnedMessages" >updatePinnedMessages</a>#ed85eab5 flags:<a href="/type/%23" >#</a> pinned:flags.0?true peer:<a href="/type/Peer" >Peer</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePinnedChannelMessages" >updatePinnedChannelMessages</a>#5bb98608 flags:<a href="/type/%23" >#</a> pinned:flags.0?true channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChat" >updateChat</a>#f89a6a4e chat_id:<a href="/type/long" >long</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateGroupCallParticipants" >updateGroupCallParticipants</a>#f2ebdb4e call:<a href="/type/InputGroupCall" >InputGroupCall</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/GroupCallParticipant" >GroupCallParticipant</a>> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateGroupCall" >updateGroupCall</a>#14b24500 chat_id:<a href="/type/long" >long</a> call:<a href="/type/GroupCall" >GroupCall</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePeerHistoryTTL" >updatePeerHistoryTTL</a>#bb9bb9a5 flags:<a href="/type/%23" >#</a> peer:<a href="/type/Peer" >Peer</a> ttl_period:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipant" >updateChatParticipant</a>#d087663a flags:<a href="/type/%23" >#</a> chat_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> actor_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> prev_participant:flags.0?<a href="/type/ChatParticipant" >ChatParticipant</a> new_participant:flags.1?<a href="/type/ChatParticipant" >ChatParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelParticipant" >updateChannelParticipant</a>#985d3abb flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> actor_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> prev_participant:flags.0?<a href="/type/ChannelParticipant" >ChannelParticipant</a> new_participant:flags.1?<a href="/type/ChannelParticipant" >ChannelParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotStopped" >updateBotStopped</a>#c4870a49 user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> stopped:<a href="/type/Bool" >Bool</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateGroupCallConnection" >updateGroupCallConnection</a>#b783982 flags:<a href="/type/%23" >#</a> presentation:flags.0?true params:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotCommands" >updateBotCommands</a>#4d712f2e peer:<a href="/type/Peer" >Peer</a> bot_id:<a href="/type/long" >long</a> commands:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotCommand" >BotCommand</a>> = <a href="/type/Update" class="current_page_link" >Update</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/updateNewMessage">updateNewMessage</a></td> +<td>New message.</td> +</tr> +<tr> +<td><a href="/constructor/updateMessageID">updateMessageID</a></td> +<td>Sent message with <strong>random_id</strong> client identifier was assigned an identifier.</td> +</tr> +<tr> +<td><a href="/constructor/updateDeleteMessages">updateDeleteMessages</a></td> +<td>Messages were deleted.</td> +</tr> +<tr> +<td><a href="/constructor/updateUserTyping">updateUserTyping</a></td> +<td>The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no repeated update received after 6 seconds, it should be considered that the user stopped doing whatever he's been doing.</td> +</tr> +<tr> +<td><a href="/constructor/updateChatUserTyping">updateChatUserTyping</a></td> +<td>The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no repeated update received after 6 seconds, it should be considered that the user stopped doing whatever he's been doing.</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipants">updateChatParticipants</a></td> +<td>Composition of chat participants changed.</td> +</tr> +<tr> +<td><a href="/constructor/updateUserStatus">updateUserStatus</a></td> +<td>Contact status update.</td> +</tr> +<tr> +<td><a href="/constructor/updateUserName">updateUserName</a></td> +<td>Changes the user's first name, last name and username.</td> +</tr> +<tr> +<td><a href="/constructor/updateUserPhoto">updateUserPhoto</a></td> +<td>Change of contact's profile photo.</td> +</tr> +<tr> +<td><a href="/constructor/updateNewEncryptedMessage">updateNewEncryptedMessage</a></td> +<td>New encrypted message.</td> +</tr> +<tr> +<td><a href="/constructor/updateEncryptedChatTyping">updateEncryptedChatTyping</a></td> +<td>Interlocutor is typing a message in an encrypted chat. Update period is 6 second. If upon this time there is no repeated update, it shall be considered that the interlocutor stopped typing.</td> +</tr> +<tr> +<td><a href="/constructor/updateEncryption">updateEncryption</a></td> +<td>Change of state in an encrypted chat.</td> +</tr> +<tr> +<td><a href="/constructor/updateEncryptedMessagesRead">updateEncryptedMessagesRead</a></td> +<td>Communication history in an encrypted chat was marked as read.</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipantAdd">updateChatParticipantAdd</a></td> +<td>New group member.</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipantDelete">updateChatParticipantDelete</a></td> +<td>A member has left the group.</td> +</tr> +<tr> +<td><a href="/constructor/updateDcOptions">updateDcOptions</a></td> +<td>Changes in the data center configuration options.</td> +</tr> +<tr> +<td><a href="/constructor/updateNotifySettings">updateNotifySettings</a></td> +<td>Changes in notification settings.</td> +</tr> +<tr> +<td><a href="/constructor/updateServiceNotification">updateServiceNotification</a></td> +<td>A service message for the user.<br><br>The app must show the message to the user upon receiving this update. In case the <strong>popup</strong> parameter was passed, the text message must be displayed in a popup alert immediately upon receipt. It is recommended to handle the text as you would an ordinary message in terms of highlighting links, etc. The message must also be stored locally as part of the message history with the user id <code>777000</code> (Telegram Notifications).</td> +</tr> +<tr> +<td><a href="/constructor/updatePrivacy">updatePrivacy</a></td> +<td>Privacy rules were changed</td> +</tr> +<tr> +<td><a href="/constructor/updateUserPhone">updateUserPhone</a></td> +<td>A user's phone number was changed</td> +</tr> +<tr> +<td><a href="/constructor/updateReadHistoryInbox">updateReadHistoryInbox</a></td> +<td>Incoming messages were read</td> +</tr> +<tr> +<td><a href="/constructor/updateReadHistoryOutbox">updateReadHistoryOutbox</a></td> +<td>Outgoing messages were read</td> +</tr> +<tr> +<td><a href="/constructor/updateWebPage">updateWebPage</a></td> +<td>An (<a href="https://instantview.telegram.org">IV</a>) webpage preview was generated</td> +</tr> +<tr> +<td><a href="/constructor/updateReadMessagesContents">updateReadMessagesContents</a></td> +<td>Contents of messages in the common <a href="/api/updates">message box</a> were read</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelTooLong">updateChannelTooLong</a></td> +<td>There are new updates in the specified channel, the client must fetch them, eventually starting the specified pts if the difference is too long or if the channel isn't currently in the states.</td> +</tr> +<tr> +<td><a href="/constructor/updateChannel">updateChannel</a></td> +<td>A new channel is available</td> +</tr> +<tr> +<td><a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a></td> +<td>A new message was sent in a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/constructor/updateReadChannelInbox">updateReadChannelInbox</a></td> +<td>Incoming messages in a <a href="/api/channel">channel/supergroup</a> were read</td> +</tr> +<tr> +<td><a href="/constructor/updateDeleteChannelMessages">updateDeleteChannelMessages</a></td> +<td>Some messages in a <a href="/api/channel">supergroup/channel</a> were deleted</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelMessageViews">updateChannelMessageViews</a></td> +<td>The view counter of a message in a channel has changed</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipantAdmin">updateChatParticipantAdmin</a></td> +<td>Admin permissions of a user in a <a href="/api/channel">legacy group</a> were changed</td> +</tr> +<tr> +<td><a href="/constructor/updateNewStickerSet">updateNewStickerSet</a></td> +<td>A new stickerset was installed</td> +</tr> +<tr> +<td><a href="/constructor/updateStickerSetsOrder">updateStickerSetsOrder</a></td> +<td>The order of stickersets was changed</td> +</tr> +<tr> +<td><a href="/constructor/updateStickerSets">updateStickerSets</a></td> +<td>Installed stickersets have changed, the client should refetch them using <a href="https://core.telegram.org/method/messages.getAllStickers">messages.getAllStickers</a></td> +</tr> +<tr> +<td><a href="/constructor/updateSavedGifs">updateSavedGifs</a></td> +<td>The saved gif list has changed, the client should refetch it using <a href="https://core.telegram.org/method/messages.getSavedGifs">messages.getSavedGifs</a></td> +</tr> +<tr> +<td><a href="/constructor/updateBotInlineQuery">updateBotInlineQuery</a></td> +<td>An incoming inline query</td> +</tr> +<tr> +<td><a href="/constructor/updateBotInlineSend">updateBotInlineSend</a></td> +<td>The result of an inline query that was chosen by a user and sent to their chat partner. Please see our documentation on the <a href="https://core.telegram.org/bots/inline#collecting-feedback">feedback collecting</a> for details on how to enable these updates for your bot.</td> +</tr> +<tr> +<td><a href="/constructor/updateEditChannelMessage">updateEditChannelMessage</a></td> +<td>A message was edited in a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/constructor/updateBotCallbackQuery">updateBotCallbackQuery</a></td> +<td>A callback button was pressed, and the button data was sent to the bot that created the button</td> +</tr> +<tr> +<td><a href="/constructor/updateEditMessage">updateEditMessage</a></td> +<td>A message was edited</td> +</tr> +<tr> +<td><a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a></td> +<td>This notification is received by bots when a button is pressed</td> +</tr> +<tr> +<td><a href="/constructor/updateReadChannelOutbox">updateReadChannelOutbox</a></td> +<td>Outgoing messages in a <a href="/api/channel">channel/supergroup</a> were read</td> +</tr> +<tr> +<td><a href="/constructor/updateDraftMessage">updateDraftMessage</a></td> +<td>Notifies a change of a message <a href="/api/drafts">draft</a>.</td> +</tr> +<tr> +<td><a href="/constructor/updateReadFeaturedStickers">updateReadFeaturedStickers</a></td> +<td>Some featured stickers were marked as read</td> +</tr> +<tr> +<td><a href="/constructor/updateRecentStickers">updateRecentStickers</a></td> +<td>The recent sticker list was updated</td> +</tr> +<tr> +<td><a href="/constructor/updateConfig">updateConfig</a></td> +<td>The server-side configuration has changed; the client should re-fetch the config using <a href="/method/help.getConfig">help.getConfig</a></td> +</tr> +<tr> +<td><a href="/constructor/updatePtsChanged">updatePtsChanged</a></td> +<td><a href="/api/updates">Common message box sequence PTS</a> has changed, <a href="/api/updates#fetching-state">state has to be refetched using updates.getState</a></td> +</tr> +<tr> +<td><a href="/constructor/updateChannelWebPage">updateChannelWebPage</a></td> +<td>A webpage preview of a link in a <a href="/api/channel">channel/supergroup</a> message was generated</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogPinned">updateDialogPinned</a></td> +<td>A dialog was pinned/unpinned</td> +</tr> +<tr> +<td><a href="/constructor/updatePinnedDialogs">updatePinnedDialogs</a></td> +<td>Pinned dialogs were updated</td> +</tr> +<tr> +<td><a href="/constructor/updateBotWebhookJSON">updateBotWebhookJSON</a></td> +<td>A new incoming event; for bots only</td> +</tr> +<tr> +<td><a href="/constructor/updateBotWebhookJSONQuery">updateBotWebhookJSONQuery</a></td> +<td>A new incoming query; for bots only</td> +</tr> +<tr> +<td><a href="/constructor/updateBotShippingQuery">updateBotShippingQuery</a></td> +<td>This object contains information about an incoming shipping query.</td> +</tr> +<tr> +<td><a href="/constructor/updateBotPrecheckoutQuery">updateBotPrecheckoutQuery</a></td> +<td>This object contains information about an incoming pre-checkout query.</td> +</tr> +<tr> +<td><a href="/constructor/updatePhoneCall">updatePhoneCall</a></td> +<td>An incoming phone call</td> +</tr> +<tr> +<td><a href="/constructor/updateLangPackTooLong">updateLangPackTooLong</a></td> +<td>A language pack has changed, the client should manually fetch the changed strings using <a href="/method/langpack.getDifference">langpack.getDifference</a></td> +</tr> +<tr> +<td><a href="/constructor/updateLangPack">updateLangPack</a></td> +<td>Language pack updated</td> +</tr> +<tr> +<td><a href="/constructor/updateFavedStickers">updateFavedStickers</a></td> +<td>The list of favorited stickers was changed, the client should call <a href="/method/messages.getFavedStickers">messages.getFavedStickers</a> to refetch the new list</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelReadMessagesContents">updateChannelReadMessagesContents</a></td> +<td>The specified <a href="/api/channel">channel/supergroup</a> messages were read</td> +</tr> +<tr> +<td><a href="/constructor/updateContactsReset">updateContactsReset</a></td> +<td>All contacts were deleted</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelAvailableMessages">updateChannelAvailableMessages</a></td> +<td>The history of a <a href="/api/channel">channel/supergroup</a> was hidden.</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogUnreadMark">updateDialogUnreadMark</a></td> +<td>The manual unread mark of a chat was changed</td> +</tr> +<tr> +<td><a href="/constructor/updateMessagePoll">updateMessagePoll</a></td> +<td>The results of a poll have changed</td> +</tr> +<tr> +<td><a href="/constructor/updateChatDefaultBannedRights">updateChatDefaultBannedRights</a></td> +<td>Default banned rights in a <a href="/api/channel">normal chat</a> were updated</td> +</tr> +<tr> +<td><a href="/constructor/updateFolderPeers">updateFolderPeers</a></td> +<td>The dialog list of a folder was changed</td> +</tr> +<tr> +<td><a href="/constructor/updatePeerSettings">updatePeerSettings</a></td> +<td>Settings of a certain peer have changed</td> +</tr> +<tr> +<td><a href="/constructor/updatePeerLocated">updatePeerLocated</a></td> +<td>List of peers near you was updated</td> +</tr> +<tr> +<td><a href="/constructor/updateNewScheduledMessage">updateNewScheduledMessage</a></td> +<td>New incoming scheduled message</td> +</tr> +<tr> +<td><a href="/constructor/updateDeleteScheduledMessages">updateDeleteScheduledMessages</a></td> +<td>Some scheduled messages were deleted</td> +</tr> +<tr> +<td><a href="/constructor/updateTheme">updateTheme</a></td> +<td>A new cloud theme was installed</td> +</tr> +<tr> +<td><a href="/constructor/updateGeoLiveViewed">updateGeoLiveViewed</a></td> +<td>Live geoposition message was viewed</td> +</tr> +<tr> +<td><a href="/constructor/updateLoginToken">updateLoginToken</a></td> +<td>A login token (for login via QR code) was generated</td> +</tr> +<tr> +<td><a href="/constructor/updateMessagePollVote">updateMessagePollVote</a></td> +<td>A specific user has voted in a poll</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogFilter">updateDialogFilter</a></td> +<td>A new folder was added</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogFilterOrder">updateDialogFilterOrder</a></td> +<td>New chat folders order</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogFilters">updateDialogFilters</a></td> +<td>Update folder list</td> +</tr> +<tr> +<td><a href="/constructor/updatePhoneCallSignalingData">updatePhoneCallSignalingData</a></td> +<td>Incoming phone call signaling payload</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelMessageForwards">updateChannelMessageForwards</a></td> +<td>The forward counter of a message in a channel has changed</td> +</tr> +<tr> +<td><a href="/constructor/updateReadChannelDiscussionInbox">updateReadChannelDiscussionInbox</a></td> +<td>Incoming messages were marked as read</td> +</tr> +<tr> +<td><a href="/constructor/updateReadChannelDiscussionOutbox">updateReadChannelDiscussionOutbox</a></td> +<td>Outgoing comments in a <a href="/api/threads">discussion thread</a> were marked as read</td> +</tr> +<tr> +<td><a href="/constructor/updatePeerBlocked">updatePeerBlocked</a></td> +<td>A peer was blocked</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a></td> +<td>user is typing in a <a href="/api/channel">supergroup, channel</a> or <a href="/api/threads">message thread</a></td> +</tr> +<tr> +<td><a href="/constructor/updatePinnedMessages">updatePinnedMessages</a></td> +<td>Some messages were pinned in a chat</td> +</tr> +<tr> +<td><a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a></td> +<td>Messages were pinned/unpinned in a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/constructor/updateChat">updateChat</a></td> +<td>A new chat is available</td> +</tr> +<tr> +<td><a href="/constructor/updateGroupCallParticipants">updateGroupCallParticipants</a></td> +<td>The participant list of a certain group call has changed</td> +</tr> +<tr> +<td><a href="/constructor/updateGroupCall">updateGroupCall</a></td> +<td>A new groupcall was started</td> +</tr> +<tr> +<td><a href="/constructor/updatePeerHistoryTTL">updatePeerHistoryTTL</a></td> +<td>The Time-To-Live for messages sent by the current user in a specific chat has changed</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipant">updateChatParticipant</a></td> +<td>A user has joined or left a specific chat</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelParticipant">updateChannelParticipant</a></td> +<td>A participant has left/joined a <a href="/api/channel">channel or supergroup</a>.</td> +</tr> +<tr> +<td><a href="/constructor/updateBotStopped">updateBotStopped</a></td> +<td>A bot was stopped or re-started.</td> +</tr> +<tr> +<td><a href="/constructor/updateGroupCallConnection">updateGroupCallConnection</a></td> +<td>New WebRTC parameters</td> +</tr> +<tr> +<td><a href="/constructor/updateBotCommands">updateBotCommands</a></td> +<td>The <a href="/bots/api#june-25-2021">command set</a> of a certain bot in a certain chat has changed.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/messages.InactiveChats b/data/core.telegram.org/type/account.AutoDownloadSettings similarity index 85% rename from data/core.telegram.org/type/messages.InactiveChats rename to data/core.telegram.org/type/account.AutoDownloadSettings index f3944798c2..a71f740e6a 100644 --- a/data/core.telegram.org/type/messages.InactiveChats +++ b/data/core.telegram.org/type/account.AutoDownloadSettings @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.InactiveChats</title> + <title>Account.AutoDownloadSettings</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Inactive chat list"> - <meta property="og:title" content="messages.InactiveChats"> + <meta property="description" content="Media autodownload settings"> + <meta property="og:title" content="Account.AutoDownloadSettings"> <meta property="og:image" content=""> - <meta property="og:description" content="Inactive chat list"> + <meta property="og:description" content="Media autodownload settings"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/messages.InactiveChats" >messages.InactiveChats</a></li></ul></div> - <h1 id="dev_page_title">messages.InactiveChats</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/account.AutoDownloadSettings" >Account.AutoDownloadSettings</a></li></ul></div> + <h1 id="dev_page_title">Account.AutoDownloadSettings</h1> - <div id="dev_page_content"><p>Inactive chat list</p> + <div id="dev_page_content"><p>Media autodownload settings</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.inactiveChats" >messages.inactiveChats</a>#a927fec5 dates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.InactiveChats" class="current_page_link" >messages.InactiveChats</a>; +<pre class="page_scheme"><code><a href="/constructor/account.autoDownloadSettings" >account.autoDownloadSettings</a>#63cacf26 low:<a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a> medium:<a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a> high:<a href="/type/AutoDownloadSettings" >AutoDownloadSettings</a> = <a href="/type/account.AutoDownloadSettings" class="current_page_link" >account.AutoDownloadSettings</a>; ---functions--- -<a href="/method/channels.getInactiveChannels" >channels.getInactiveChannels</a>#11e831ee = <a href="/type/messages.InactiveChats" class="current_page_link" >messages.InactiveChats</a>;</code></pre></p> +<a href="/method/account.getAutoDownloadSettings" >account.getAutoDownloadSettings</a>#56da0b3f = <a href="/type/account.AutoDownloadSettings" class="current_page_link" >account.AutoDownloadSettings</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -67,8 +67,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/messages.inactiveChats">messages.inactiveChats</a></td> -<td>Inactive chat list</td> +<td><a href="/constructor/account.autoDownloadSettings">account.autoDownloadSettings</a></td> +<td>Media autodownload settings</td> </tr> </tbody> </table> @@ -82,8 +82,8 @@ </thead> <tbody> <tr> -<td><a href="/method/channels.getInactiveChannels">channels.getInactiveChannels</a></td> -<td>Get inactive channels and supergroups</td> +<td><a href="/method/account.getAutoDownloadSettings">account.getAutoDownloadSettings</a></td> +<td>Get media autodownload settings</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/long.html b/data/core.telegram.org/type/double.html similarity index 86% rename from data/core.telegram.org/type/long.html rename to data/core.telegram.org/type/double.html index 152e73654f..b1a3a9ae88 100644 --- a/data/core.telegram.org/type/long.html +++ b/data/core.telegram.org/type/double.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>long</title> + <title>double</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="A basic bare type, elements of which correspond to two-element sequences, representing 64-bit signed numbers (little-endian)."> - <meta property="og:title" content="long"> + <meta property="description" content="A basic bare type, values of which correspond two-element sequences containing 64-bit real numbers in a standard double format."> + <meta property="og:title" content="double"> <meta property="og:image" content=""> - <meta property="og:description" content="A basic bare type, elements of which correspond to two-element sequences, representing 64-bit signed numbers (little-endian)."> + <meta property="og:description" content="A basic bare type, values of which correspond two-element sequences containing 64-bit real numbers in a standard double format."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,11 +36,11 @@ <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="/type/long" >long</a></li></ul></div> - <h1 id="dev_page_title">long</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/double" >double</a></li></ul></div> + <h1 id="dev_page_title">double</h1> - <div id="dev_page_content"><p>A basic bare type, elements of which correspond to two-element sequences, representing 64-bit signed numbers (little-endian).</p> -<p><a href="/mtproto/serialize">More on basic types »</a></p> + <div id="dev_page_content"><p>A basic bare type, values of which correspond two-element sequences containing 64-bit real numbers in a standard <em>double</em> format.</p> +<p><a href="/mtproto/serialize">More on basic types»</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="#binary-data-serialization" id="binary-data-serialization" name="binary-data-serialization"><i class="anchor-icon"></i></a><a href="/mtproto/serialize">Binary Data Serialization</a></h4></div> diff --git a/data/core.telegram.org/type/help.Country b/data/core.telegram.org/type/help.Country deleted file mode 100644 index b88bc8e262..0000000000 --- a/data/core.telegram.org/type/help.Country +++ /dev/null @@ -1,143 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>help.Country</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Name, ISO code, localized name and phone codes/patterns of a specific country"> - <meta property="og:title" content="help.Country"> - <meta property="og:image" content=""> - <meta property="og:description" content="Name, ISO code, localized name and phone codes/patterns of a specific country"> - <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?215" 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="/type/help.Country" >help.Country</a></li></ul></div> - <h1 id="dev_page_title">help.Country</h1> - - <div id="dev_page_content"><p>Name, ISO code, localized name and phone codes/patterns of a specific country</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/help.country" >help.country</a>#c3878e23 flags:<a href="/type/%23" >#</a> hidden:flags.0?true iso2:<a href="/type/string" >string</a> default_name:<a href="/type/string" >string</a> name:flags.1?<a href="/type/string" >string</a> country_codes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/help.CountryCode" >help.CountryCode</a>> = <a href="/type/help.Country" class="current_page_link" >help.Country</a>;</code></pre></p> -<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> -<table class="table"> -<thead> -<tr> -<th>Constructor</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/constructor/help.country">help.country</a></td> -<td>Name, ISO code, localized name and phone codes/patterns of a specific country</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/core.telegram.org/type/help.PassportConfig b/data/core.telegram.org/type/help.PassportConfig new file mode 100644 index 0000000000..c553d378fb --- /dev/null +++ b/data/core.telegram.org/type/help.PassportConfig @@ -0,0 +1,169 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Help.PassportConfig</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram passport configuration"> + <meta property="og:title" content="Help.PassportConfig"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram passport configuration"> + <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?215" 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="/type/help.PassportConfig" >Help.PassportConfig</a></li></ul></div> + <h1 id="dev_page_title">Help.PassportConfig</h1> + + <div id="dev_page_content"><p>Telegram <a href="/passport">passport</a> configuration</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.passportConfigNotModified" >help.passportConfigNotModified</a>#bfb9f457 = <a href="/type/help.PassportConfig" class="current_page_link" >help.PassportConfig</a>; +<a href="/constructor/help.passportConfig" >help.passportConfig</a>#a098d6af hash:<a href="/type/int" >int</a> countries_langs:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/help.PassportConfig" class="current_page_link" >help.PassportConfig</a>; + +---functions--- + +<a href="/method/help.getPassportConfig" >help.getPassportConfig</a>#c661ad08 hash:<a href="/type/int" >int</a> = <a href="/type/help.PassportConfig" class="current_page_link" >help.PassportConfig</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/help.passportConfigNotModified">help.passportConfigNotModified</a></td> +<td>Password configuration not modified</td> +</tr> +<tr> +<td><a href="/constructor/help.passportConfig">help.passportConfig</a></td> +<td>Telegram <a href="/passport">passport</a> configuration</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#methods" id="methods" name="methods"><i class="anchor-icon"></i></a>Methods</h3> +<table class="table"> +<thead> +<tr> +<th>Method</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/help.getPassportConfig">help.getPassportConfig</a></td> +<td>Get <a href="/passport">passport</a> configuration</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/messages.ChatFull b/data/core.telegram.org/type/messages.ChatFull new file mode 100644 index 0000000000..497bad2b59 --- /dev/null +++ b/data/core.telegram.org/type/messages.ChatFull @@ -0,0 +1,168 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.ChatFull</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Object contains extended info on chat with auxiliary data."> + <meta property="og:title" content="messages.ChatFull"> + <meta property="og:image" content=""> + <meta property="og:description" content="Object contains extended info on chat with auxiliary data."> + <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?215" 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="/type/messages.ChatFull" >messages.ChatFull</a></li></ul></div> + <h1 id="dev_page_title">messages.ChatFull</h1> + + <div id="dev_page_content"><p>Object contains extended info on chat with auxiliary data.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.chatFull" >messages.chatFull</a>#e5d7d19c full_chat:<a href="/type/ChatFull" >ChatFull</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ChatFull" class="current_page_link" >messages.ChatFull</a>; + +---functions--- + +<a href="/method/messages.getFullChat" >messages.getFullChat</a>#aeb00b34 chat_id:<a href="/type/long" >long</a> = <a href="/type/messages.ChatFull" class="current_page_link" >messages.ChatFull</a>; + +<a href="/method/channels.getFullChannel" >channels.getFullChannel</a>#8736a09 channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/messages.ChatFull" class="current_page_link" >messages.ChatFull</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/messages.chatFull">messages.chatFull</a></td> +<td>Extended info on chat and auxiliary data.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#methods" id="methods" name="methods"><i class="anchor-icon"></i></a>Methods</h3> +<table class="table"> +<thead> +<tr> +<th>Method</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/method/messages.getFullChat">messages.getFullChat</a></td> +<td>Returns full chat info according to its ID.</td> +</tr> +<tr> +<td><a href="/method/channels.getFullChannel">channels.getFullChannel</a></td> +<td>Get full info about a channel</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/messages.ChatAdminsWithInvites b/data/core.telegram.org/type/messages.MessageViews similarity index 83% rename from data/core.telegram.org/type/messages.ChatAdminsWithInvites rename to data/core.telegram.org/type/messages.MessageViews index 71c75b9593..4dd41b1614 100644 --- a/data/core.telegram.org/type/messages.ChatAdminsWithInvites +++ b/data/core.telegram.org/type/messages.MessageViews @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.ChatAdminsWithInvites</title> + <title>messages.MessageViews</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Info about chat invites generated by admins."> - <meta property="og:title" content="messages.ChatAdminsWithInvites"> + <meta property="description" content="View, forward counter + info about replies"> + <meta property="og:title" content="messages.MessageViews"> <meta property="og:image" content=""> - <meta property="og:description" content="Info about chat invites generated by admins."> + <meta property="og:description" content="View, forward counter + info about replies"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/messages.ChatAdminsWithInvites" >messages.ChatAdminsWithInvites</a></li></ul></div> - <h1 id="dev_page_title">messages.ChatAdminsWithInvites</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/messages.MessageViews" >messages.MessageViews</a></li></ul></div> + <h1 id="dev_page_title">messages.MessageViews</h1> - <div id="dev_page_content"><p>Info about chat invites generated by admins.</p> + <div id="dev_page_content"><p>View, forward counter + info about replies</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.chatAdminsWithInvites" >messages.chatAdminsWithInvites</a>#b69b72d7 admins:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChatAdminWithInvites" >ChatAdminWithInvites</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ChatAdminsWithInvites" class="current_page_link" >messages.ChatAdminsWithInvites</a>; +<pre class="page_scheme"><code><a href="/constructor/messages.messageViews" >messages.messageViews</a>#b6c4f543 views:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageViews" >MessageViews</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.MessageViews" class="current_page_link" >messages.MessageViews</a>; ---functions--- -<a href="/method/messages.getAdminsWithInvites" >messages.getAdminsWithInvites</a>#3920e6ef peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/messages.ChatAdminsWithInvites" class="current_page_link" >messages.ChatAdminsWithInvites</a>;</code></pre></p> +<a href="/method/messages.getMessagesViews" >messages.getMessagesViews</a>#5784d3e1 peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> increment:<a href="/type/Bool" >Bool</a> = <a href="/type/messages.MessageViews" class="current_page_link" >messages.MessageViews</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -67,8 +67,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/messages.chatAdminsWithInvites">messages.chatAdminsWithInvites</a></td> -<td>Info about chat invites generated by admins.</td> +<td><a href="/constructor/messages.messageViews">messages.messageViews</a></td> +<td>View, forward counter + info about replies</td> </tr> </tbody> </table> @@ -82,8 +82,8 @@ </thead> <tbody> <tr> -<td><a href="/method/messages.getAdminsWithInvites">messages.getAdminsWithInvites</a></td> -<td>Get info about chat invites generated by admins.</td> +<td><a href="/method/messages.getMessagesViews">messages.getMessagesViews</a></td> +<td>Get and increase the view counter of a message sent or forwarded from a <a href="/api/channel">channel</a></td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/type/messages.Messages b/data/core.telegram.org/type/messages.Messages deleted file mode 100644 index e54d01214d..0000000000 --- a/data/core.telegram.org/type/messages.Messages +++ /dev/null @@ -1,229 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>messages.Messages</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Object contains infor on list of messages with auxiliary data."> - <meta property="og:title" content="messages.Messages"> - <meta property="og:image" content=""> - <meta property="og:description" content="Object contains infor on list of messages with auxiliary data."> - <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?215" 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="/type/messages.Messages" >messages.Messages</a></li></ul></div> - <h1 id="dev_page_title">messages.Messages</h1> - - <div id="dev_page_content"><p>Object contains infor on list of messages with auxiliary data.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/messages.messages" >messages.messages</a>#8c718e87 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.Messages" class="current_page_link" >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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.Messages" class="current_page_link" >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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; -<a href="/constructor/messages.messagesNotModified" >messages.messagesNotModified</a>#74535f21 count:<a href="/type/int" >int</a> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; - ----functions--- - -<a href="/method/messages.getMessages" >messages.getMessages</a>#63c66506 id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputMessage" >InputMessage</a>> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; -<a href="/method/messages.getHistory" >messages.getHistory</a>#4423e6c5 peer:<a href="/type/InputPeer" >InputPeer</a> offset_id:<a href="/type/int" >int</a> offset_date:<a href="/type/int" >int</a> add_offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> max_id:<a href="/type/int" >int</a> min_id:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; -<a href="/method/messages.search" >messages.search</a>#a0fda762 flags:<a href="/type/%23" >#</a> peer:<a href="/type/InputPeer" >InputPeer</a> q:<a href="/type/string" >string</a> from_id:flags.0?<a href="/type/InputPeer" >InputPeer</a> top_msg_id:flags.1?<a href="/type/int" >int</a> filter:<a href="/type/MessagesFilter" >MessagesFilter</a> min_date:<a href="/type/int" >int</a> max_date:<a href="/type/int" >int</a> offset_id:<a href="/type/int" >int</a> add_offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> max_id:<a href="/type/int" >int</a> min_id:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; -<a href="/method/messages.searchGlobal" >messages.searchGlobal</a>#4bc6589a flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> q:<a href="/type/string" >string</a> filter:<a href="/type/MessagesFilter" >MessagesFilter</a> min_date:<a href="/type/int" >int</a> max_date:<a href="/type/int" >int</a> offset_rate:<a href="/type/int" >int</a> offset_peer:<a href="/type/InputPeer" >InputPeer</a> offset_id:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; -<a href="/method/messages.getUnreadMentions" >messages.getUnreadMentions</a>#46578472 peer:<a href="/type/InputPeer" >InputPeer</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> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; -<a href="/method/messages.getRecentLocations" >messages.getRecentLocations</a>#702a40e0 peer:<a href="/type/InputPeer" >InputPeer</a> limit:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; -<a href="/method/messages.getScheduledHistory" >messages.getScheduledHistory</a>#f516760b peer:<a href="/type/InputPeer" >InputPeer</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; -<a href="/method/messages.getScheduledMessages" >messages.getScheduledMessages</a>#bdbb0464 peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; -<a href="/method/messages.getReplies" >messages.getReplies</a>#22ddd30c peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> offset_id:<a href="/type/int" >int</a> offset_date:<a href="/type/int" >int</a> add_offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> max_id:<a href="/type/int" >int</a> min_id:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; - -<a href="/method/channels.getMessages" >channels.getMessages</a>#ad8c9a23 channel:<a href="/type/InputChannel" >InputChannel</a> id:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputMessage" >InputMessage</a>> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>; - -<a href="/method/stats.getMessagePublicForwards" >stats.getMessagePublicForwards</a>#5630281b channel:<a href="/type/InputChannel" >InputChannel</a> msg_id:<a href="/type/int" >int</a> offset_rate:<a href="/type/int" >int</a> offset_peer:<a href="/type/InputPeer" >InputPeer</a> offset_id:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.Messages" class="current_page_link" >messages.Messages</a>;</code></pre></p> -<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> -<table class="table"> -<thead> -<tr> -<th>Constructor</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/constructor/messages.messages">messages.messages</a></td> -<td>Full list of messages with auxilary data.</td> -</tr> -<tr> -<td><a href="/constructor/messages.messagesSlice">messages.messagesSlice</a></td> -<td>Incomplete list of messages and auxiliary data.</td> -</tr> -<tr> -<td><a href="/constructor/messages.channelMessages">messages.channelMessages</a></td> -<td>Channel messages</td> -</tr> -<tr> -<td><a href="/constructor/messages.messagesNotModified">messages.messagesNotModified</a></td> -<td>No new messages matching the query were found</td> -</tr> -</tbody> -</table> -<h3><a class="anchor" href="#methods" id="methods" name="methods"><i class="anchor-icon"></i></a>Methods</h3> -<table class="table"> -<thead> -<tr> -<th>Method</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/method/messages.getMessages">messages.getMessages</a></td> -<td>Returns the list of messages by their IDs.</td> -</tr> -<tr> -<td><a href="/method/messages.getHistory">messages.getHistory</a></td> -<td>Gets back the conversation history with one interlocutor / within a chat</td> -</tr> -<tr> -<td><a href="/method/messages.search">messages.search</a></td> -<td>Gets back found messages</td> -</tr> -<tr> -<td><a href="/method/channels.getMessages">channels.getMessages</a></td> -<td>Get <a href="/api/channel">channel/supergroup</a> messages</td> -</tr> -<tr> -<td><a href="/method/messages.searchGlobal">messages.searchGlobal</a></td> -<td>Search for messages and peers globally</td> -</tr> -<tr> -<td><a href="/method/messages.getUnreadMentions">messages.getUnreadMentions</a></td> -<td>Get unread messages where we were mentioned</td> -</tr> -<tr> -<td><a href="/method/messages.getRecentLocations">messages.getRecentLocations</a></td> -<td>Get live location history of a certain user</td> -</tr> -<tr> -<td><a href="/method/messages.getScheduledHistory">messages.getScheduledHistory</a></td> -<td>Get scheduled messages</td> -</tr> -<tr> -<td><a href="/method/messages.getScheduledMessages">messages.getScheduledMessages</a></td> -<td>Get scheduled messages</td> -</tr> -<tr> -<td><a href="/method/messages.getReplies">messages.getReplies</a></td> -<td>Get messages in a reply thread</td> -</tr> -<tr> -<td><a href="/method/stats.getMessagePublicForwards">stats.getMessagePublicForwards</a></td> -<td>Obtains a list of messages, indicating to which other public channels was a channel message forwarded.</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/core.telegram.org/type/messages.SearchCounter b/data/core.telegram.org/type/messages.SearchCounter new file mode 100644 index 0000000000..61cfea4766 --- /dev/null +++ b/data/core.telegram.org/type/messages.SearchCounter @@ -0,0 +1,143 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Messages.SearchCounter</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Number of results that would be returned by a search"> + <meta property="og:title" content="Messages.SearchCounter"> + <meta property="og:image" content=""> + <meta property="og:description" content="Number of results that would be returned by a search"> + <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?215" 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="/type/messages.SearchCounter" >Messages.SearchCounter</a></li></ul></div> + <h1 id="dev_page_title">Messages.SearchCounter</h1> + + <div id="dev_page_content"><p>Number of results that would be returned by a search</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.searchCounter" >messages.searchCounter</a>#e844ebff flags:<a href="/type/%23" >#</a> inexact:flags.1?true filter:<a href="/type/MessagesFilter" >MessagesFilter</a> count:<a href="/type/int" >int</a> = <a href="/type/messages.SearchCounter" class="current_page_link" >messages.SearchCounter</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/messages.searchCounter">messages.searchCounter</a></td> +<td>Indicates how many results would be found by a <a href="/method/messages.search">messages.search</a> call with the same parameters</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/type/EmojiKeywordsDifference.html b/data/core.telegram.org/type/payments.PaymentForm similarity index 81% rename from data/core.telegram.org/type/EmojiKeywordsDifference.html rename to data/core.telegram.org/type/payments.PaymentForm index f883b296d7..9306c2e712 100644 --- a/data/core.telegram.org/type/EmojiKeywordsDifference.html +++ b/data/core.telegram.org/type/payments.PaymentForm @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>EmojiKeywordsDifference</title> + <title>Payments.PaymentForm</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="New emoji keywords"> - <meta property="og:title" content="EmojiKeywordsDifference"> + <meta property="description" content="Payment form"> + <meta property="og:title" content="Payments.PaymentForm"> <meta property="og:image" content=""> - <meta property="og:description" content="New emoji keywords"> + <meta property="og:description" content="Payment form"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/EmojiKeywordsDifference" >EmojiKeywordsDifference</a></li></ul></div> - <h1 id="dev_page_title">EmojiKeywordsDifference</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/payments.PaymentForm" >Payments.PaymentForm</a></li></ul></div> + <h1 id="dev_page_title">Payments.PaymentForm</h1> - <div id="dev_page_content"><p>New emoji keywords</p> + <div id="dev_page_content"><p>Payment form</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,12 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/emojiKeywordsDifference" >emojiKeywordsDifference</a>#5cc761bd lang_code:<a href="/type/string" >string</a> from_version:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> keywords:<a href="/type/Vector%20t" >Vector</a><<a href="/type/EmojiKeyword" >EmojiKeyword</a>> = <a href="/type/EmojiKeywordsDifference" class="current_page_link" >EmojiKeywordsDifference</a>; +<pre class="page_scheme"><code><a href="/constructor/payments.paymentForm" >payments.paymentForm</a>#1694761b flags:<a href="/type/%23" >#</a> can_save_credentials:flags.2?true password_missing:flags.3?true form_id:<a href="/type/long" >long</a> bot_id:<a href="/type/long" >long</a> invoice:<a href="/type/Invoice" >Invoice</a> provider_id:<a href="/type/long" >long</a> url:<a href="/type/string" >string</a> native_provider:flags.4?<a href="/type/string" >string</a> native_params:flags.4?<a href="/type/DataJSON" >DataJSON</a> saved_info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> saved_credentials:flags.1?<a href="/type/PaymentSavedCredentials" >PaymentSavedCredentials</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/payments.PaymentForm" class="current_page_link" >payments.PaymentForm</a>; ---functions--- -<a href="/method/messages.getEmojiKeywords" >messages.getEmojiKeywords</a>#35a0e062 lang_code:<a href="/type/string" >string</a> = <a href="/type/EmojiKeywordsDifference" class="current_page_link" >EmojiKeywordsDifference</a>; -<a href="/method/messages.getEmojiKeywordsDifference" >messages.getEmojiKeywordsDifference</a>#1508b6af lang_code:<a href="/type/string" >string</a> from_version:<a href="/type/int" >int</a> = <a href="/type/EmojiKeywordsDifference" class="current_page_link" >EmojiKeywordsDifference</a>;</code></pre></p> +<a href="/method/payments.getPaymentForm" >payments.getPaymentForm</a>#8a333c8d flags:<a href="/type/%23" >#</a> peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> theme_params:flags.0?<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/payments.PaymentForm" class="current_page_link" >payments.PaymentForm</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -68,8 +67,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/emojiKeywordsDifference">emojiKeywordsDifference</a></td> -<td>Changes to emoji keywords</td> +<td><a href="/constructor/payments.paymentForm">payments.paymentForm</a></td> +<td>Payment form</td> </tr> </tbody> </table> @@ -83,12 +82,8 @@ </thead> <tbody> <tr> -<td><a href="/method/messages.getEmojiKeywords">messages.getEmojiKeywords</a></td> -<td>Get localized emoji keywords</td> -</tr> -<tr> -<td><a href="/method/messages.getEmojiKeywordsDifference">messages.getEmojiKeywordsDifference</a></td> -<td>Get changed emoji keywords</td> +<td><a href="/method/payments.getPaymentForm">payments.getPaymentForm</a></td> +<td>Get a payment form</td> </tr> </tbody> </table></div> diff --git a/data/corefork.telegram.org/type/payments.PaymentReceipt b/data/core.telegram.org/type/payments.PaymentReceipt similarity index 98% rename from data/corefork.telegram.org/type/payments.PaymentReceipt rename to data/core.telegram.org/type/payments.PaymentReceipt index f396e4b8d0..9e1b997c17 100644 --- a/data/corefork.telegram.org/type/payments.PaymentReceipt +++ b/data/core.telegram.org/type/payments.PaymentReceipt @@ -125,9 +125,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -144,7 +144,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/type/help.DeepLinkInfo b/data/core.telegram.org/type/payments.ValidatedRequestedInfo similarity index 83% rename from data/core.telegram.org/type/help.DeepLinkInfo rename to data/core.telegram.org/type/payments.ValidatedRequestedInfo index debbcaaf24..499f1e45a1 100644 --- a/data/core.telegram.org/type/help.DeepLinkInfo +++ b/data/core.telegram.org/type/payments.ValidatedRequestedInfo @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>Help.DeepLinkInfo</title> + <title>Payments.ValidatedRequestedInfo</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Contains information about a tg:// deep link"> - <meta property="og:title" content="Help.DeepLinkInfo"> + <meta property="description" content="Validated requested info"> + <meta property="og:title" content="Payments.ValidatedRequestedInfo"> <meta property="og:image" content=""> - <meta property="og:description" content="Contains information about a tg:// deep link"> + <meta property="og:description" content="Validated requested info"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/help.DeepLinkInfo" >Help.DeepLinkInfo</a></li></ul></div> - <h1 id="dev_page_title">Help.DeepLinkInfo</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/payments.ValidatedRequestedInfo" >Payments.ValidatedRequestedInfo</a></li></ul></div> + <h1 id="dev_page_title">Payments.ValidatedRequestedInfo</h1> - <div id="dev_page_content"><p>Contains information about a tg:// deep link</p> + <div id="dev_page_content"><p>Validated requested info</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,12 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/help.deepLinkInfoEmpty" >help.deepLinkInfoEmpty</a>#66afa166 = <a href="/type/help.DeepLinkInfo" class="current_page_link" >help.DeepLinkInfo</a>; -<a href="/constructor/help.deepLinkInfo" >help.deepLinkInfo</a>#6a4ee832 flags:<a href="/type/%23" >#</a> update_app:flags.0?true message:<a href="/type/string" >string</a> entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/help.DeepLinkInfo" class="current_page_link" >help.DeepLinkInfo</a>; +<pre class="page_scheme"><code><a href="/constructor/payments.validatedRequestedInfo" >payments.validatedRequestedInfo</a>#d1451883 flags:<a href="/type/%23" >#</a> id:flags.0?<a href="/type/string" >string</a> shipping_options:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/ShippingOption" >ShippingOption</a>> = <a href="/type/payments.ValidatedRequestedInfo" class="current_page_link" >payments.ValidatedRequestedInfo</a>; ---functions--- -<a href="/method/help.getDeepLinkInfo" >help.getDeepLinkInfo</a>#3fedc75f path:<a href="/type/string" >string</a> = <a href="/type/help.DeepLinkInfo" class="current_page_link" >help.DeepLinkInfo</a>;</code></pre></p> +<a href="/method/payments.validateRequestedInfo" >payments.validateRequestedInfo</a>#db103170 flags:<a href="/type/%23" >#</a> save:flags.0?true peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> info:<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> = <a href="/type/payments.ValidatedRequestedInfo" class="current_page_link" >payments.ValidatedRequestedInfo</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -68,12 +67,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/help.deepLinkInfoEmpty">help.deepLinkInfoEmpty</a></td> -<td>Deep link info empty</td> -</tr> -<tr> -<td><a href="/constructor/help.deepLinkInfo">help.deepLinkInfo</a></td> -<td>Deep linking info</td> +<td><a href="/constructor/payments.validatedRequestedInfo">payments.validatedRequestedInfo</a></td> +<td>Validated user-provided info</td> </tr> </tbody> </table> @@ -87,8 +82,8 @@ </thead> <tbody> <tr> -<td><a href="/method/help.getDeepLinkInfo">help.getDeepLinkInfo</a></td> -<td>Get info about a <code>t.me</code> link</td> +<td><a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a></td> +<td>Submit requested order information for validation</td> </tr> </tbody> </table></div> diff --git a/data/corefork.telegram.org/type/photos.Photo b/data/core.telegram.org/type/photos.Photo similarity index 98% rename from data/corefork.telegram.org/type/photos.Photo rename to data/core.telegram.org/type/photos.Photo index faf4d83790..e849b14b6a 100644 --- a/data/corefork.telegram.org/type/photos.Photo +++ b/data/core.telegram.org/type/photos.Photo @@ -130,9 +130,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <h5><a href="/">Platform</a></h5> <ul> - <li><a href="//core.telegram.org/api">API</a></li> + <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> @@ -149,7 +149,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="//core.telegram.org/">Platform</a></h5> + <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> diff --git a/data/core.telegram.org/video_stickers.html b/data/core.telegram.org/video_stickers.html new file mode 100644 index 0000000000..abf48687bc --- /dev/null +++ b/data/core.telegram.org/video_stickers.html @@ -0,0 +1,115 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Page not found</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content=""> + <meta property="og:title" content="Page not found"> + <meta property="og:image" content=""> + <meta property="og:description" content=""> + <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> + + <link href="/css/bootstrap.min.css?3" rel="stylesheet"> + + <link href="/css/telegram.css?215" 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">Page not found</h1> + + <div id="dev_page_content">The page has not been saved</div> + +</div> + + </div> + </div> + <div class="footer_wrap"> + <div class="footer_columns_wrap footer_desktop"> + <div class="footer_column footer_column_telegram"> + <h5>Telegram</h5> + <div class="footer_telegram_description"></div> + Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. + </div> + + <div class="footer_column"> + <h5><a href="//telegram.org/faq">About</a></h5> + <ul> + <li><a href="//telegram.org/faq">FAQ</a></li> + <li><a href="//telegram.org/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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/widgets.html b/data/core.telegram.org/widgets.html new file mode 100644 index 0000000000..8099284b07 --- /dev/null +++ b/data/core.telegram.org/widgets.html @@ -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?215" 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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api.html b/data/corefork.telegram.org/api.html new file mode 100644 index 0000000000..a082817b82 --- /dev/null +++ b/data/corefork.telegram.org/api.html @@ -0,0 +1,253 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram APIs</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for…"> + <meta property="og:title" content="Telegram APIs"> + <meta property="og:image" content="df8a0f9162ddfc1daf"> + <meta property="og:description" content="We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for…"> + <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?215" 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"></div> + <h1 id="dev_page_title">Telegram APIs</h1> + + <div id="dev_page_content"><p>We offer two kinds of APIs for developers. The <a href="#bot-api"><strong>Bot API</strong></a> allows you to easily create programs that use Telegram messages for an interface. The <a href="#tdlib-build-your-own-telegram"><strong>Telegram API and TDLib</strong></a> allow you to build your own customized Telegram clients. You are welcome to use both APIs free of charge.</p> +<p>You can also add <a href="/widgets"><strong>Telegram Widgets</strong></a> to your website.</p> +<p>Designers are welcome to create <a href="/animated_stickers"><strong>Animated Stickers</strong></a> or <a href="/themes"><strong>Custom Themes</strong></a> for Telegram.</p> +<hr> +<h3><a class="anchor" href="#bot-api" id="bot-api" name="bot-api"><i class="anchor-icon"></i></a>Bot API</h3> +<div> + <a href="/file/811140327/1/zlN4goPTupk/9ff2f2f01c4bd1b013" target="_blank"><img src="/file/811140934/1/tbDSLHSaijc/fdcc7b6d5fb3354adf" title="The Botfather. Click for hi-res picture" style="max-width: 200px;float:right"></a> +</div> +<p>This API allows you to connect bots to our system. <a href="/bots"><strong>Telegram Bots</strong></a> are special accounts that do not require an additional phone number to set up. These accounts serve as an interface for code running somewhere on your server.</p> +<p>To use this, you don't need to know anything about how our MTProto encryption protocol works — our intermediary server will handle all encryption and communication with the Telegram API for you. You communicate with this server via a simple HTTPS-interface that offers a simplified version of the Telegram API.</p> +<blockquote> +<p><a href="/bots"><strong>Learn more about the Bot API here »</strong></a></p> +</blockquote> +<p>Bot developers can also make use of our <a href="/bots/payments"><strong>Payments API</strong></a> to accept <strong>payments</strong> from Telegram users around the world.</p> +<hr> +<h3><a class="anchor" href="#tdlib--build-your-own-telegram" id="tdlib--build-your-own-telegram" name="tdlib--build-your-own-telegram"><i class="anchor-icon"></i></a>TDLib – build your own Telegram</h3> +<p>Even if you're looking for maximum customization, you don't have to create your app from scratch. Try our <a href="https://core.telegram.org/tdlib"><strong>Telegram Database Library</strong></a> (or simply TDLib), a tool for third-party developers that makes it easy to build fast, secure and feature-rich Telegram apps.</p> +<p>TDLib takes care of all <strong>network implementation</strong> details, <strong>encryption</strong> and <strong>local data storage</strong>, so that you can dedicate more time to design, responsive interfaces and beautiful animations.</p> +<p>TDLib supports all Telegram features and makes developing Telegram apps a breeze on any platform. It can be used on Android, iOS, Windows, macOS, Linux and virtually any other system. The library is open source and compatible with virtually <strong>any programming language</strong>.</p> +<blockquote> +<p><a href="https://core.telegram.org/tdlib"><strong>Learn more about TDLib here »</strong></a></p> +</blockquote> +<hr> +<h3><a class="anchor" href="#telegram-api" id="telegram-api" name="telegram-api"><i class="anchor-icon"></i></a>Telegram API</h3> +<p>This API allows you to build your own customized Telegram clients. It is 100% open for all developers who wish to create Telegram applications on our platform. Feel free to study the open <a href="https://telegram.org/apps#source-code">source code</a> of existing Telegram applications for examples of how things work here. Don't forget to <a href="/api/obtaining_api_id">register</a> your application in our system. </p> +<ul> +<li><a href="#getting-started">Getting Started</a></li> +<li><a href="#security">Security</a></li> +<li><a href="#optimization">Optimization</a></li> +<li><a href="#api-methods">API methods</a></li> +</ul> +<h3><a class="anchor" href="#getting-started" id="getting-started" name="getting-started"><i class="anchor-icon"></i></a>Getting started</h3> +<h4><a class="anchor" href="#creating-an-application" id="creating-an-application" name="creating-an-application"><i class="anchor-icon"></i></a><a href="/api/obtaining_api_id">Creating an application</a></h4> +<p>How to get your application identifier and create a new Telegram app.</p> +<h4><a class="anchor" href="#user-authorization" id="user-authorization" name="user-authorization"><i class="anchor-icon"></i></a><a href="/api/auth">User authorization</a></h4> +<p>How to register a user's phone to start using the API.</p> +<h4><a class="anchor" href="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p> +<h4><a class="anchor" href="#qr-code-login" id="qr-code-login" name="qr-code-login"><i class="anchor-icon"></i></a><a href="/api/qr-login">QR code login</a></h4> +<p><a href="https://en.wikipedia.org/wiki/QR_code">QR code</a> login flow</p> +<h4><a class="anchor" href="#error-handling" id="error-handling" name="error-handling"><i class="anchor-icon"></i></a><a href="/api/errors">Error handling</a></h4> +<p>How to handle API return errors correctly.</p> +<h4><a class="anchor" href="#handling-different-data-centers" id="handling-different-data-centers" name="handling-different-data-centers"><i class="anchor-icon"></i></a><a href="/api/datacenter">Handling different data centers</a></h4> +<p>How to connect to the closest DC access point for faster interaction with the API, and things to watch out for when developing a client.</p> +<h4><a class="anchor" href="#handling-updates" id="handling-updates" name="handling-updates"><i class="anchor-icon"></i></a><a href="/api/updates">Handling updates</a></h4> +<p>How to subscribe to updates and handle them properly.</p> +<h4><a class="anchor" href="#handling-push-notifications" id="handling-push-notifications" name="handling-push-notifications"><i class="anchor-icon"></i></a><a href="/api/push-updates">Handling PUSH-notifications</a></h4> +<p>How to subscribe and handle them properly.</p> +<h4><a class="anchor" href="#channels-supergroups-and-groups" id="channels-supergroups-and-groups" name="channels-supergroups-and-groups"><i class="anchor-icon"></i></a><a href="/api/channel">Channels, supergroups and groups</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> +<p>Telegram offers detailed channel statistics for channels and supergroups. </p> +<h4><a class="anchor" href="#calling-methods" id="calling-methods" name="calling-methods"><i class="anchor-icon"></i></a><a href="/api/invoking">Calling methods</a></h4> +<p>Additional options for calling methods.</p> +<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="#pagination" id="pagination" name="pagination"><i class="anchor-icon"></i></a><a href="/api/offsets">Pagination</a></h4> +<p>How to fetch results from large lists of objects.</p> +<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple client configuration parameters that can be fetched with the appropriate methods. </p> +<h3><a class="anchor" href="#security" id="security" name="security"><i class="anchor-icon"></i></a>Security</h3> +<h4><a class="anchor" href="#secret-chats-end-to-end-encryption" id="secret-chats-end-to-end-encryption" name="secret-chats-end-to-end-encryption"><i class="anchor-icon"></i></a><a href="/api/end-to-end">Secret chats, end-to-end encryption</a></h4> +<p>End-to-end-encrypted messaging.</p> +<h4><a class="anchor" href="#security-guidelines" id="security-guidelines" name="security-guidelines"><i class="anchor-icon"></i></a><a href="/mtproto/security_guidelines">Security guidelines</a></h4> +<p>Important checks required in your client application.</p> +<h4><a class="anchor" href="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a><a href="/api/pfs">Perfect Forward Secrecy</a></h4> +<p>Binding temporary authorization key to permanent ones.</p> +<h4><a class="anchor" href="#end-to-end-encryption-in-voice-and-video-calls" id="end-to-end-encryption-in-voice-and-video-calls" name="end-to-end-encryption-in-voice-and-video-calls"><i class="anchor-icon"></i></a><a href="https://core.telegram.org/api/end-to-end/video-calls">End-to-End Encryption in Voice and Video Calls</a></h4> +<p>End-to-end-encrypted calls.</p> +<h3><a class="anchor" href="#optimization" id="optimization" name="optimization"><i class="anchor-icon"></i></a>Optimization</h3> +<h4><a class="anchor" href="#client-optimization" id="client-optimization" name="client-optimization"><i class="anchor-icon"></i></a><a href="/api/optimisation">Client optimization</a></h4> +<p>Ways to boost API interactions.</p> +<h3><a class="anchor" href="#api-methods" id="api-methods" name="api-methods"><i class="anchor-icon"></i></a>API methods</h3> +<h4><a class="anchor" href="#available-method-list" id="available-method-list" name="available-method-list"><i class="anchor-icon"></i></a><a href="/methods">Available method list</a></h4> +<p>A list of available high-level methods.</p> +<h4><a class="anchor" href="#api-tl-schema-as-json" id="api-tl-schema-as-json" name="api-tl-schema-as-json"><i class="anchor-icon"></i></a><a href="/schema">API TL-schema</a>, <a href="/schema/json">as JSON</a></h4> +<p>Text and JSON-presentation of types and methods used in API.</p> +<h4><a class="anchor" href="#available-layer-list" id="available-layer-list" name="available-layer-list"><i class="anchor-icon"></i></a><a href="/api/layers">Available layer list</a></h4> +<p>A list of available schema versions.</p> +<h3><a class="anchor" href="#other-articles" id="other-articles" name="other-articles"><i class="anchor-icon"></i></a>Other articles</h3> +<h4><a class="anchor" href="#working-with-bots-using-the-mtproto-api" id="working-with-bots-using-the-mtproto-api" name="working-with-bots-using-the-mtproto-api"><i class="anchor-icon"></i></a><a href="/api/bots">Working with bots, using the MTProto API</a></h4> +<p>How to work with bots using the MTProto API.</p> +<h3><a class="anchor" href="#commands" id="commands" name="commands"><i class="anchor-icon"></i></a><a href="/api/bots/commands">Commands</a></h3> +<p><a href="/bots">Bots</a> offer a set of commands that can be used by users in private, or in a chat. </p> +<h3><a class="anchor" href="#buttons" id="buttons" name="buttons"><i class="anchor-icon"></i></a><a href="/api/bots/buttons">Buttons</a></h3> +<p>Users can interact with your bot via <strong>buttons</strong> or even <strong>inline buttons</strong>, straight from inline <strong>messages</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#inline-queries" id="inline-queries" name="inline-queries"><i class="anchor-icon"></i></a><a href="/api/bots/inline">Inline queries</a></h3> +<p>Users can interact with your bot via <strong>inline queries</strong>, straight from the <strong>text input field</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#games" id="games" name="games"><i class="anchor-icon"></i></a><a href="/api/bots/games">Games</a></h3> +<p>Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats; how to work with games in the MTProto API.</p> +<h3><a class="anchor" href="#search--filters" id="search--filters" name="search--filters"><i class="anchor-icon"></i></a><a href="/api/search">Search & filters</a></h3> +<p>Telegram allows applying detailed message filters while looking for messages in chats. +This allows the server to filter messages based on a text query, and even on their type, and this feature is often used by graphical clients to implement features like the chat gallery, chat profile pictures and more.</p> +<h3><a class="anchor" href="#polls" id="polls" name="polls"><i class="anchor-icon"></i></a><a href="/api/poll">Polls</a></h3> +<p>Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels.</p> +<h4><a class="anchor" href="#admin-banned-and-default-rights-for-channels-supergroups-and-groups" id="admin-banned-and-default-rights-for-channels-supergroups-and-groups" name="admin-banned-and-default-rights-for-channels-supergroups-and-groups"><i class="anchor-icon"></i></a><a href="/api/rights">Admin, banned and default rights for channels, supergroups and groups</a></h4> +<p>How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.</p> +<h4><a class="anchor" href="#discussion-groups" id="discussion-groups" name="discussion-groups"><i class="anchor-icon"></i></a><a href="/api/discussion">Discussion groups</a></h4> +<p><a href="/api/channel">Groups</a> can be associated to a <a href="/api/channel">channel</a> as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts. </p> +<h4><a class="anchor" href="#channel-comments-and-message-threads" id="channel-comments-and-message-threads" name="channel-comments-and-message-threads"><i class="anchor-icon"></i></a><a href="/api/threads">Channel comments and message threads</a></h4> +<p>Telegram allows commenting on a <a href="/api/channel">channel post</a> or on a generic <a href="/api/channel">group message</a>, thanks to message threads.</p> +<h4><a class="anchor" href="#admin-log" id="admin-log" name="admin-log"><i class="anchor-icon"></i></a><a href="/api/recent-actions">Admin log</a></h4> +<p>Both supergroups and channels offer a so-called <a href="https://telegram.org/blog/admin-revolution">admin log</a>, a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more. </p> +<h4><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a><a href="/api/pin">Pinned messages</a></h4> +<p>Telegram allows pinning multiple messages on top of a specific chat. </p> +<h4><a class="anchor" href="#mentions" id="mentions" name="mentions"><i class="anchor-icon"></i></a><a href="/api/mentions">Mentions</a></h4> +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p> +<h4><a class="anchor" href="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages.</p> +<h4><a class="anchor" href="#live-geolocations" id="live-geolocations" name="live-geolocations"><i class="anchor-icon"></i></a><a href="/api/live-location">Live geolocations</a></h4> +<p>Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert. </p> +<h4><a class="anchor" href="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>Sometimes, <a href="/constructor/user">user</a> and <a href="/constructor/channel">channel</a> constructors met in group chat updates may not contain full info about the user: how to handle such constructors.</p> +<h4><a class="anchor" href="#account-deletion" id="account-deletion" name="account-deletion"><i class="anchor-icon"></i></a><a href="/api/account-deletion">Account deletion</a></h4> +<p>How to reset an account if the <a href="/api/srp">2FA</a> password was forgotten.</p> +<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> +<h4><a class="anchor" href="#telegram-passport" id="telegram-passport" name="telegram-passport"><i class="anchor-icon"></i></a><a href="/api/passport">Telegram Passport</a></h4> +<p>How to work with <a href="/api/passport">Telegram Passport</a> directly using the MTProto API.</p> +<h4><a class="anchor" href="#telegram-payments" id="telegram-payments" name="telegram-payments"><i class="anchor-icon"></i></a><a href="/api/payments">Telegram Payments</a></h4> +<p>How to work with Telegram Payments directly using the MTProto API.</p> +<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#working-with-animated-emojis" id="working-with-animated-emojis" name="working-with-animated-emojis"><i class="anchor-icon"></i></a><a href="/api/animated-emojis">Working with animated emojis</a></h4> +<p>Graphical telegram clients should transform emojis into their respective animated version. </p> +<h4><a class="anchor" href="#working-with-animated-dice" id="working-with-animated-dice" name="working-with-animated-dice"><i class="anchor-icon"></i></a><a href="/api/dice">Working with animated dice</a></h4> +<p>Telegram supports sending <a href="https://telegram.org/blog/folders#and-one-more-thing">animated dice</a> emojis. </p> +<h4><a class="anchor" href="#message-drafts" id="message-drafts" name="message-drafts"><i class="anchor-icon"></i></a><a href="/api/drafts">Message drafts</a></h4> +<p>How to handle message drafts</p> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Working with folders</p> +<h4><a class="anchor" href="#top-peer-rating" id="top-peer-rating" name="top-peer-rating"><i class="anchor-icon"></i></a><a href="/api/top-rating">Top peer rating</a></h4> +<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> +<h4><a class="anchor" href="#handling-file-references" id="handling-file-references" name="handling-file-references"><i class="anchor-icon"></i></a><a href="/api/file_reference">Handling file references</a></h4> +<p>How to handle file references.</p> +<h4><a class="anchor" href="#seamless-telegram-login" id="seamless-telegram-login" name="seamless-telegram-login"><i class="anchor-icon"></i></a><a href="/api/url-authorization">Seamless Telegram Login</a></h4> +<p>Handle Seamless Telegram Login URL authorization requests.</p> +<h4><a class="anchor" href="#web-events" id="web-events" name="web-events"><i class="anchor-icon"></i></a><a href="/api/web-events">Web events</a></h4> +<p>When interacting with HTML5 games and the websites of payment gateways, Telegram apps should expose the following JS APIs.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/account-deletion.html b/data/corefork.telegram.org/api/account-deletion.html new file mode 100644 index 0000000000..632a361da8 --- /dev/null +++ b/data/corefork.telegram.org/api/account-deletion.html @@ -0,0 +1,129 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Account deletion</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content=" How to reset an account if the 2FA password was forgotten."> + <meta property="og:title" content="Account deletion"> + <meta property="og:image" content="c176ebb99487f059b0"> + <meta property="og:description" content=" How to reset an account if the 2FA password was forgotten."> + <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?215" 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/account-deletion" >Account deletion</a></li></ul></div> + <h1 id="dev_page_title">Account deletion</h1> + + <div id="dev_page_content"><p>If the user has successfully provided the login code, but they forgot the <a href="/api/srp">2FA</a> password, the account should be reset: this can be done using <a href="/method/account.deleteAccount">account.deleteAccount</a>. </p> +<p>If the account's 2FA password was modified more than 7 days ago and was active in the last 7 days, account deletion will be delayed for 7 days, and a <a href="/constructor/updateServiceNotification">service message will be sent to the user</a>, containing a link in one of the following formats:</p> +<ul> +<li><code>https://telegram.me/confirmphone?phone=XXX&hash=YYYY</code></li> +<li><code>tg://confirmphone?phone=XXX&hash=YYYY</code></li> +</ul> +<p>When clicked, <a href="/method/account.sendConfirmPhoneCode">account.sendConfirmPhoneCode</a> must be called with the specified <code>hash</code>, using the account with the specified <code>phone</code> number. +This will send a phone number verification code to the phone number associated with the account. +The phone code settings are the same as for the <a href="/api/auth">login code</a>, and <a href="/method/auth.cancelCode">auth.cancelCode</a> with <a href="/method/auth.resendCode">auth.resendCode</a> can be used as well, to resend or cancel the phone code as for the <a href="/api/auth">login code</a>.</p> +<p>Once the SMS code is received, the <a href="/method/account.confirmPhone">account.confirmPhone</a> method will have to be called with the SMS code and the phone hash received from the <a href="/method/account.sendConfirmPhoneCode">account.sendConfirmPhoneCode</a> method.</p> +<p>This will cancel deletion of the account and will log out the user that tried to reset it. +Otherwise, if the number isn't confirmed in 7 days, the account will be deleted and the user will be free to recreate it.</p> +<h2><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h2> +<h3><a class="anchor" href="#user-authorization" id="user-authorization" name="user-authorization"><i class="anchor-icon"></i></a><a href="/api/auth">User Authorization</a></h3> +<p>How to register a user's phone to start using the API.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/animated-emojis.html b/data/corefork.telegram.org/api/animated-emojis.html new file mode 100644 index 0000000000..f4c1402574 --- /dev/null +++ b/data/corefork.telegram.org/api/animated-emojis.html @@ -0,0 +1,187 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Animated Emojis</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Graphical telegram clients should transform emojis into their respective animated version."> + <meta property="og:title" content="Animated Emojis"> + <meta property="og:image" content=""> + <meta property="og:description" content="Graphical telegram clients should transform emojis into their respective animated version."> + <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?215" 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/animated-emojis" >Animated Emojis</a></li></ul></div> + <h1 id="dev_page_title">Animated Emojis</h1> + + <div id="dev_page_content"><p>Graphical telegram clients should transform emojis into their respective animated version. </p> +<pre><code><a href='/constructor/inputStickerSetAnimatedEmoji'>inputStickerSetAnimatedEmoji</a>#28703c8 = <a href='/type/InputStickerSet'>InputStickerSet</a>; + +<a href='/constructor/messages.stickerSet'>messages.stickerSet</a>#b60a24a6 set:<a href='/type/StickerSet'>StickerSet</a> packs:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StickerPack'>StickerPack</a>> documents:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Document'>Document</a>> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +---functions--- + +<a href='/method/messages.getStickerSet'>messages.getStickerSet</a>#2619a90e stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>;</code></pre> +<p>On startup, clients should fetch the animated emoji stickerset by calling the <a href="/method/messages.getStickerSet">messages.getStickerSet</a> method, providing <a href="/constructor/inputStickerSetAnimatedEmoji">inputStickerSetAnimatedEmoji</a> to the <code>stickerset</code> field.<br> +The returned stickerset will contain a set of animated stickers, one for each of the supported emojis. </p> +<p>Clients should substitute messages containing only one instance of one of the allowed emojis with the respective animated sticker. </p> +<p>Animated emojis should loop only once when first sent or received, or when clicked.<br> +For <a href="#emoji-reactions">supported emojis</a>, clients on both sides of private chats with users are supposed to show a reaction animation when any of the two users clicks on the animated emoji: <a href="#emoji-reactions">click here for more info »</a>.</p> +<p>For special <a href="/api/dice">dice emojis</a> like <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" />, or <img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />, clients are supposed to behave differently both when sending and receiving such emojis: <a href="/api/dice">click here for more info »</a>.</p> +<h3><a class="anchor" href="#emojis-with-sounds" id="emojis-with-sounds" name="emojis-with-sounds"><i class="anchor-icon"></i></a>Emojis with sounds</h3> +<p>Certained animated emojis should play sound when clicked, as specified by <a href="/api/config#client-configuration">server-side configuration</a>. </p> +<p>The returned JSON object will contain the following map, with a list of file IDs to download:</p> +<pre><code> "emojies_sounds": { + "\ud83c\udf83": { + "id": "4956223179606458539", + "access_hash": "-2107001400913062971", + "file_reference_base64": "AF-4ApC7ukC0UWEPZN0TeSJURe7T" + }, + "\u26b0": { + "id": "4956223179606458540", + "access_hash": "-1498869544183595185", + "file_reference_base64": "AF-4ApCLKMGt96WCvLm58kbqZHd3" + }, + "\ud83e\udddf\u200d\u2642": { + "id": "4960929110848176331", + "access_hash": "3986395821757915468", + "file_reference_base64": "AF-4ApAedNln3IMEHH-SUQuH8L9g" + }, + }</code></pre> +<p>The <a href="/api/file_reference">file reference field</a> should be base64-decoded before <a href="/api/files">downloading the file</a>.</p> +<h3><a class="anchor" href="#emoji-reactions" id="emoji-reactions" name="emoji-reactions"><i class="anchor-icon"></i></a>Emoji reactions</h3> +<pre><code><a href='/constructor/inputStickerSetAnimatedEmojiAnimations'>inputStickerSetAnimatedEmojiAnimations</a>#cde3739 = <a href='/type/InputStickerSet'>InputStickerSet</a>; + +<a href='/constructor/messages.stickerSet'>messages.stickerSet</a>#b60a24a6 set:<a href='/type/StickerSet'>StickerSet</a> packs:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StickerPack'>StickerPack</a>> documents:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Document'>Document</a>> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +<a href='/constructor/stickerPack'>stickerPack</a>#12b299d4 emoticon:<a href='/type/string'>string</a> documents:<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/StickerPack'>StickerPack</a>; + +<a href='/constructor/sendMessageEmojiInteraction'>sendMessageEmojiInteraction</a>#25972bcb emoticon:<a href='/type/string'>string</a> msg_id:<a href='/type/int'>int</a> interaction:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>; +<a href='/constructor/sendMessageEmojiInteractionSeen'>sendMessageEmojiInteractionSeen</a>#b665902e emoticon:<a href='/type/string'>string</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>; + +<a href='/constructor/updateUserTyping'>updateUserTyping</a>#c01e857f user_id:<a href='/type/long'>long</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getStickerSet'>messages.getStickerSet</a>#2619a90e stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +<a href='/method/messages.setTyping'>messages.setTyping</a>#58943ee2 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.0?<a href='/type/int'>int</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>On startup, clients should fetch the animated reaction emoji stickerset by calling the <a href="/method/messages.getStickerSet">messages.getStickerSet</a> method, providing <a href="/constructor/inputStickerSetAnimatedEmojiAnimations">inputStickerSetAnimatedEmojiAnimations</a> to the <code>stickerset</code> field.<br> +The returned stickerset will contain a set of animated emoji reactions, <em>one or more</em> for each of the supported emojis.<br> +If a set of reactions for the <img class="emoji" src="//telegram.org/img/emoji/40/E29DA4.png" width="20" height="20" alt="❤" /> emoji is returned, the same reactions should also be assigned to the <img class="emoji" src="//telegram.org/img/emoji/40/F09FA7A1.png" width="20" height="20" alt="🧡" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F929B.png" width="20" height="20" alt="💛" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F929A.png" width="20" height="20" alt="💚" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F9299.png" width="20" height="20" alt="💙" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F929C.png" width="20" height="20" alt="💜" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F96A4.png" width="20" height="20" alt="🖤" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09FA48D.png" width="20" height="20" alt="🤍" /> and <img class="emoji" src="//telegram.org/img/emoji/40/F09FA48E.png" width="20" height="20" alt="🤎" /> emojis. </p> +<p>Clients on both sides of private chats with users should overlay one of the appropriate reaction animations over the animated sticker when any of the two users clicks on a supported animated emoji.<br> +The reaction animation for each separate tap should be chosen randomly from all the available reactions for a given emoji, and multiple taps should be aggregated and sent to the other user as follows: </p> +<p>At each tap, clients should store all occurred taps in a local list.<br> +After 1 second has elapsed with no more taps, the local list should be cleared and stored taps should be sent using <a href="/method/messages.setTyping">messages.setTyping</a>, passing a <a href="/constructor/sendMessageEmojiInteraction">sendMessageEmojiInteraction</a> constructor with the following fields: </p> +<ul> +<li><code>emoticon</code> - The emoji we're reacting to</li> +<li><code>msg_id</code> - Message ID of the animated emoji that was clicked</li> +<li><code>interaction</code> - A JSON object with interaction info, containing the following keys:<ul> +<li><code>v</code> - An integer indicating the object version, currently <code>1</code></li> +<li><code>a</code> - An array of JSON objects, each containing the following keys:<ul> +<li><code>t</code> - float, number of seconds that passed since the previous tap in the array, the first tap uses a value of <code>0.0</code>.</li> +<li><code>i</code> - integer, 1-based index of the randomly chosen animation for the tap (equivalent to the index of a specific emoji-related animation in <a href="/constructor/stickerPack">stickerPack</a> + 1).</li> +</ul> +</li> +</ul> +</li> +</ul> +<p>1 second after the receiving user has seen the last reaction animation for a specific emoji, an acknowledgement must be sent using <a href="/method/messages.setTyping">messages.setTyping</a>, passing a <a href="/constructor/sendMessageEmojiInteractionSeen">sendMessageEmojiInteractionSeen</a> with that emoji.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/auth.html b/data/corefork.telegram.org/api/auth.html new file mode 100644 index 0000000000..aee36a6995 --- /dev/null +++ b/data/corefork.telegram.org/api/auth.html @@ -0,0 +1,202 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>User Authorization</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to register a user's phone to start using the API."> + <meta property="og:title" content="User Authorization"> + <meta property="og:image" content="9ebfef6d534b708d3a"> + <meta property="og:description" content="How to register a user's phone to start using the API."> + <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?215" 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/auth" >User Authorization</a></li></ul></div> + <h1 id="dev_page_title">User Authorization</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Authorization is associated with a client’s encryption key identifier: <strong>auth_key_id</strong>. No additional parameters need to be passed into methods following authorization. </p> +<p>To log in as a <a href="/bots">bot</a>, follow <a href="/api/bots">these instructions »</a>.</p> +<h3><a class="anchor" name="sending-a-verification-code" href="#sending-a-verification-code"><i class="anchor-icon"></i></a>Sending a verification code</h3> +<p>Example implementations: <a href="https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java">telegram for android</a>, <a href="https://github.com/tdlib/td/tree/master/td/telegram/SendCodeHelper.cpp">tdlib</a>.</p> +<p>To show a nicely formatted and validated phone number field, the <a href="/constructor/help.countriesList">help.countriesList</a> constructor can be obtained using the <a href="/method/help.getCountriesList">help.getCountriesList</a> method.<br>The <a href="/constructor/help.countriesList">help.countriesList</a> config is then used as described <a href="/api/config#country-information-and-login-phone-patterns">here »</a>. </p> +<p>Authorization requires that a text message containing an authorization code first be sent to the user’s phone.<br>This may be done using the <a href="/method/auth.sendCode">auth.sendCode</a> method.<br>The system will automatically choose how to send the authorization code; there are four possible ways the code can arrive:</p> +<ul> +<li><a href="/constructor/auth.sentCodeTypeApp">Telegram code</a></li> +<li><a href="/constructor/auth.sentCodeTypeSms">SMS code</a></li> +<li><a href="/constructor/auth.sentCodeTypeCall">Phone call</a>: a synthesized voice will tell the user which verification code to input</li> +<li><a href="/constructor/auth.sentCodeTypeFlashCall">Flash phone call</a>: the code will be sent via a flash phone call, that will be closed immediately.<br>In the last case, the phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern (see <a href="/constructor/auth.sentCodeTypeFlashCall">auth.sentCodeTypeFlashCall</a>).</li> +</ul> +<p>The <a href="/method/auth.sendCode">auth.sendCode</a> method also has parameters for enabling/disabling use of flash calls, and allows passing an SMS token that will be included in the sent SMS.<br>For example, the latter is required in newer versions of android, to use the <a href="https://developers.google.com/identity/sms-retriever/overview">android SMS receiver APIs</a>.</p> +<p>The returned <a href="/type/auth.SentCode">auth.SentCode</a> object will contain multiple parameters:</p> +<table class="table"> +<tbody> +<tr> +<td><strong>flags</strong></td> +<td align="center"><a href="/type/%23">#</a></td> +<td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> +</tr> +<tr> +<td><strong>type</strong></td> +<td align="center"><a href="/type/auth.SentCodeType">auth.SentCodeType</a></td> +<td>Phone code type</td> +</tr> +<tr> +<td><strong>phone_code_hash</strong></td> +<td align="center"><a href="/type/string">string</a></td> +<td>Phone code hash, to be stored and later re-used with <a href="/method/auth.signIn">auth.signIn</a></td> +</tr> +<tr> +<td><strong>next_type</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/auth.CodeType">auth.CodeType</a></td> +<td>Phone code type that will be sent next, if the phone code is not received within <code>timeout</code> seconds: to send it use <a href="/method/auth.resendCode">auth.resendCode</a></td> +</tr> +<tr> +<td><strong>timeout</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> +<td>Timeout for reception of the phone code</td> +</tr> +</tbody> +</table> +<p>If the message takes too long (<code>timeout</code> seconds) to arrive at the phone, the <a href="/method/auth.resendCode">auth.resendCode</a> method may be invoked to resend a code of type <code>next_type</code>.<br>If the same happens again, you can use <a href="/method/auth.resendCode">auth.resendCode</a> with the <code>next_type</code> returned by the previous call to <a href="/method/auth.resendCode">auth.resendCode</a>.<br>To cancel the verification code use <a href="/method/auth.cancelCode">auth.cancelCode</a>.</p> +<h3><a class="anchor" name="sign-in-sign-up" href="#sign-in-sign-up"><i class="anchor-icon"></i></a>Sign in/sign up</h3> +<p>When user enters verification code, the <a href="/method/auth.signIn">auth.signIn</a> method must be used to validate it and possibly sign user in.</p> +<p>If the code was entered correctly, but the method returns <a href="/constructor/auth.authorizationSignUpRequired">auth.authorizationSignUpRequired</a>, it means that account with this phone number doesn't exist yet: user needs to provide basic information, accept terms of service and then the new user registration method (<a href="/method/auth.signUp">auth.signUp</a>) must be invoked.</p> +<h3><a class="anchor" name="2fa" href="#2fa"><i class="anchor-icon"></i></a>2FA</h3> +<p>When trying to sign in using <a href="/method/auth.signIn">auth.signIn</a>, an <a href="/method/auth.signIn#possible-errors">error 400 SESSION_PASSWORD_NEEDED</a> may be returned, if the user has two-factor authentication enabled.<br>In this case, instructions for <a href="/api/srp">SRP 2FA authentication</a> must be followed.</p> +<p>To set up two-factor authorization on an already authorized account, follow the <a href="/api/srp">SRP 2FA authentication docs</a>.</p> +<h4><a class="anchor" name="test-accounts" href="#test-accounts"><i class="anchor-icon"></i></a>Test Accounts</h4> +<p>Each phone number is limited to only a certain amount of logins per day (e.g. 5, but this is subject to change) after which the API will return a FLOOD error until the next day. This might not be enough for testing the implementation of User Authorization flows in client applications.</p> +<p>There are several reserved phone number prefixes for testing that your application handles redirects between DCs, sign up, sign in and 2FA flows correctly. These numbers are only available on <strong>Test DCs</strong> (their IP addresses for TCP transport are availble in <a href="https://my.telegram.org/apps">API development tools</a> panel after <a href="https://core.telegram.org/api/obtaining_api_id#obtaining-api-id">api_id was obtained</a>, <a href="https://core.telegram.org/mtproto/transports#uri-format">URI format</a> for HTTPS/Websocket transport).</p> +<p>If you wish to emulate an application of a user associated with DC number X, it is sufficient to specify the phone number as <code>99966XYYYY</code>, where YYYY are random numbers, when registering the user. A user like this would always get XXXXX as the login confirmation code (the DC number, repeated five times). Note that the value of X must be in the range of 1-3 because there are only 3 Test DCs. When the flood limit is reached for any particular test number, just choose another number (changing the YYYY random part).</p> +<p>Do not store any important or private information in the messages of such test accounts; anyone can make use of the simplified authorization mechanism – and we periodically wipe all information stored there.</p> +<p>Proceed with User Authorization flows in <strong>Production DCs</strong> only after you make sure everything works correctly on <strong>Test DCs</strong> first to avoid reaching flood limits.</p> +<blockquote> +<p>To help you with working on production DCs, logins with the same phone number with which the <code>api_id</code> was registered have more generous flood limits.</p> +</blockquote> +<h3><a class="anchor" name="we-are-authorized" href="#we-are-authorized"><i class="anchor-icon"></i></a>We are authorized</h3> +<p>As a result of authorization, the client key, <strong>auth_key_id</strong>, becomes associated with the user, and each subsequent API call with this key will be executed with that user’s identity. The authorization method itself returns the relevant user. It is best to immediately store the User ID locally in a binding with the key.</p> +<p>Only a small portion of the API methods are available to <strong>unauthorized</strong> users:</p> +<ul> +<li><a href="/method/auth.sendCode">auth.sendCode</a></li> +<li><a href="/method/auth.resendCode">auth.resendCode</a></li> +<li><a href="/method/account.getPassword">account.getPassword</a></li> +<li><a href="/method/auth.checkPassword">auth.checkPassword</a></li> +<li><a href="/method/auth.checkPhone">auth.checkPhone</a></li> +<li><a href="/method/auth.signUp">auth.signUp</a></li> +<li><a href="/method/auth.signIn">auth.signIn</a></li> +<li><a href="/method/auth.importAuthorization">auth.importAuthorization</a></li> +<li><a href="/method/help.getConfig">help.getConfig</a></li> +<li><a href="/method/help.getNearestDc">help.getNearestDc</a></li> +<li><a href="/method/help.getAppUpdate">help.getAppUpdate</a></li> +<li><a href="/method/help.getCdnConfig">help.getCdnConfig</a></li> +<li><a href="/method/langpack.getLangPack">langpack.getLangPack</a></li> +<li><a href="/method/langpack.getStrings">langpack.getStrings</a></li> +<li><a href="/method/langpack.getDifference">langpack.getDifference</a></li> +<li><a href="/method/langpack.getLanguages">langpack.getLanguages</a></li> +<li><a href="/method/langpack.getLanguage">langpack.getLanguage</a></li> +</ul> +<p>Other methods will result in an error: <a href="/api/errors#401-unauthorized"><strong>401 UNAUTHORIZED</strong></a>.</p> +</div> + +</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/bots.html b/data/corefork.telegram.org/api/bots.html new file mode 100644 index 0000000000..cacdbd775b --- /dev/null +++ b/data/corefork.telegram.org/api/bots.html @@ -0,0 +1,142 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Bots</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Working with bots, using the MTProto API. +See here for more info about bots. +Please note that you can also use the simplified…"> + <meta property="og:title" content="Bots"> + <meta property="og:image" content=""> + <meta property="og:description" content="Working with bots, using the MTProto API. +See here for more info about bots. +Please note that you can also use the simplified…"> + <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?215" 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/bots" >Bots</a></li></ul></div> + <h1 id="dev_page_title">Bots</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Working with bots, using the MTProto API.</p> +<p>See <a href="/bots">here</a> for more info about bots. </p> +<p>Please note that you can also use the simplified <a href="/bots/api">HTTP Bot API</a> to use bots, see <a href="/bots">here for more info »</a>.</p> +<h3><a class="anchor" href="#login" id="login" name="login"><i class="anchor-icon"></i></a>Login</h3> +<pre><code>---functions--- + +<a href='/method/auth.importBotAuthorization'>auth.importBotAuthorization</a>#67a3ff2c flags:<a href='/type/int'>int</a> api_id:<a href='/type/int'>int</a> api_hash:<a href='/type/string'>string</a> bot_auth_token:<a href='/type/string'>string</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>;</code></pre> +<p>In order to login as a bot, instead of using the <a href="/api/auth">standard login code flow</a>, simply provide the <a href="/bots#creating-a-new-bot">bot token</a> generated by <a href="https://t.me/botfather">@botfather</a>.<br> +You must still provide your <a href="/api/obtaining_api_id#obtaining-api-id">API ID</a>, as per user logins. </p> +<p>After successful authorization, you will be able to use <a href="/methods">most MTProto API methods</a>, just as any normal user.<br> +Methods that can be called by bots will have a <strong>Bots can use this method</strong> notice. </p> +<h3><a class="anchor" href="#commands" id="commands" name="commands"><i class="anchor-icon"></i></a><a href="/api/bots/commands">Commands</a></h3> +<p><a href="/bots">Bots</a> offer a set of commands that can be used by users in private, or in a chat. </p> +<h3><a class="anchor" href="#buttons" id="buttons" name="buttons"><i class="anchor-icon"></i></a><a href="/api/bots/buttons">Buttons</a></h3> +<p>Users can interact with your bot via <strong>buttons</strong> or even <strong>inline buttons</strong>, straight from inline <strong>messages</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#inline-queries" id="inline-queries" name="inline-queries"><i class="anchor-icon"></i></a><a href="/api/bots/inline">Inline queries</a></h3> +<p>Users can interact with your bot via <strong>inline queries</strong>, straight from the <strong>text input field</strong> in <strong>any</strong> chat. </p> +<h3><a class="anchor" href="#games" id="games" name="games"><i class="anchor-icon"></i></a><a href="/api/bots/games">Games</a></h3> +<p>Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats; how to work with games in the MTProto API.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/bots/buttons.html b/data/corefork.telegram.org/api/bots/buttons.html new file mode 100644 index 0000000000..f96e195248 --- /dev/null +++ b/data/corefork.telegram.org/api/bots/buttons.html @@ -0,0 +1,242 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Buttons</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Users can interact with your bot via buttons or even inline buttons, straight from inline messages in any chat. "> + <meta property="og:title" content="Buttons"> + <meta property="og:image" content=""> + <meta property="og:description" content="Users can interact with your bot via buttons or even inline buttons, straight from inline messages in any chat. "> + <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?215" 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/bots%2Fbuttons" >Buttons</a></li></ul></div> + <h1 id="dev_page_title">Buttons</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Users can interact with your bot via <strong>buttons</strong> or even <strong>inline buttons</strong>, straight from inline <strong>messages</strong> in <strong>any</strong> chat.<br> +This article describes the full button flow, using the MTProto API. </p> +<p>For a simplified description using the HTTP bot API, see <a href="/bots/#inline-keyboards-and-on-the-fly-updating">here »</a>. </p> +<h3><a class="anchor" href="#buttons" id="buttons" name="buttons"><i class="anchor-icon"></i></a>Buttons</h3> +<pre><code><a href='/constructor/keyboardButton'>keyboardButton</a>#a2fa4880 text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonUrl'>keyboardButtonUrl</a>#258aff05 text:<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonCallback'>keyboardButtonCallback</a>#35bbdb6b flags:<a href='/type/%23'>#</a> requires_password:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestPhone'>keyboardButtonRequestPhone</a>#b16a6c29 text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestGeoLocation'>keyboardButtonRequestGeoLocation</a>#fc796b3f text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonSwitchInline'>keyboardButtonSwitchInline</a>#568a748 flags:<a href='/type/%23'>#</a> same_peer:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> query:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonGame'>keyboardButtonGame</a>#50f41ccf text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonBuy'>keyboardButtonBuy</a>#afd93fbb text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonUrlAuth'>keyboardButtonUrlAuth</a>#10b78d29 flags:<a href='/type/%23'>#</a> text:<a href='/type/string'>string</a> fwd_text:flags.0?<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> button_id:<a href='/type/int'>int</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/inputKeyboardButtonUrlAuth'>inputKeyboardButtonUrlAuth</a>#d02e7fd4 flags:<a href='/type/%23'>#</a> request_write_access:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> fwd_text:flags.1?<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> bot:<a href='/type/InputUser'>InputUser</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestPoll'>keyboardButtonRequestPoll</a>#bbc7515d flags:<a href='/type/%23'>#</a> quiz:flags.0?<a href='/type/Bool'>Bool</a> text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/keyboardButtonRow'>keyboardButtonRow</a>#77608b83 buttons:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButton'>KeyboardButton</a>> = <a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>; + +<a href='/constructor/replyKeyboardHide'>replyKeyboardHide</a>#a03e5b85 flags:<a href='/type/%23'>#</a> selective:flags.2?<a href='/constructor/true'>true</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; +<a href='/constructor/replyKeyboardForceReply'>replyKeyboardForceReply</a>#86b40b08 flags:<a href='/type/%23'>#</a> single_use:flags.1?<a href='/constructor/true'>true</a> selective:flags.2?<a href='/constructor/true'>true</a> placeholder:flags.3?<a href='/type/string'>string</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; +<a href='/constructor/replyKeyboardMarkup'>replyKeyboardMarkup</a>#85dd99d1 flags:<a href='/type/%23'>#</a> resize:flags.0?<a href='/constructor/true'>true</a> single_use:flags.1?<a href='/constructor/true'>true</a> selective:flags.2?<a href='/constructor/true'>true</a> rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> placeholder:flags.3?<a href='/type/string'>string</a> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; +<a href='/constructor/replyInlineMarkup'>replyInlineMarkup</a>#48a30254 rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; + +<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +---functions--- + +<a href='/method/messages.sendMessage'>messages.sendMessage</a>#520c3870 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Bots can attach a <a href="/type/ReplyMarkup">ReplyMarkup</a> constructor to outgoing messages, to attach an <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a> or a <a href="/bots#keyboards">custom reply keyboard</a>:</p> +<ul> +<li><a href="/constructor/replyKeyboardMarkup">replyKeyboardMarkup</a> - Sends a <a href="/bots#keyboards">custom reply keyboard</a>. <br> User clients receiving such a constructor should display a <a href="/bots#keyboards">special keyboard</a> with custom reply options.</li> +<li><a href="/constructor/replyKeyboardHide">replyKeyboardHide</a> - Hides the <a href="/bots#keyboards">custom reply keyboard</a>. <br> User clients receiving this constructor should hide the <a href="/bots#keyboards">custom reply keyboard</a> opened by <a href="/constructor/replyKeyboardMarkup">replyKeyboardMarkup</a></li> +<li><a href="/constructor/replyKeyboardForceReply">replyKeyboardForceReply</a> - Sends a <a href="/bots/api#forcereply">force reply</a> constructor <br> User clients receiving a message with this constructor should act as if the user had clicked on the reply button of the message, displaying the reply UI. </li> +<li><a href="/constructor/replyInlineMarkup">replyInlineMarkup</a> - Attaches an <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a> to the message, allowing users to send callback data to the bot without sending actual messages to the current chat, see <a href="/bots#pressing-buttons">here for more info »</a>. </li> +</ul> +<h3><a class="anchor" href="#pressing-buttons" id="pressing-buttons" name="pressing-buttons"><i class="anchor-icon"></i></a>Pressing buttons</h3> +<pre><code><a href='/constructor/keyboardButton'>keyboardButton</a>#a2fa4880 text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonUrl'>keyboardButtonUrl</a>#258aff05 text:<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonCallback'>keyboardButtonCallback</a>#35bbdb6b flags:<a href='/type/%23'>#</a> requires_password:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestPhone'>keyboardButtonRequestPhone</a>#b16a6c29 text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestGeoLocation'>keyboardButtonRequestGeoLocation</a>#fc796b3f text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonRequestPoll'>keyboardButtonRequestPoll</a>#bbc7515d flags:<a href='/type/%23'>#</a> quiz:flags.0?<a href='/type/Bool'>Bool</a> text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonSwitchInline'>keyboardButtonSwitchInline</a>#568a748 flags:<a href='/type/%23'>#</a> same_peer:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> query:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonGame'>keyboardButtonGame</a>#50f41ccf text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonBuy'>keyboardButtonBuy</a>#afd93fbb text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonUrlAuth'>keyboardButtonUrlAuth</a>#10b78d29 flags:<a href='/type/%23'>#</a> text:<a href='/type/string'>string</a> fwd_text:flags.0?<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> button_id:<a href='/type/int'>int</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +// Used by bots to send a keyboardButtonUrlAuth +<a href='/constructor/inputKeyboardButtonUrlAuth'>inputKeyboardButtonUrlAuth</a>#d02e7fd4 flags:<a href='/type/%23'>#</a> request_write_access:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> fwd_text:flags.1?<a href='/type/string'>string</a> url:<a href='/type/string'>string</a> bot:<a href='/type/InputUser'>InputUser</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/keyboardButtonRow'>keyboardButtonRow</a>#77608b83 buttons:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButton'>KeyboardButton</a>> = <a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>;</code></pre> +<p>Both <a href="/bots#keyboards">reply</a> and <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline</a> keyboards are composed of a vector of <a href="/constructor/keyboardButtonRow">rows</a>, each row containing a vector of <a href="/type/KeyboardButton">buttons</a>, for each column.<br> +Each row can have a different number of columns, and user clients should properly handle clicking buttons of every type. </p> +<p>Buttons available only in reply keyboards:</p> +<ul> +<li><a href="/constructor/keyboardButton">keyboardButton</a> - Send a message to the chat, replying to the message that attached the <a href="/bots#keyboard">reply keyboard</a></li> +<li><a href="/constructor/keyboardButtonRequestPhone">keyboardButtonRequestPhone</a> - Only in private chats, send the current user's contact to the chat, replying to the message that attached the <a href="/bots#keyboard">reply keyboard</a></li> +<li><a href="/constructor/keyboardButtonRequestGeoLocation">keyboardButtonRequestGeoLocation</a> - Only in private chats, send the current user's geolocation to the chat, replying to the message that attached the <a href="/bots#keyboard">reply keyboard</a></li> +<li><a href="/constructor/keyboardButtonRequestPoll">keyboardButtonRequestPoll</a> - Only in private chats, prompt the user to create and send a <a href="/api/poll">poll</a> (or a quiz poll, depending on the <code>quiz</code> flag), replying to the message that attached the <a href="/bots#keyboard">reply keyboard</a></li> +</ul> +<p>Buttons available only in inline keyboards:</p> +<ul> +<li><a href="/constructor/keyboardButtonUrl">keyboardButtonUrl</a> - Open the URL, showing a "Do you want to open this URL?" prompt (unless the URL is one of the <a href="https://github.com/DrKLO/Telegram/blob/002c01ecd37cd08ed07b3ed84d79318d091dfc85/TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java#L351">internal URIs</a>, in which case the URL should be opened right away)</li> +<li><a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a> - Send the callback data to the bot, optionally providing the user's 2FA SRP payload for identity verification, see <a href="#callback-queries">here for more info »</a></li> +<li><a href="/constructor/keyboardButtonSwitchInline">keyboardButtonSwitchInline</a><ul> +<li>If <code>keyboardButtonSwitchInline.same_peer</code> is set, insert the bot's username and <code>keyboardButtonSwitchInline.query</code> in the current chat's input field, triggering an <a href="/api/bots/inline">inline query</a>.</li> +<li>If <code>keyboardButtonSwitchInline.same_peer</code> is not set, prompt the user to select one of their chats, and then insert the bot's username and <code>keyboardButtonSwitchInline.query</code> in the current chat's input field, triggering an <a href="/api/bots/inline">inline query</a>.</li> +</ul> +</li> +<li><a href="/constructor/keyboardButtonGame">keyboardButtonGame</a> - Open the <a href="/constructor/game">game</a> from the attached <a href="/constructor/messageMediaGame">messageMediaGame</a> constructor, for more info <a href="/api/bots/games">see here »</a></li> +<li><a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> - Proceed to initiating the payment flow, for more info <a href="/api/payments">see here »</a></li> +<li><a href="/constructor/keyboardButtonUrlAuth">keyboardButtonUrlAuth</a> - Log into a website using the user's Telegram account, as specified <a href="/api/url-authorization">here »</a></li> +</ul> +<h3><a class="anchor" href="#callback-queries" id="callback-queries" name="callback-queries"><i class="anchor-icon"></i></a>Callback queries</h3> +<p><a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a> buttons can be used to send the specified <code>data</code> payload back to the bot, when they are clicked.<br> +Additionally, a bot can verify a user's identity by requiring they verify their 2FA password with <a href="/api/srp">SRP</a>. </p> +<h4><a class="anchor" href="#sending-a-callback-query" id="sending-a-callback-query" name="sending-a-callback-query"><i class="anchor-icon"></i></a>Sending a callback query</h4> +<pre><code><a href='/constructor/keyboardButtonGame'>keyboardButtonGame</a>#50f41ccf text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; +<a href='/constructor/keyboardButtonCallback'>keyboardButtonCallback</a>#35bbdb6b flags:<a href='/type/%23'>#</a> requires_password:flags.0?<a href='/constructor/true'>true</a> text:<a href='/type/string'>string</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/messages.botCallbackAnswer'>messages.botCallbackAnswer</a>#36585ea4 flags:<a href='/type/%23'>#</a> alert:flags.1?<a href='/constructor/true'>true</a> has_url:flags.3?<a href='/constructor/true'>true</a> native_ui:flags.4?<a href='/constructor/true'>true</a> message:flags.0?<a href='/type/string'>string</a> url:flags.2?<a href='/type/string'>string</a> cache_time:<a href='/type/int'>int</a> = <a href='/type/messages.BotCallbackAnswer'>messages.BotCallbackAnswer</a>; + +---functions--- + +<a href='/method/messages.getBotCallbackAnswer'>messages.getBotCallbackAnswer</a>#9342ca07 flags:<a href='/type/%23'>#</a> game:flags.1?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> data:flags.0?<a href='/type/bytes'>bytes</a> password:flags.2?<a href='/type/InputCheckPasswordSRP'>InputCheckPasswordSRP</a> = <a href='/type/messages.BotCallbackAnswer'>messages.BotCallbackAnswer</a>;</code></pre> +<p>When the user clicks on a <a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a> in a message sent by a bot, or generated by an <a href="/api/bots/inline">inline query</a>, <a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a> should be called, passing the peer and ID of the message.<br> +The same should happen when clicking on <a href="/constructor/keyboardButtonGame">keyboardButtonGame</a> buttons, with the difference that the <code>game</code> flag must be set instead of the <code>data</code> parameter. </p> +<p>Make sure to properly handle bot timeouts in the form of <code>BOT_RESPONSE_TIMEOUT</code> RPC errors, as the bot may be offline and unable to reply. </p> +<p>The returned <a href="/constructor/messages.botCallbackAnswer">messages.botCallbackAnswer</a> constructor contains:</p> +<ul> +<li><code>message</code> if specified, a message that should be shown in a non-blocking toast notification</li> +<li><code>alert</code> indicates whether the <code>message</code> should be shown as a dismissable prompt, instead of a simple toast notification</li> +<li><code>has_url</code> Whether an URL is present</li> +<li><code>url</code> if specified, the client should open the URL, without showing a confirmation prompt. <br> This is safe and allowed, because here, bots can only return: <ul> +<li>URLs to themselves with added query parameters (<code>t.me/bot?start=aaa</code>)</li> +<li>URLs to a valid game, if the bot has manually configured games, and the clicked button was a <a href="/constructor/keyboardButtonGame">keyboardButtonGame</a>. </li> +</ul> +</li> +<li><code>native_ui</code> whether to open game URLs in a WebView or in native UI.</li> +<li><code>cache_time</code> specifies for how long should this answer be cached, client-side</li> +</ul> +<h5><a class="anchor" href="#srp-verification" id="srp-verification" name="srp-verification"><i class="anchor-icon"></i></a>SRP verification</h5> +<p>If the <code>requires_password</code> flag is set, the <a href="/api/srp">SRP 2FA payload</a> must also be generated and attached to the query, to verify the identity of the user. </p> +<p><strong>Note that the bot will NOT be able to access your password or the SRP payload</strong>. </p> +<p>The SRP payload will be processed exclusively on the Telegram's servers, simply returning an RPC error without passing the query to the bot if the verification fails.<br> +This is just a way of verifying the identity of the user, mainly used by the official <a href="https://t.me/botfather">@botfather</a> bot to allow securely transferring the ownership of a bot to another user.</p> +<h4><a class="anchor" href="#answering-a-callback-query" id="answering-a-callback-query" name="answering-a-callback-query"><i class="anchor-icon"></i></a>Answering a callback query</h4> +<pre><code><a href='/constructor/updateBotCallbackQuery'>updateBotCallbackQuery</a>#b9cfc48d flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> peer:<a href='/type/Peer'>Peer</a> msg_id:<a href='/type/int'>int</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>; + +<a href='/constructor/updateInlineBotCallbackQuery'>updateInlineBotCallbackQuery</a>#691e9052 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> msg_id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.setBotCallbackAnswer'>messages.setBotCallbackAnswer</a>#d58f130a flags:<a href='/type/%23'>#</a> alert:flags.1?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> message:flags.0?<a href='/type/string'>string</a> url:flags.2?<a href='/type/string'>string</a> cache_time:<a href='/type/int'>int</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>After the user invokes <a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a>, an <a href="/constructor/updateBotCallbackQuery">updateBotCallbackQuery</a> or <a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a> is generated and sent to the bot, depending on whether the query originated from a normal message sent by the bot, or from a message sent from an <a href="/api/bots/inline">inline query</a>. </p> +<p>Either way, bots must reply to the query as quickly as possible using <a href="/method/messages.setBotCallbackAnswer">messages.setBotCallbackAnswer</a>: </p> +<ul> +<li><code>query_id</code> is the <code>query_id</code> from <a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a>, an <a href="/constructor/updateBotCallbackQuery">updateBotCallbackQuery</a> or <a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a></li> +<li><code>message</code>, <code>alert</code>, <code>url</code> can contain messages and URLs to trigger different client behaviour, as <a href="#sending-a-callback-query">specified above »</a></li> +<li><code>cache_time</code> indicates the maximum amount of time in seconds that the result of the callback query may be cached by the <strong>client</strong>. </li> +</ul> +<p>If a <code>game_short_name</code> is present in the update, the bot should return the URL of the game with the specified name.<br> +The <a href="/method/messages.setBotCallbackAnswer">messages.setBotCallbackAnswer</a> method must be called anyway, even if no <code>message</code> or <code>url</code> is returned, to avoid timeouts on the client. </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/bots/commands.html b/data/corefork.telegram.org/api/bots/commands.html new file mode 100644 index 0000000000..4a0e8fd99d --- /dev/null +++ b/data/corefork.telegram.org/api/bots/commands.html @@ -0,0 +1,140 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Commands</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Bots offer a set of commands that can be used by users in private, or in a chat."> + <meta property="og:title" content="Commands"> + <meta property="og:image" content=""> + <meta property="og:description" content="Bots offer a set of commands that can be used by users in private, or in a chat."> + <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?215" 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/bots%2Fcommands" >Commands</a></li></ul></div> + <h1 id="dev_page_title">Commands</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><a href="/bots">Bots</a> offer a set of <a href="/bots/#commands">commands</a> that can be used by users in private, or in a chat. </p> +<p>For a simplified description using the HTTP bot API, see <a href="/bots/#commands">here »</a>. </p> +<h3><a class="anchor" href="#getting-commands" id="getting-commands" name="getting-commands"><i class="anchor-icon"></i></a>Getting commands</h3> +<pre><code><a href='/constructor/botCommand'>botCommand</a>#c27ac8c7 command:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> = <a href='/type/BotCommand'>BotCommand</a>; + +<a href='/constructor/botInfo'>botInfo</a>#1b74b335 user_id:<a href='/type/long'>long</a> description:<a href='/type/string'>string</a> commands:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotCommand'>BotCommand</a>> = <a href='/type/BotInfo'>BotInfo</a>; + +<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; +<a href='/constructor/userFull'>userFull</a>#d697ff05 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> user:<a href='/type/User'>User</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> ttl_period:flags.14?<a href='/type/int'>int</a> theme_emoticon:flags.15?<a href='/type/string'>string</a> = <a href='/type/UserFull'>UserFull</a>; + +<a href='/constructor/user'>user</a>#3ff6ecb0 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> fake:flags.26?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;</code></pre> +<p>The <a href="/constructor/botInfo">botInfo</a> constructors contained in the <a href="/constructor/userFull">userFull</a>, <a href="/constructor/chatFull">chatFull</a>, <a href="/constructor/channelFull">channelFull</a> contain a list of commands, and for groups, the ID and a description of each bot. </p> +<p>In graphical clients, when users begin a message with a <code>/</code>, a list of commands supported by all bots present in the current chat should be shown; the same should be done for one-to-one chats with the bot itself. </p> +<p>If the command list of a bot changes, the <code>bot_info_version</code> contained in the <a href="/constructor/user">user</a> constructor received in updates will change; this indicates that the client should refetch full bot information using <a href="/method/users.getFullUser">users.getFullUser</a>.</p> +<h3><a class="anchor" href="#setting-commands" id="setting-commands" name="setting-commands"><i class="anchor-icon"></i></a>Setting commands</h3> +<pre><code><a href='/constructor/botCommand'>botCommand</a>#c27ac8c7 command:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> = <a href='/type/BotCommand'>BotCommand</a>; + +---functions--- + +<a href='/method/bots.setBotCommands'>bots.setBotCommands</a>#517165a scope:<a href='/type/BotCommandScope'>BotCommandScope</a> lang_code:<a href='/type/string'>string</a> commands:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotCommand'>BotCommand</a>> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>The command list can be changed by the owner of the bot through <a href="https://t.me/botfather">@botfather</a>, but bots can also change their own command list by invoking <a href="/method/bots.setBotCommands">bots.setBotCommands</a>.</p></div> + +</div> + + </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/bots/games.html b/data/corefork.telegram.org/api/bots/games.html new file mode 100644 index 0000000000..cbda184569 --- /dev/null +++ b/data/corefork.telegram.org/api/bots/games.html @@ -0,0 +1,171 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Games</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats. "> + <meta property="og:title" content="Games"> + <meta property="og:image" content=""> + <meta property="og:description" content="Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats. "> + <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?215" 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/bots%2Fgames" >Games</a></li></ul></div> + <h1 id="dev_page_title">Games</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Bots can offer users <a href="/bots/games">HTML5 games</a> to play solo or to compete against each other in groups and one-on-one chats. </p> +<h3><a class="anchor" href="#sending-a-game" id="sending-a-game" name="sending-a-game"><i class="anchor-icon"></i></a>Sending a game</h3> +<pre><code><a href='/constructor/inputUserSelf'>inputUserSelf</a>#f7c1b13f = <a href='/type/InputUser'>InputUser</a>; + +<a href='/constructor/inputGameID'>inputGameID</a>#32c3e77 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputGame'>InputGame</a>; +<a href='/constructor/inputGameShortName'>inputGameShortName</a>#c331e80a bot_id:<a href='/type/InputUser'>InputUser</a> short_name:<a href='/type/string'>string</a> = <a href='/type/InputGame'>InputGame</a>; + +<a href='/constructor/inputMediaGame'>inputMediaGame</a>#d33f43f3 id:<a href='/type/InputGame'>InputGame</a> = <a href='/type/InputMedia'>InputMedia</a>; + +<a href='/constructor/game'>game</a>#bdf9653b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> short_name:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:<a href='/type/Photo'>Photo</a> document:flags.0?<a href='/type/Document'>Document</a> = <a href='/type/Game'>Game</a>; +<a href='/constructor/messageMediaGame'>messageMediaGame</a>#fdb19008 game:<a href='/type/Game'>Game</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Bots can directly send a game using <a href="/method/messages.sendMedia">messages.sendMedia</a>, providing:</p> +<ul> +<li>The bot's shortname obtained from <a href="https://t.me/botfather">@BotFather</a> to <code>inputGameShortName.short_name</code></li> +<li>The current bot's info to <code>inputGameShortName.bot_id</code></li> +</ul> +<p>The sent message will contain a <a href="/constructor/messageMediaGame">messageMediaGame</a> with a <a href="/constructor/game">game</a>, that can then be used by users to forward the game using sendMedia with <a href="/constructor/inputGameID">inputGameID</a>.</p> +<h3><a class="anchor" href="#starting-a-game" id="starting-a-game" name="starting-a-game"><i class="anchor-icon"></i></a>Starting a game</h3> +<p>Games are started clicking on the button, which triggers an callback query that returns the game URL, for more info <a href="/api/bots/buttons#callback-queries">see here &raquo</a>.<br> +The game should then be opened in a WebView or in native UI (specified by the <code>native_ui</code> flag), exposing the <a href="/api/web-events">appropriate HTML5 APIs</a> in order to receive various JS game events directly from the code of the game, as described <a href="/api/web-events">here »</a>. </p> +<h3><a class="anchor" href="#setting-highscores" id="setting-highscores" name="setting-highscores"><i class="anchor-icon"></i></a>Setting highscores</h3> +<pre><code>---functions--- + +<a href='/method/messages.setGameScore'>messages.setGameScore</a>#8ef8ecc0 flags:<a href='/type/%23'>#</a> edit_message:flags.0?<a href='/constructor/true'>true</a> force:flags.1?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> user_id:<a href='/type/InputUser'>InputUser</a> score:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/method/messages.setInlineGameScore'>messages.setInlineGameScore</a>#15ad9f64 flags:<a href='/type/%23'>#</a> edit_message:flags.0?<a href='/constructor/true'>true</a> force:flags.1?<a href='/constructor/true'>true</a> id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> user_id:<a href='/type/InputUser'>InputUser</a> score:<a href='/type/int'>int</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Games are supposed to report back to the MTProto API every time the user looses a game with a new highscore.<br> +Since games run in the browser, they cannot directly report data to the API using the bot token, which must be kept secret.<br> +Instead, they should send highscores to an intermediate server, that will then report scores using <a href="/method/messages.setGameScore">messages.setGameScore</a> or <a href="/method/messages.setInlineGameScore">messages.setInlineGameScore</a>, depending on the source of the game. </p> +<ul> +<li>The <code>edit_message</code> flag should be set if the game message should be automatically edited to include the current scoreboard</li> +<li>The <code>force</code> flag should be set if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters.</li> +</ul> +<h3><a class="anchor" href="#getting-highscores" id="getting-highscores" name="getting-highscores"><i class="anchor-icon"></i></a>Getting highscores</h3> +<pre><code><a href='/constructor/messageActionGameScore'>messageActionGameScore</a>#92a72876 game_id:<a href='/type/long'>long</a> score:<a href='/type/int'>int</a> = <a href='/type/MessageAction'>MessageAction</a>; + +<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/highScore'>highScore</a>#73a379eb pos:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> score:<a href='/type/int'>int</a> = <a href='/type/HighScore'>HighScore</a>; + +<a href='/constructor/messages.highScores'>messages.highScores</a>#9a3bfd99 scores:<a href='/type/Vector%20t'>Vector</a><<a href='/type/HighScore'>HighScore</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/messages.HighScores'>messages.HighScores</a>; + +---functions--- + +<a href='/method/messages.getGameHighScores'>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>; +<a href='/method/messages.getInlineGameHighScores'>messages.getInlineGameHighScores</a>#f635e1b id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> user_id:<a href='/type/InputUser'>InputUser</a> = <a href='/type/messages.HighScores'>messages.HighScores</a>;</code></pre> +<p>Every time a highscore is reached, and the <code>edit_message</code> flag is set when reporting the score, a <a href="/constructor/messageService">messageService</a> with a <a href="/constructor/messageActionGameScore">messageActionGameScore</a> is generated, indicating that the highscore of a certain game has changed, thanks to a certain <code>user_id</code>.<br> +Our own current position of the scoreboard is also reported as <code>pos</code>. </p> +<p>When receiving such an update, graphical clients should refetch the scoreboard using <a href="/method/messages.getGameHighScores">messages.getGameHighScores</a> or <a href="/method/messages.getInlineGameHighScores">messages.getInlineGameHighScores</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="//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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/bots/inline.html b/data/corefork.telegram.org/api/bots/inline.html new file mode 100644 index 0000000000..8daa00d149 --- /dev/null +++ b/data/corefork.telegram.org/api/bots/inline.html @@ -0,0 +1,215 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Inline</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Users can interact with your bot via inline queries, straight from the text input field in any chat. +This article describes…"> + <meta property="og:title" content="Inline"> + <meta property="og:image" content=""> + <meta property="og:description" content="Users can interact with your bot via inline queries, straight from the text input field in any chat. +This article describes…"> + <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?215" 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"></div> + <h1 id="dev_page_title">Inline</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Users can interact with your bot via <a href="/bots/#inline-mode"><strong>inline queries</strong></a>, straight from the <strong>text input field</strong> in <strong>any</strong> chat.<br> +This article describes the full inline bot flow, using the MTProto API. </p> +<p>For a simplified description using the HTTP bot API, see <a href="/bots/#inline-mode">here »</a>. </p> +<h3><a class="anchor" href="#making-an-inline-query" id="making-an-inline-query" name="making-an-inline-query"><i class="anchor-icon"></i></a>Making an inline query</h3> +<pre><code><a href='/constructor/messages.botResults'>messages.botResults</a>#947ca848 flags:<a href='/type/%23'>#</a> gallery:flags.0?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> next_offset:flags.1?<a href='/type/string'>string</a> switch_pm:flags.2?<a href='/type/InlineBotSwitchPM'>InlineBotSwitchPM</a> results:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInlineResult'>BotInlineResult</a>> cache_time:<a href='/type/int'>int</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/messages.BotResults'>messages.BotResults</a>; + +---functions--- + +<a href='/method/messages.getInlineBotResults'>messages.getInlineBotResults</a>#514e999d flags:<a href='/type/%23'>#</a> bot:<a href='/type/InputUser'>InputUser</a> peer:<a href='/type/InputPeer'>InputPeer</a> geo_point:flags.0?<a href='/type/InputGeoPoint'>InputGeoPoint</a> query:<a href='/type/string'>string</a> offset:<a href='/type/string'>string</a> = <a href='/type/messages.BotResults'>messages.BotResults</a>;</code></pre> +<p>When, in a graphical client, the user starts a message with an <code>@</code>, clients should:</p> +<ul> +<li>Use the cached <a href="/api/top-rating">top peer rating for inline bots</a> to show a list of frequently used inline bots.</li> +<li>If the user chooses a bot from the recent bot list or:</li> +<li>Finishes typing a full username followed by a whitespace, and if the username <a href="/method/contacts.resolveUsername">resolves</a> to a valid bot</li> +<li><a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a> is called, with the following parameters:<ul> +<li><code>bot</code> - The bot peer</li> +<li><code>peer</code> - The chat where the user made the query</li> +<li><code>geo_point</code> - The user's current geolocation, if the bot requires <a href="/bots/inline#location-based-results">location-based inline results</a> (the <code>bot_inline_geo</code> flag of the bot's <a href="/constructor/user">user constructor</a> will be set)</li> +<li><code>query</code> - What the user typed after the bot's username</li> +<li><code>offset</code> - If the user scrolls past the first <code>len(results)</code> results, and <code>next_offset</code> field is set, the inline query should be repeated with this offset.</li> +</ul> +</li> +</ul> +<h3><a class="anchor" href="#answering-to-an-inline-query" id="answering-to-an-inline-query" name="answering-to-an-inline-query"><i class="anchor-icon"></i></a>Answering to an inline query</h3> +<pre><code><a href='/constructor/inputBotInlineMessageMediaAuto'>inputBotInlineMessageMediaAuto</a>#3380c786 flags:<a href='/type/%23'>#</a> message:<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageText'>inputBotInlineMessageText</a>#3dcd7a87 flags:<a href='/type/%23'>#</a> no_webpage:flags.0?<a href='/constructor/true'>true</a> message:<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageMediaGeo'>inputBotInlineMessageMediaGeo</a>#96929a85 flags:<a href='/type/%23'>#</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> heading:flags.0?<a href='/type/int'>int</a> period:flags.1?<a href='/type/int'>int</a> proximity_notification_radius:flags.3?<a href='/type/int'>int</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageMediaVenue'>inputBotInlineMessageMediaVenue</a>#417bbf11 flags:<a href='/type/%23'>#</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> provider:<a href='/type/string'>string</a> venue_id:<a href='/type/string'>string</a> venue_type:<a href='/type/string'>string</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageMediaContact'>inputBotInlineMessageMediaContact</a>#a6edbffd flags:<a href='/type/%23'>#</a> phone_number:<a href='/type/string'>string</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> vcard:<a href='/type/string'>string</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; +<a href='/constructor/inputBotInlineMessageGame'>inputBotInlineMessageGame</a>#4b425864 flags:<a href='/type/%23'>#</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a>; + +<a href='/constructor/inputBotInlineResult'>inputBotInlineResult</a>#88bf9319 flags:<a href='/type/%23'>#</a> id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> title:flags.1?<a href='/type/string'>string</a> description:flags.2?<a href='/type/string'>string</a> url:flags.3?<a href='/type/string'>string</a> thumb:flags.4?<a href='/type/InputWebDocument'>InputWebDocument</a> content:flags.5?<a href='/type/InputWebDocument'>InputWebDocument</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>; +<a href='/constructor/inputBotInlineResultPhoto'>inputBotInlineResultPhoto</a>#a8d864a7 id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> photo:<a href='/type/InputPhoto'>InputPhoto</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>; +<a href='/constructor/inputBotInlineResultDocument'>inputBotInlineResultDocument</a>#fff8fdc4 flags:<a href='/type/%23'>#</a> id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> title:flags.1?<a href='/type/string'>string</a> description:flags.2?<a href='/type/string'>string</a> document:<a href='/type/InputDocument'>InputDocument</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>; +<a href='/constructor/inputBotInlineResultGame'>inputBotInlineResultGame</a>#4fa417f2 id:<a href='/type/string'>string</a> short_name:<a href='/type/string'>string</a> send_message:<a href='/type/InputBotInlineMessage'>InputBotInlineMessage</a> = <a href='/type/InputBotInlineResult'>InputBotInlineResult</a>; + +<a href='/constructor/updateBotInlineQuery'>updateBotInlineQuery</a>#496f379c flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> query:<a href='/type/string'>string</a> geo:flags.0?<a href='/type/GeoPoint'>GeoPoint</a> peer_type:flags.1?<a href='/type/InlineQueryPeerType'>InlineQueryPeerType</a> offset:<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.setInlineBotResults'>messages.setInlineBotResults</a>#eb5ea206 flags:<a href='/type/%23'>#</a> gallery:flags.0?<a href='/constructor/true'>true</a> private:flags.1?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> results:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputBotInlineResult'>InputBotInlineResult</a>> cache_time:<a href='/type/int'>int</a> next_offset:flags.2?<a href='/type/string'>string</a> switch_pm:flags.3?<a href='/type/InlineBotSwitchPM'>InlineBotSwitchPM</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Bots can answer to incoming <a href="/constructor/updateBotInlineQuery">updateBotInlineQuery</a> updates using <a href="/method/messages.setInlineBotResults">messages.setInlineBotResults</a>.<br> +Just like its <a href="/bots/api#answerinlinequery">bot API counterpart</a>, the method can be used to send a set of inline results to the user; see the <a href="/method/messages.setInlineBotResults">constructor page for more info on the MTProto method parameters »</a>.</p> +<p>In general, the method accepts a vector of <a href="/type/InputBotInlineResult">InputBotInlineResult</a> constructors, that when <a href="#sending-the-inline-query-result">chosen</a>, generates a message with optionally attached media, and even inline buttons.</p> +<h3><a class="anchor" href="#sending-the-inline-query-result" id="sending-the-inline-query-result" name="sending-the-inline-query-result"><i class="anchor-icon"></i></a>Sending the inline query result</h3> +<pre><code><a href='/constructor/botInlineMessageMediaAuto'>botInlineMessageMediaAuto</a>#764cf810 flags:<a href='/type/%23'>#</a> message:<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; +<a href='/constructor/botInlineMessageText'>botInlineMessageText</a>#8c7f65e2 flags:<a href='/type/%23'>#</a> no_webpage:flags.0?<a href='/constructor/true'>true</a> message:<a href='/type/string'>string</a> entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; +<a href='/constructor/botInlineMessageMediaGeo'>botInlineMessageMediaGeo</a>#51846fd flags:<a href='/type/%23'>#</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> heading:flags.0?<a href='/type/int'>int</a> period:flags.1?<a href='/type/int'>int</a> proximity_notification_radius:flags.3?<a href='/type/int'>int</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; +<a href='/constructor/botInlineMessageMediaVenue'>botInlineMessageMediaVenue</a>#8a86659c flags:<a href='/type/%23'>#</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> provider:<a href='/type/string'>string</a> venue_id:<a href='/type/string'>string</a> venue_type:<a href='/type/string'>string</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; +<a href='/constructor/botInlineMessageMediaContact'>botInlineMessageMediaContact</a>#18d1cdc2 flags:<a href='/type/%23'>#</a> phone_number:<a href='/type/string'>string</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> vcard:<a href='/type/string'>string</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> = <a href='/type/BotInlineMessage'>BotInlineMessage</a>; + +<a href='/constructor/botInlineResult'>botInlineResult</a>#11965f3a flags:<a href='/type/%23'>#</a> id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> title:flags.1?<a href='/type/string'>string</a> description:flags.2?<a href='/type/string'>string</a> url:flags.3?<a href='/type/string'>string</a> thumb:flags.4?<a href='/type/WebDocument'>WebDocument</a> content:flags.5?<a href='/type/WebDocument'>WebDocument</a> send_message:<a href='/type/BotInlineMessage'>BotInlineMessage</a> = <a href='/type/BotInlineResult'>BotInlineResult</a>; +<a href='/constructor/botInlineMediaResult'>botInlineMediaResult</a>#17db940b flags:<a href='/type/%23'>#</a> id:<a href='/type/string'>string</a> type:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/Photo'>Photo</a> document:flags.1?<a href='/type/Document'>Document</a> title:flags.2?<a href='/type/string'>string</a> description:flags.3?<a href='/type/string'>string</a> send_message:<a href='/type/BotInlineMessage'>BotInlineMessage</a> = <a href='/type/BotInlineResult'>BotInlineResult</a>; + +<a href='/constructor/messages.botResults'>messages.botResults</a>#947ca848 flags:<a href='/type/%23'>#</a> gallery:flags.0?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> next_offset:flags.1?<a href='/type/string'>string</a> switch_pm:flags.2?<a href='/type/InlineBotSwitchPM'>InlineBotSwitchPM</a> results:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInlineResult'>BotInlineResult</a>> cache_time:<a href='/type/int'>int</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/messages.BotResults'>messages.BotResults</a>; + +---functions--- + +<a href='/method/messages.sendInlineBotResult'>messages.sendInlineBotResult</a>#220815b0 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> hide_via:flags.11?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> random_id:<a href='/type/long'>long</a> query_id:<a href='/type/long'>long</a> id:<a href='/type/string'>string</a> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>The user client should display the <code>results</code> obtained <a href="#making-an-inline-query">during querying</a> in a list, making sure to handle eventual bot timeouts in the form of a <code>BOT_RESPONSE_TIMEOUT</code> RPC error, by simply not displaying anything.</p> +<p>If the user then chooses a specific <code>BotInlineResult</code>, the <a href="/method/messages.sendInlineBotResult">messages.sendInlineBotResult</a> method should be invoked, passing:</p> +<ul> +<li>The <code>query_id</code> from <code>messages.botResults</code></li> +<li>The <code>id</code> of the chosen result</li> +<li>The <code>peer</code> where to send the chosen result</li> +</ul> +<p>The resulting <a href="/constructor/message">message</a> will have the <code>via_bot_id</code> field set, to indicate that the result was generated by the bot that generated the inline result.<br> +Graphical clients should display the bot <code>@username</code> in the header of the message, allowing the user to click on it, automatically starting an inline query by inserting <code>@username</code> in the text bar.</p> +<h3><a class="anchor" href="#inline-feedback" id="inline-feedback" name="inline-feedback"><i class="anchor-icon"></i></a>Inline feedback</h3> +<pre><code><a href='/constructor/inputBotInlineMessageID'>inputBotInlineMessageID</a>#890c3d89 dc_id:<a href='/type/int'>int</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a>; + +<a href='/constructor/updateBotInlineSend'>updateBotInlineSend</a>#12f12a07 flags:<a href='/type/%23'>#</a> user_id:<a href='/type/long'>long</a> query:<a href='/type/string'>string</a> geo:flags.0?<a href='/type/GeoPoint'>GeoPoint</a> id:<a href='/type/string'>string</a> msg_id:flags.1?<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> = <a href='/type/Update'>Update</a>;</code></pre> +<p>If <a href="/bots/inline#collecting-feedback">feedback collection</a> is enabled, the bot may receive an <a href="/constructor/updateBotInlineSend">updateBotInlineSend</a> when the user <a href="#sending-the-inline-query-result">chooses and sends</a> an inline result. </p> +<p>Even if the <a href="/bots/inline#collecting-feedback">probability setting is set to 100%</a>, not all inline results may be reported due to caching (see the <code>cache_time</code> parameter in <a href="/api/bots/buttons#answering-a-callback-query">Answering a callback query</a>).<br> +<a href="/bots/inline#collecting-feedback">Feedback collection</a> can also create load issues for popular bots, so adjust the probability setting to a lower value in such cases.</p> +<p>Either way, feedback collection should only be used for statistical purposes rather than functional. </p> +<p>The <a href="/constructor/updateBotInlineSend">updateBotInlineSend</a> will contain: </p> +<ul> +<li><code>id</code> - The ID of the chosen result</li> +<li><code>msg_id</code> - The ID of the sent inline message</li> +<li><code>user_id</code> - The ID of the user that chose the result</li> +<li><code>query</code> - The query string that was used to obtain the result</li> +<li><code>geo</code> - For bots requiring <a href="/bots/inline#location-based-results">location-based inline results</a>, the user's location</li> +</ul> +<h3><a class="anchor" href="#editing-sent-inline-messages" id="editing-sent-inline-messages" name="editing-sent-inline-messages"><i class="anchor-icon"></i></a>Editing sent inline messages</h3> +<pre><code><a href='/constructor/updateInlineBotCallbackQuery'>updateInlineBotCallbackQuery</a>#691e9052 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> msg_id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> chat_instance:<a href='/type/long'>long</a> data:flags.0?<a href='/type/bytes'>bytes</a> game_short_name:flags.1?<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>; + +<a href='/constructor/inputBotInlineMessageID'>inputBotInlineMessageID</a>#890c3d89 dc_id:<a href='/type/int'>int</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a>; + +---functions--- + +<a href='/method/messages.editInlineBotMessage'>messages.editInlineBotMessage</a>#83557dba flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> id:<a href='/type/InputBotInlineMessageID'>InputBotInlineMessageID</a> message:flags.11?<a href='/type/string'>string</a> media:flags.14?<a href='/type/InputMedia'>InputMedia</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Sent inline messages can be edited by the bot, for example in response to a <a href="/api/bots/buttons#callback-queries">button press callback query</a>. </p> +<p>Simply pass the <a href="/constructor/inputBotInlineMessageID">inputBotInlineMessageID</a> specified in the <a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a> to <a href="/method/messages.editInlineBotMessage">messages.editInlineBotMessage</a> along with the new message, making sure to send the query to the <a href="/api/datacenter">datacenter</a> specified in <code>inputBotInlineMessageID.dc_id</code>.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/channel.html b/data/corefork.telegram.org/api/channel.html new file mode 100644 index 0000000000..dadc7ad4f6 --- /dev/null +++ b/data/corefork.telegram.org/api/channel.html @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Channels</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to handle channels, supergroups, groups, and what's the difference between them."> + <meta property="og:title" content="Channels"> + <meta property="og:image" content="2831d0518f782d1977"> + <meta property="og:description" content="How to handle channels, supergroups, groups, and what's the difference between them."> + <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?215" 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/channel" >Channels</a></li></ul></div> + <h1 id="dev_page_title">Channels</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<h3><a class="anchor" href="#channels-chats-supergroups--gigagroups" id="channels-chats-supergroups--gigagroups" name="channels-chats-supergroups--gigagroups"><i class="anchor-icon"></i></a>Channels, chats, supergroups & gigagroups</h3> +<p><a href="https://telegram.org/tour/channels">Channels</a> are a tool for broadcasting your messages to large audiences. They can have an unlimited number of subscribers, they can be public with a permanent URL and each post in a channel has its own view counter.<br> +Technically, they are represented by <a href="/constructor/channel">channel</a> constructors. </p> +<p><a href="https://telegram.org/tour/groups">Supergroups</a> are a powerful tool for building communities and can support up to 200,000 members each.<br> +Technically, supergroups are actually channels: they are represented by <a href="/constructor/channel">channel</a> constructors, with the <code>megagroup</code> flag set to true. </p> +<p>Gigagroups are something inbetween a channel and a supergroup.<br> +An admin, <a href="/api/config#channel-suggestions">when prompted by the API using suggestions »</a>, can convert a megagroup into a gigagroup using <a href="/method/channels.convertToGigagroup">channels.convertToGigagroup</a> (one way only).<br> +After that, only admins will be able to write in the group (like when <a href="#rights"><code>send_messages</code> rights are disabled for all group participants by default</a>), but the participant limit is removed and the group can become much bigger than a supergroup (e.g. >200,000 currently).<br> +Also, one can't invite people into gigagroups and participants of voice chats in gigagroups are muted by default. </p> +<p>Channels and supergroups can be created using the <a href="/method/channels.createChannel">channels.createChannel</a> method, by setting the appropriate <code>broadcast</code> or <code>megagroup</code> flags.<br> +Supergroups can also be assigned a <code>geo_point</code> to become <a href="https://telegram.org/blog/contacts-local-groups">geochats</a>. </p> +<p>In previous versions of telegram, only normal groups (represented by <a href="/constructor/chat">chat</a> constructors) could be created using <a href="/method/messages.createChat">messages.createChat</a>: these groups have fewer features, and can only have 200 members at max.</p> +<h3><a class="anchor" href="#migration" id="migration" name="migration"><i class="anchor-icon"></i></a>Migration</h3> +<p>To upgrade a legacy group to a supergroup, <a href="/method/messages.migrateChat">messages.migrateChat</a> can be used. +The <code>chats</code> field of the result will have two objects: </p> +<ul> +<li>A <a href="/constructor/chat">chat</a> constructor with a <code>migrated_to</code> field, indicating the address of the new supergroup</li> +<li>The new <a href="/constructor/channel">channel</a> megagroup constructor</li> +</ul> +<p>When <a href="/method/channels.getFullChannel">getting full info</a> about the migrated channel, the <a href="/constructor/channelFull">channelFull</a> object will have <code>migrated_from_chat_id</code> and <code>migrated_from_max_id</code> fields indicating the original ID of the chat, and the message ID in the original chat at which the group was migrated.</p> +<p>All users of the chat will receive an <a href="/constructor/updateNewMessage">updateNewMessage</a> from the old chat with a <a href="/constructor/messageService">messageService</a> containing a <a href="/constructor/messageActionChatMigrateTo">messageActionChatMigrateTo</a> constructor.</p> +<p>All new messages have to be sent to the new supergroup.</p> +<p>When working with migrated groups clients need to handle loading of the message history (as well as search results et cetera) from both the legacy group and the new supergroup. This is done by merging the two messages lists (requested with different <a href="/type/Peer">Peer</a> values) client side.</p> +<h3><a class="anchor" href="#rights" id="rights" name="rights"><i class="anchor-icon"></i></a>Rights</h3> +<p>Channels, legacy groups and supergroups allow setting <a href="https://telegram.org/blog/permissions-groups-undo">granular permissions</a> both for admins and specific users; channels, supergroups and legacy groups also allow setting global granular permissions for users.</p> +<p>For more info on how to set and modify rights, see <a href="/api/rights">here »</a>.</p> +<h3><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a>Pinned messages</h3> +<p>Telegram allows pinning multiple messages on top in a chat, group, supergroup or channel. </p> +<p>See <a href="/api/pin">here »</a> for more info on pinning and unpinning messages. </p> +<h3><a class="anchor" href="#discussion" id="discussion" name="discussion"><i class="anchor-icon"></i></a>Discussion</h3> +<p>Groups can be associated to a channel as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts. </p> +<p>For more info on how to set a discussion group in channel, see <a href="/api/discussion">here »</a></p> +<h3><a class="anchor" href="#recent-actions" id="recent-actions" name="recent-actions"><i class="anchor-icon"></i></a>Recent actions</h3> +<p>Both supergroups and channels offer a so-called <a href="https://telegram.org/blog/admin-revolution">admin log</a>, a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more.</p> +<p>See <a href="/api/recent-actions">here »</a> for more info.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/config.html b/data/corefork.telegram.org/api/config.html new file mode 100644 index 0000000000..7cc87667f9 --- /dev/null +++ b/data/corefork.telegram.org/api/config.html @@ -0,0 +1,422 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Client configuration</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods."> + <meta property="og:title" content="Client configuration"> + <meta property="og:image" content=""> + <meta property="og:description" content="The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods."> + <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?215" 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/config" >Client configuration</a></li></ul></div> + <h1 id="dev_page_title">Client configuration</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods. </p> +<h3><a class="anchor" href="#mtproto-configuration" id="mtproto-configuration" name="mtproto-configuration"><i class="anchor-icon"></i></a>MTProto configuration</h3> +<pre><code><a href='/constructor/config'>config</a>#330b4067 flags:<a href='/type/%23'>#</a> phonecalls_enabled:flags.1?<a href='/constructor/true'>true</a> default_p2p_contacts:flags.3?<a href='/constructor/true'>true</a> preload_featured_stickers:flags.4?<a href='/constructor/true'>true</a> ignore_phone_entities:flags.5?<a href='/constructor/true'>true</a> revoke_pm_inbox:flags.6?<a href='/constructor/true'>true</a> blocked_mode:flags.8?<a href='/constructor/true'>true</a> pfs_enabled:flags.13?<a href='/constructor/true'>true</a> date:<a href='/type/int'>int</a> expires:<a href='/type/int'>int</a> test_mode:<a href='/type/Bool'>Bool</a> this_dc:<a href='/type/int'>int</a> dc_options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DcOption'>DcOption</a>> dc_txt_domain_name:<a href='/type/string'>string</a> chat_size_max:<a href='/type/int'>int</a> megagroup_size_max:<a href='/type/int'>int</a> forwarded_count_max:<a href='/type/int'>int</a> online_update_period_ms:<a href='/type/int'>int</a> offline_blur_timeout_ms:<a href='/type/int'>int</a> offline_idle_timeout_ms:<a href='/type/int'>int</a> online_cloud_timeout_ms:<a href='/type/int'>int</a> notify_cloud_delay_ms:<a href='/type/int'>int</a> notify_default_delay_ms:<a href='/type/int'>int</a> push_chat_period_ms:<a href='/type/int'>int</a> push_chat_limit:<a href='/type/int'>int</a> saved_gifs_limit:<a href='/type/int'>int</a> edit_time_limit:<a href='/type/int'>int</a> revoke_time_limit:<a href='/type/int'>int</a> revoke_pm_time_limit:<a href='/type/int'>int</a> rating_e_decay:<a href='/type/int'>int</a> stickers_recent_limit:<a href='/type/int'>int</a> stickers_faved_limit:<a href='/type/int'>int</a> channels_read_media_period:<a href='/type/int'>int</a> tmp_sessions:flags.0?<a href='/type/int'>int</a> pinned_dialogs_count_max:<a href='/type/int'>int</a> pinned_infolder_count_max:<a href='/type/int'>int</a> call_receive_timeout_ms:<a href='/type/int'>int</a> call_ring_timeout_ms:<a href='/type/int'>int</a> call_connect_timeout_ms:<a href='/type/int'>int</a> call_packet_timeout_ms:<a href='/type/int'>int</a> me_url_prefix:<a href='/type/string'>string</a> autoupdate_url_prefix:flags.7?<a href='/type/string'>string</a> gif_search_username:flags.9?<a href='/type/string'>string</a> venue_search_username:flags.10?<a href='/type/string'>string</a> img_search_username:flags.11?<a href='/type/string'>string</a> static_maps_provider:flags.12?<a href='/type/string'>string</a> caption_length_max:<a href='/type/int'>int</a> message_length_max:<a href='/type/int'>int</a> webfile_dc_id:<a href='/type/int'>int</a> suggested_lang_code:flags.2?<a href='/type/string'>string</a> lang_pack_version:flags.2?<a href='/type/int'>int</a> base_lang_pack_version:flags.2?<a href='/type/int'>int</a> = <a href='/type/Config'>Config</a>; +<a href='/constructor/nearestDc'>nearestDc</a>#8e1a1775 country:<a href='/type/string'>string</a> this_dc:<a href='/type/int'>int</a> nearest_dc:<a href='/type/int'>int</a> = <a href='/type/NearestDc'>NearestDc</a>; + +---functions--- + +<a href='/method/help.getConfig'>help.getConfig</a>#c4f9186b = <a href='/type/Config'>Config</a>; +<a href='/method/help.getNearestDc'>help.getNearestDc</a>#1fb33026 = <a href='/type/NearestDc'>NearestDc</a>;</code></pre> +<p>The huge <a href="/constructor/config">config</a> constructor contains lots of useful information, from chat and message size limitations, to privacy settings, online status refresh interval and timeout, VoIP configuration, default inline bot usernames for GIF, image and venue lookup, and lots of other global and user-specific information, check out the <a href="/constructor/config">constructor page</a> for more information.</p> +<h3><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a>Client configuration</h3> +<pre><code><a href='/constructor/jsonObjectValue'>jsonObjectValue</a>#c0de1bd9 key:<a href='/type/string'>string</a> value:<a href='/type/JSONValue'>JSONValue</a> = <a href='/type/JSONObjectValue'>JSONObjectValue</a>; + +<a href='/constructor/jsonNull'>jsonNull</a>#3f6d7b68 = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonBool'>jsonBool</a>#c7345e6a value:<a href='/type/Bool'>Bool</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonNumber'>jsonNumber</a>#2be0dfa4 value:<a href='/type/double'>double</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonString'>jsonString</a>#b71e767a value:<a href='/type/string'>string</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonArray'>jsonArray</a>#f7444763 value:<a href='/type/Vector%20t'>Vector</a><<a href='/type/JSONValue'>JSONValue</a>> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonObject'>jsonObject</a>#99c1d49d value:<a href='/type/Vector%20t'>Vector</a><<a href='/type/JSONObjectValue'>JSONObjectValue</a>> = <a href='/type/JSONValue'>JSONValue</a>; + +---functions--- + +<a href='/method/help.getAppConfig'>help.getAppConfig</a>#98914110 = <a href='/type/JSONValue'>JSONValue</a>;</code></pre> +<p>The <a href="/method/help.getAppConfig">help.getAppConfig</a> method returns a JSON object containing rapidly evolving, client-specific configuration parameters.<br> +While <a href="/method/help.getConfig">help.getConfig</a> returns MTProto-specific configuration with information about server-side limitations and other MTProto-related information, <a href="/method/help.getAppConfig">help.getAppConfig</a> returns configuration parameters useful for graphical Telegram clients.</p> +<p>Typical fields included in the resulting JSON object are: </p> +<ul> +<li><code>emojies_animated_zoom</code> - <a href="/api/animated-emojis">Animated emojis</a> and <a href="/api/dice">animated dice</a> should be scaled by this factor before being shown to the user (float)</li> +<li><code>keep_alive_service</code> - Whether app clients should start a keepalive service to keep the app running and fetch updates even when the app is closed (boolean)</li> +<li><code>background_connection</code> - Whether app clients should start a background TCP connection for MTProto update fetching (boolean)</li> +<li><code>emojies_send_dice</code> - A list of supported <a href="/api/dice">animated dice</a> stickers (array of strings).</li> +<li><code>emojies_send_dice_success</code> - For <a href="/api/dice">animated dice</a> emojis other than the basic <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />, indicates the winning dice value and the final frame of the animated sticker, at which to show the fireworks <img class="emoji" src="//telegram.org/img/emoji/40/F09F8E86.png" width="20" height="20" alt="🎆" /> (object with emoji keys and object values, containing <code>value</code> and <code>frame_start</code> float values)</li> +<li><code>emojies_sounds</code> - A map of soundbites to be played when the user clicks on the specified <a href="/api/animated-emojis">animated emoji</a>; the <a href="/api/file_reference">file reference field</a> should be base64-decoded before <a href="/api/files">downloading the file</a> (map of <a href="/api/files">file IDs</a>, with emoji string keys)</li> +<li><code>gif_search_branding</code> - Specifies the name of the service providing GIF search through <a href="#mtproto-configuration">gif_search_username</a> (string)</li> +<li><code>gif_search_emojies</code> - Specifies a list of emojies that should be suggested as search term in a bar above the GIF search box (array of string emojis)</li> +<li><code>stickers_emoji_suggest_only_api</code> - Specifies that the app should not display local sticker suggestions for emojis at all and just use the result of <a href="/method/messages.getStickers">messages.getStickers</a> (bool)</li> +<li><code>stickers_emoji_cache_time</code> - Specifies the validity period of the local cache of <a href="/method/messages.getStickers">messages.getStickers</a>, also relevant when generating the <a href="/api/offsets#hash-generation">pagination hash</a> when invoking the method. (int)</li> +<li><code>qr_login_camera</code> - Whether the Settings->Devices menu should show an option to scan a <a href="/api/qr-login">QR login code</a> (boolean)</li> +<li><code>qr_login_code</code> - Whether the login screen should show a <a href="/api/qr-login">QR code login option</a>, possibly as default login method (string, "disabled", "primary" or "secondary")</li> +<li><code>dialog_filters_enabled</code> - Whether clients should show an option for managing <a href="/api/folders">dialog filters AKA folders</a> (boolean)</li> +<li><code>dialog_filters_tooltip</code> - Whether clients should actively show a tooltip, inviting the user to configure <a href="/api/folders">dialog filters AKA folders</a>; typically this happens when the chat list is long enough to start getting cluttered. (boolean)</li> +<li><code>autoarchive_setting_available</code> - Whether clients <em>can</em> invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a> with <a href="/constructor/globalPrivacySettings"><code>globalPrivacySettings.archive_and_mute_new_noncontact_peers = boolTrue</code></a>, to automatically archive and mute new incoming chats from non-contacts. (boolean)</li> +<li><code>pending_suggestions</code> - Contains a list of suggestions that should be actively shown as a tooltip to the user. (Array of strings, possible values shown <a href="#suggestions">in the suggestions section »</a>. </li> +<li><code>url_auth_domains</code> - A list of domains that support automatic login with manual user confirmation, <a href="/api/url-authorization#link-url-authorization">click here for more info on URL authorization »</a>. (array of strings)</li> +<li><code>autologin_domains</code> - A list of Telegram domains that support automatic login with no user confirmation, <a href="/api/url-authorization#link-url-authorization">click here for more info on URL authorization »</a>. (array of strings)</li> +<li><code>autologin_token</code> - Autologin token, <a href="/api/url-authorization#link-url-authorization">click here for more info on URL authorization »</a>. (string)</li> +<li><code>round_video_encoding</code> - Contains a set of recommended codec parameters for round videos. </li> +<li><code>chat_read_mark_size_threshold</code> - Per-user read receipts, fetchable using <a href="/method/messages.getMessageReadParticipants">messages.getMessageReadParticipants</a> will be available in groups with less than <code>chat_read_mark_size_threshold</code> participants. (int)</li> +<li><code>chat_read_mark_expire_period</code> - To protect user privacy, read receipts are only stored for <code>chat_read_mark_expire_period</code> seconds after the message was sent. (int)</li> +</ul> +<p>Example value: </p> +<pre><code class="language-json">{ + "test": 1, + "emojies_animated_zoom": 0.625, + "emojies_send_dice": [ + "\ud83c\udfb2", + "\ud83c\udfaf", + "\ud83c\udfc0", + "\u26bd", + "\u26bd\ufe0f", + "\ud83c\udfb0", + "\ud83c\udfb3" + ], + "emojies_send_dice_success": { + "\ud83c\udfaf": { + "value": 6, + "frame_start": 62 + }, + "\ud83c\udfc0": { + "value": 5, + "frame_start": 110 + }, + "\u26bd": { + "value": 5, + "frame_start": 110 + }, + "\u26bd\ufe0f": { + "value": 5, + "frame_start": 110 + }, + "\ud83c\udfb0": { + "value": 64, + "frame_start": 110 + }, + "\ud83c\udfb3": { + "value": 6, + "frame_start": 110 + } + }, + "emojies_sounds": { + "\ud83c\udf83": { + "id": "4956223179606458539", + "access_hash": "-2107001400913062971", + "file_reference_base64": "AGFhvoKbftK5O9K9RpgN1ZtgSzWy" + }, + "\u26b0": { + "id": "4956223179606458540", + "access_hash": "-1498869544183595185", + "file_reference_base64": "AGFhvoJIm8Uz0qSMIdm3AsKlK7wJ" + }, + "\ud83e\udddf\u200d\u2642": { + "id": "4960929110848176331", + "access_hash": "3986395821757915468", + "file_reference_base64": "AGFhvoLtXSSIclmvfg6ePz3KsHQF" + }, + "\ud83e\udddf": { + "id": "4960929110848176332", + "access_hash": "-8929417974289765626", + "file_reference_base64": "AGFhvoImaz5Umt4GvMUD5nocIu0W" + }, + "\ud83e\udddf\u200d\u2640": { + "id": "4960929110848176333", + "access_hash": "9161696144162881753", + "file_reference_base64": "AGFhvoIm1QZsb48xlpRfh4Mq7EMG" + }, + "\ud83c\udf51": { + "id": "4963180910661861548", + "access_hash": "-7431729439735063448", + "file_reference_base64": "AGFhvoKLrwl_WKr5LR0Jjs7o3RyT" + }, + "\ud83c\udf8a": { + "id": "5094064004578410732", + "access_hash": "8518192996098758509", + "file_reference_base64": "AGFhvoKMNffRV2J3vKED0O6d8e42" + }, + "\ud83c\udf84": { + "id": "5094064004578410733", + "access_hash": "-4142643820629256996", + "file_reference_base64": "AGFhvoJ1ulPBbXEURlTZWwJFx6xZ" + }, + "\ud83e\uddbe": { + "id": "5094064004578410734", + "access_hash": "-8934384022571962340", + "file_reference_base64": "AGFhvoL4zdMRmYv9z3L8KPaX4JQL" + } + }, + "gif_search_branding": "tenor", + "gif_search_emojies": [ + "\ud83d\udc4d", + "\ud83d\ude18", + "\ud83d\ude0d", + "\ud83d\ude21", + "\ud83e\udd73", + "\ud83d\ude02", + "\ud83d\ude2e", + "\ud83d\ude44", + "\ud83d\ude0e", + "\ud83d\udc4e" + ], + "stickers_emoji_suggest_only_api": false, + "stickers_emoji_cache_time": 86400, + "qr_login_camera": false, + "qr_login_code": "disabled", + "dialog_filters_enabled": true, + "dialog_filters_tooltip": false, + "autoarchive_setting_available": false, + "pending_suggestions": [ + "AUTOARCHIVE_POPULAR", + "VALIDATE_PASSWORD", + "VALIDATE_PHONE_NUMBER", + "NEWCOMER_TICKS" + ], + "autologin_token": "string", + "autologin_domains": [ + "instantview.telegram.org", + "translations.telegram.org", + "contest.dev", + "contest.com", + "bugs.telegram.org", + "suggestions.telegram.org", + "themes.telegram.org" + ], + "url_auth_domains": [ + "somedomain.telegram.org" + ], + "round_video_encoding": { + "diameter": 384, + "video_bitrate": 1000, + "audio_bitrate": 64, + "max_size": 12582912 + }, + "chat_read_mark_size_threshold": 50, + "chat_read_mark_expire_period": 604800 +}</code></pre> +<h3><a class="anchor" href="#suggestions" id="suggestions" name="suggestions"><i class="anchor-icon"></i></a>Suggestions</h3> +<p>The API can return a set of useful suggestions for users of graphical clients. </p> +<h4><a class="anchor" href="#basic-suggestions" id="basic-suggestions" name="basic-suggestions"><i class="anchor-icon"></i></a>Basic suggestions</h4> +<pre><code><a href='/constructor/jsonObjectValue'>jsonObjectValue</a>#c0de1bd9 key:<a href='/type/string'>string</a> value:<a href='/type/JSONValue'>JSONValue</a> = <a href='/type/JSONObjectValue'>JSONObjectValue</a>; + +<a href='/constructor/jsonNull'>jsonNull</a>#3f6d7b68 = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonBool'>jsonBool</a>#c7345e6a value:<a href='/type/Bool'>Bool</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonNumber'>jsonNumber</a>#2be0dfa4 value:<a href='/type/double'>double</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonString'>jsonString</a>#b71e767a value:<a href='/type/string'>string</a> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonArray'>jsonArray</a>#f7444763 value:<a href='/type/Vector%20t'>Vector</a><<a href='/type/JSONValue'>JSONValue</a>> = <a href='/type/JSONValue'>JSONValue</a>; +<a href='/constructor/jsonObject'>jsonObject</a>#99c1d49d value:<a href='/type/Vector%20t'>Vector</a><<a href='/type/JSONObjectValue'>JSONObjectValue</a>> = <a href='/type/JSONValue'>JSONValue</a>; + +---functions--- + +<a href='/method/help.getAppConfig'>help.getAppConfig</a>#98914110 = <a href='/type/JSONValue'>JSONValue</a>;</code></pre> +<p>The <a href="/method/help.getAppConfig">help.getAppConfig</a> method returns a JSON object containing rapidly evolving, client-specific configuration parameters.<br> +A full list of these parameters can be seen in the <a href="#client-configuration">Client Configuration section »</a>, but we're mostly interested in the <code>pending_suggestions</code> and <code>autoarchive_setting_available</code> fields of the returned JSON object: </p> +<ul> +<li><code>autoarchive_setting_available</code> - Whether clients <em>can</em> invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a> with <a href="/constructor/globalPrivacySettings"><code>globalPrivacySettings.archive_and_mute_new_noncontact_peers = boolTrue</code></a>, to automatically archive and mute new incoming chats from non-contacts. (boolean)</li> +<li><code>pending_suggestions</code> - Contains a list of suggestions that should be actively shown as a tooltip to the user. Array of strings, possible values shown below:<ul> +<li><code>"AUTOARCHIVE_POPULAR"</code> - Users <em>should</em> invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a> with <a href="/constructor/globalPrivacySettings"><code>globalPrivacySettings.archive_and_mute_new_noncontact_peers = boolTrue</code></a>, to automatically archive and mute new incoming chats from non-contacts.</li> +<li><code>"VALIDATE_PASSWORD"</code> - Users should make sure they still remember their <a href="/api/srp">2-step verification password</a>.</li> +<li><code>"VALIDATE_PHONE_NUMBER"</code> - Users should check whether their <a href="/api/auth">authorization phone number</a> is correct and change the phone number if it is inaccessible.</li> +<li><code>"NEWCOMER_TICKS"</code> - Show the user a hint about the meaning of one and two ticks on sent messages.</li> +</ul> +</li> +</ul> +<h4><a class="anchor" href="#channel-suggestions" id="channel-suggestions" name="channel-suggestions"><i class="anchor-icon"></i></a>Channel suggestions</h4> +<pre><code><a href='/constructor/messages.chatFull'>messages.chatFull</a>#e5d7d19c full_chat:<a href='/type/ChatFull'>ChatFull</a> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/messages.ChatFull'>messages.ChatFull</a>; + +<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; + +---functions--- + +<a href='/method/channels.getFullChannel'>channels.getFullChannel</a>#8736a09 channel:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/messages.ChatFull'>messages.ChatFull</a>;</code></pre> +<p>Some <a href="/api/channel">channel/supergroup</a>-related suggestions can also be contained in the <code>pending_suggestions</code> field of the <a href="/constructor/channelFull">channelFull</a> constructor, returned by <a href="/method/channels.getFullChannel">channels.getFullChannel</a>.<br> +Here's a list of possible suggestions: </p> +<ul> +<li><code>CONVERT_GIGAGROUP</code> - The <a href="/api/channel">supergroup</a> has many participants: the admin should call <a href="/method/channels.convertToGigagroup">channels.convertToGigagroup</a> to convert it to a gigagroup.</li> +</ul> +<h4><a class="anchor" href="#dismissing-suggestions" id="dismissing-suggestions" name="dismissing-suggestions"><i class="anchor-icon"></i></a>Dismissing suggestions</h4> +<pre><code><a href='/constructor/boolFalse'>boolFalse</a>#bc799737 = <a href='/type/Bool'>Bool</a>; +<a href='/constructor/boolTrue'>boolTrue</a>#997275b5 = <a href='/type/Bool'>Bool</a>; + +---functions--- + +<a href='/method/help.dismissSuggestion'>help.dismissSuggestion</a>#f50dbaa1 peer:<a href='/type/InputPeer'>InputPeer</a> suggestion:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p><a href="/method/help.dismissSuggestion">help.dismissSuggestion</a> can be used to dismiss a suggestion.<br> +Pass <a href="/constructor/inputPeerEmpty">inputPeerEmpty</a> to <code>peer</code> for <a href="#basic-suggestions">basic suggestions</a> and the <a href="/api/channel">channel/supergroup</a>'s peer for <a href="#channel-suggestions">channel suggestions</a>.</p> +<h3><a class="anchor" href="#app-specific-configuration" id="app-specific-configuration" name="app-specific-configuration"><i class="anchor-icon"></i></a>App-specific configuration</h3> +<pre><code><a href='/constructor/help.appUpdate'>help.appUpdate</a>#ccbbce30 flags:<a href='/type/%23'>#</a> can_not_skip:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> version:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> entities:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> document:flags.1?<a href='/type/Document'>Document</a> url:flags.2?<a href='/type/string'>string</a> sticker:flags.3?<a href='/type/Document'>Document</a> = <a href='/type/help.AppUpdate'>help.AppUpdate</a>; +<a href='/constructor/help.noAppUpdate'>help.noAppUpdate</a>#c45a6536 = <a href='/type/help.AppUpdate'>help.AppUpdate</a>; + +<a href='/constructor/updates'>updates</a>#74ae4240 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateServiceNotification'>updateServiceNotification</a>#ebe46819 flags:<a href='/type/%23'>#</a> popup:flags.0?<a href='/constructor/true'>true</a> inbox_date:flags.1?<a href='/type/int'>int</a> type:<a href='/type/string'>string</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> entities:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/Update'>Update</a>; + +<a href='/constructor/help.inviteText'>help.inviteText</a>#18cb9f78 message:<a href='/type/string'>string</a> = <a href='/type/help.InviteText'>help.InviteText</a>; + +---functions--- + +<a href='/method/help.getAppUpdate'>help.getAppUpdate</a>#522d5a7d source:<a href='/type/string'>string</a> = <a href='/type/help.AppUpdate'>help.AppUpdate</a>; +<a href='/method/help.getAppChangelog'>help.getAppChangelog</a>#9010ef6f prev_app_version:<a href='/type/string'>string</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/help.getInviteText'>help.getInviteText</a>#4d392343 = <a href='/type/help.InviteText'>help.InviteText</a>;</code></pre> +<ul> +<li><a href="/method/help.getAppUpdate">help.getAppUpdate</a> - Get info about an application update, can contain the updated application binary in the attached document</li> +<li><a href="/method/help.getAppChangelog">help.getAppChangelog</a> - Get a list of service messages with app-specific changelogs</li> +<li><a href="/method/help.getInviteText">help.getInviteText</a> - Returns a localized invitation message that can be sent via SMS to contacts that haven't signed up to Telegram yet</li> +</ul> +<h3><a class="anchor" href="#terms-of-service" id="terms-of-service" name="terms-of-service"><i class="anchor-icon"></i></a>Terms of service</h3> +<pre><code><a href='/constructor/help.termsOfServiceUpdateEmpty'>help.termsOfServiceUpdateEmpty</a>#e3309f7f expires:<a href='/type/int'>int</a> = <a href='/type/help.TermsOfServiceUpdate'>help.TermsOfServiceUpdate</a>; +<a href='/constructor/help.termsOfServiceUpdate'>help.termsOfServiceUpdate</a>#28ecf961 expires:<a href='/type/int'>int</a> terms_of_service:<a href='/type/help.TermsOfService'>help.TermsOfService</a> = <a href='/type/help.TermsOfServiceUpdate'>help.TermsOfServiceUpdate</a>; + +<a href='/constructor/help.termsOfService'>help.termsOfService</a>#780a0310 flags:<a href='/type/%23'>#</a> popup:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/DataJSON'>DataJSON</a> text:<a href='/type/string'>string</a> entities:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> min_age_confirm:flags.1?<a href='/type/int'>int</a> = <a href='/type/help.TermsOfService'>help.TermsOfService</a>; + +<a href='/constructor/auth.authorizationSignUpRequired'>auth.authorizationSignUpRequired</a>#44747e9a flags:<a href='/type/%23'>#</a> terms_of_service:flags.0?<a href='/type/help.TermsOfService'>help.TermsOfService</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>; + +---functions--- + +<a href='/method/help.getTermsOfServiceUpdate'>help.getTermsOfServiceUpdate</a>#2ca51fd1 = <a href='/type/help.TermsOfServiceUpdate'>help.TermsOfServiceUpdate</a>; +<a href='/method/help.acceptTermsOfService'>help.acceptTermsOfService</a>#ee72f79a id:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/Bool'>Bool</a>; + +<a href='/method/auth.signIn'>auth.signIn</a>#bcd51581 phone_number:<a href='/type/string'>string</a> phone_code_hash:<a href='/type/string'>string</a> phone_code:<a href='/type/string'>string</a> = <a href='/type/auth.Authorization'>auth.Authorization</a>; + +<a href='/method/account.deleteAccount'>account.deleteAccount</a>#418d4e0b reason:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>These methods can be used for managing consent to Telegram's <a href="https://telegram.org/tos">Terms Of Service</a>. </p> +<p>Typically, before a user <a href="/api/auth#sign-insign-up">signs up</a> by invoking <a href="/method/auth.signUp">auth.signUp</a>, apps should show a pop-up (if the <code>popup</code> flag of the <a href="/constructor/help.termsOfService">help.termsOfService</a> method is set), asking the user to accept Telegram's terms of service; in case of denial, the user is to be returned to the initial page of the login flow. </p> +<p>When signing up for the first time, the <a href="/constructor/help.termsOfService">help.termsOfService</a> is to be obtained from the <a href="/constructor/auth.authorizationSignUpRequired">auth.authorizationSignUpRequired</a> constructor returned by the <a href="/method/auth.signIn">auth.signIn</a>. </p> +<p>After signing up, or when logging in as an existing user, apps are supposed to call <a href="/method/help.getTermsOfServiceUpdate">help.getTermsOfServiceUpdate</a> to check for any updates to the Terms of Service; this call should be repeated after <code>expires</code> seconds have elapsed.<br> +If an update to the Terms Of Service is available, clients are supposed to show a consent popup; if accepted, clients should call <a href="/method/help.acceptTermsOfService">help.acceptTermsOfService</a>, providing the <a href="/constructor/help.termsOfService">termsOfService <code>id</code> JSON object</a>; in case of denial, clients are to delete the account using <a href="/method/account.deleteAccount">account.deleteAccount</a>, providing <code>Decline ToS update</code> as deletion <code>reason</code>. </p> +<p>Example implementation: <a href="https://github.com/DrKLO/Telegram/blob/dbf81a34affcd1c24d78e1403347ea8b3a186154/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java#L3510">android (signup)</a>, <a href="https://github.com/DrKLO/Telegram/blob/ed9e38da5b3b6ca80a7cb719a000d310d07497b0/TMessagesProj/src/main/java/org/telegram/ui/Components/TermsOfServiceView.java">android (after login)</a></p> +<h3><a class="anchor" href="#telegram-support-info" id="telegram-support-info" name="telegram-support-info"><i class="anchor-icon"></i></a>Telegram support info</h3> +<pre><code><a href='/constructor/user'>user</a>#3ff6ecb0 flags:<a href='/type/%23'>#</a> self:flags.10?<a href='/constructor/true'>true</a> contact:flags.11?<a href='/constructor/true'>true</a> mutual_contact:flags.12?<a href='/constructor/true'>true</a> deleted:flags.13?<a href='/constructor/true'>true</a> bot:flags.14?<a href='/constructor/true'>true</a> bot_chat_history:flags.15?<a href='/constructor/true'>true</a> bot_nochats:flags.16?<a href='/constructor/true'>true</a> verified:flags.17?<a href='/constructor/true'>true</a> restricted:flags.18?<a href='/constructor/true'>true</a> min:flags.20?<a href='/constructor/true'>true</a> bot_inline_geo:flags.21?<a href='/constructor/true'>true</a> support:flags.23?<a href='/constructor/true'>true</a> scam:flags.24?<a href='/constructor/true'>true</a> apply_min_photo:flags.25?<a href='/constructor/true'>true</a> fake:flags.26?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:flags.0?<a href='/type/long'>long</a> first_name:flags.1?<a href='/type/string'>string</a> last_name:flags.2?<a href='/type/string'>string</a> username:flags.3?<a href='/type/string'>string</a> phone:flags.4?<a href='/type/string'>string</a> photo:flags.5?<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:flags.6?<a href='/type/UserStatus'>UserStatus</a> bot_info_version:flags.14?<a href='/type/int'>int</a> restriction_reason:flags.18?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href='/type/string'>string</a> lang_code:flags.22?<a href='/type/string'>string</a> = <a href='/type/User'>User</a>; + +<a href='/constructor/help.support'>help.support</a>#17c6b5f6 phone_number:<a href='/type/string'>string</a> user:<a href='/type/User'>User</a> = <a href='/type/help.Support'>help.Support</a>; +<a href='/constructor/help.supportName'>help.supportName</a>#8c05f1c9 name:<a href='/type/string'>string</a> = <a href='/type/help.SupportName'>help.SupportName</a>; + +---functions--- + +<a href='/method/help.getSupport'>help.getSupport</a>#9cdf08cd = <a href='/type/help.Support'>help.Support</a>; +<a href='/method/help.getSupportName'>help.getSupportName</a>#d360e72c = <a href='/type/help.SupportName'>help.SupportName</a>;</code></pre> +<p>These methods can be used for fetching info about Telegram's support user, that users can use to get support and ask questions about the app. </p> +<ul> +<li><a href="/method/help.getSupport">help.getSupport</a> - Will return the <a href="/constructor/user">user</a> object that can be used for contacting support.</li> +<li><a href="/method/help.getSupportName">help.getSupportName</a> - Will return a localized name for the support chat.</li> +</ul> +<h3><a class="anchor" href="#country-information-and-login-phone-patterns" id="country-information-and-login-phone-patterns" name="country-information-and-login-phone-patterns"><i class="anchor-icon"></i></a>Country information and login phone patterns</h3> +<pre><code><a href='/constructor/help.countryCode'>help.countryCode</a>#4203c5ef flags:<a href='/type/%23'>#</a> country_code:<a href='/type/string'>string</a> prefixes:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> patterns:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> = <a href='/type/help.CountryCode'>help.CountryCode</a>; + +<a href='/constructor/help.country'>help.country</a>#c3878e23 flags:<a href='/type/%23'>#</a> hidden:flags.0?<a href='/constructor/true'>true</a> iso2:<a href='/type/string'>string</a> default_name:<a href='/type/string'>string</a> name:flags.1?<a href='/type/string'>string</a> country_codes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/help.CountryCode'>help.CountryCode</a>> = <a href='/type/help.Country'>help.Country</a>; + +<a href='/constructor/help.countriesListNotModified'>help.countriesListNotModified</a>#93cc1f32 = <a href='/type/help.CountriesList'>help.CountriesList</a>; +<a href='/constructor/help.countriesList'>help.countriesList</a>#87d0759e countries:<a href='/type/Vector%20t'>Vector</a><<a href='/type/help.Country'>help.Country</a>> hash:<a href='/type/int'>int</a> = <a href='/type/help.CountriesList'>help.CountriesList</a>; + +---functions--- +<a href='/method/help.getCountriesList'>help.getCountriesList</a>#735787a8 lang_code:<a href='/type/string'>string</a> hash:<a href='/type/int'>int</a> = <a href='/type/help.CountriesList'>help.CountriesList</a>;</code></pre> +<p><a href="/method/help.getCountriesList">help.getCountriesList</a> can be used to fetch a list of localized names for all available countries and phone code patterns for logging in. </p> +<p>The phone code pattern should be used when showing the <a href="/api/auth">login</a> screen, or when changing phone number: for example, a pattern value of <code>XXX XXX XXX</code> with <code>country_code</code> <code>+39</code> indicates that the phone field for login should accept a spaced pattern like <code>+39 123 456 789</code>.<br> +Also, the beginning of the national part of the phone number (<code>123 456 789</code>) should match one of the <code>prefixes</code>, if any were returned. </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/datacenter.html b/data/corefork.telegram.org/api/datacenter.html new file mode 100644 index 0000000000..b6e3c15dbb --- /dev/null +++ b/data/corefork.telegram.org/api/datacenter.html @@ -0,0 +1,148 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Working with Different Data Centers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to connect to the closest DC access point for faster interaction with the API, and things to watch out for when developing a client."> + <meta property="og:title" content="Working with Different Data Centers"> + <meta property="og:image" content="5bb32ac46255f88a6c"> + <meta property="og:description" content="How to connect to the closest DC access point for faster interaction with the API, and things to watch out for when developing a client."> + <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?215" 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/datacenter" >Working with Different Data Centers</a></li></ul></div> + <h1 id="dev_page_title">Working with Different Data Centers</h1> + + <div id="dev_page_content"><p>The servers are divided into several data centers (hereinafter “DCs”) in different parts of the world.<br>A complete list of proxy access points for these DCs may be obtained using <a href="/method/help.getConfig">help.getConfig</a>:</p> +<pre><code>dcOption#18b7a10d flags:# ipv6:flags.0?true media_only:flags.1?true tcpo_only:flags.2?true cdn:flags.3?true static:flags.4?true id:int ip_address:string port:int secret:flags.10?bytes = DcOption; +config#330b4067 flags:# phonecalls_enabled:flags.1?true default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true ignore_phone_entities:flags.5?true revoke_pm_inbox:flags.6?true blocked_mode:flags.8?true pfs_enabled:flags.13?true date:int expires:int test_mode:Bool this_dc:int dc_options:Vector<DcOption> dc_txt_domain_name:string chat_size_max:int megagroup_size_max:int forwarded_count_max:int online_update_period_ms:int offline_blur_timeout_ms:int offline_idle_timeout_ms:int online_cloud_timeout_ms:int notify_cloud_delay_ms:int notify_default_delay_ms:int push_chat_period_ms:int push_chat_limit:int saved_gifs_limit:int edit_time_limit:int revoke_time_limit:int revoke_pm_time_limit:int rating_e_decay:int stickers_recent_limit:int stickers_faved_limit:int channels_read_media_period:int tmp_sessions:flags.0?int pinned_dialogs_count_max:int pinned_infolder_count_max:int call_receive_timeout_ms:int call_ring_timeout_ms:int call_connect_timeout_ms:int call_packet_timeout_ms:int me_url_prefix:string autoupdate_url_prefix:flags.7?string gif_search_username:flags.9?string venue_search_username:flags.10?string img_search_username:flags.11?string static_maps_provider:flags.12?string caption_length_max:int message_length_max:int webfile_dc_id:int suggested_lang_code:flags.2?string lang_pack_version:flags.2?int base_lang_pack_version:flags.2?int = Config; +---functions--- +help.getConfig#c4f9186b = Config;</code></pre> +<p>In this context, <strong>this_dc</strong> is the number of the current DC, <strong>dc_options</strong> is a list of all DCs available at the moment, each of which has an <strong>id</strong>, <strong>ip</strong>, and <strong>port</strong> for establishing a connection. Please note that <strong>ip</strong> and <strong>port</strong> may change frequently, based on proxy server load and the user's current location.<br>Typically, each DC has at least one IPv4 and one IPv6 endpoint available. </p> +<p>To optimize client communication with the API, each client must use the connection to the closest access point for its main queries (sending messages, getting contacts, etc.). Therefore, knowing how to select a DC is required before communicating with the API.</p> +<h3><a class="anchor" name="registration-authorization" href="#registration-authorization"><i class="anchor-icon"></i></a>Registration/Authorization</h3> +<p>The <a href="/method/auth.sendCode">auth.sendCode</a> method is the basic entry point when registering a new user or authorizing an existing user. 95% of all redirection cases to a different DC will occur when invoking this method.</p> +<p>The client does not yet know which DC it will be associated with; therefore, it establishes an encrypted connection to a random address and sends its query to that address.<br>Having received a <strong>phone_number</strong> from a client, we can find out whether or not it is registered in the system. If it is, then, if necessary, instead of sending a text message, we request that it establish a connection with a different DC first (PHONE_MIGRATE_X error).<br>If we do not yet have a user with this number, we examine its IP-address. We can use it to identify the closest DC. Again, if necessary, we redirect the user to a different DC (NETWORK_MIGRATE_X error).</p> +<h4><a class="anchor" name="testing-redirects" href="#testing-redirects"><i class="anchor-icon"></i></a>Testing Redirects</h4> +<p>There are reserved phone number prefixes to test the correctness of the application’s handling of redirects between DCs. Read more in <a href="https://core.telegram.org/api/auth#test-phone-numbers">User Authorization</a> article.</p> +<h3><a class="anchor" name="file-access" href="#file-access"><i class="anchor-icon"></i></a>File Access</h3> +<p>A file saved by a user with <a href="/method/upload.saveFilePart">upload.saveFilePart</a> will be available for direct download only from the DC where the query was executed. That is why each file has a <strong>dc_id</strong> parameter:</p> +<pre><code>document#1e87342b flags:# id:long access_hash:long file_reference:bytes date:int mime_type:string size:int thumbs:flags.0?Vector<PhotoSize> video_thumbs:flags.1?Vector<VideoSize> dc_id:int attributes:Vector<DocumentAttribute> = Document; +photo#fb197a65 flags:# has_stickers:flags.0?true id:long access_hash:long file_reference:bytes date:int sizes:Vector<PhotoSize> video_sizes:flags.1?Vector<VideoSize> dc_id:int = Photo; + +encryptedFile#4a70994c id:long access_hash:long size:int dc_id:int key_fingerprint:int = EncryptedFile; + +userProfilePhoto#82d1f706 flags:# has_video:flags.0?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = UserProfilePhoto; +chatPhoto#1c6e1c11 flags:# has_video:flags.0?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = ChatPhoto;</code></pre> +<p>To download the file, an encrypted connection to DC <strong>dc_id</strong> must be established and used to execute the <a href="/method/upload.getFile">upload.getFile</a> query.<br>If an attempt is made to download the file over a wrong connection, the FILE_MIGRATE_X error will be returned.</p> +<p>Please note that encryption keys are not copied between DCs; therefore, the process of establishing an encrypted connection is started from the very beginning for each new DC. An issued auth_key can be associated with the current authorized user by using an <a href="#authorization-transfer">authorization transfer</a>.</p> +<h3><a class="anchor" name="user-migration" href="#user-migration"><i class="anchor-icon"></i></a>User Migration</h3> +<p>During the process of working with the API, user information is accumulated in the DC with which the user is associated. This is the reason a user cannot be associated with a different DC by means of the client. However, in the future, during prolonged communication from an unusual location, we may decide that the user’s data must be moved to a different DC. After some time, the data will be copied and the association will be updated. Once this happens, when executing any query transmitted to the old DC, the API will return the USER_MIGRATE_X error. The client will then have to establish a connection with the new DC and repeat the query.</p> +<h3><a class="anchor" name="authorization-transfer" href="#authorization-transfer"><i class="anchor-icon"></i></a>Authorization Transfer</h3> +<p>The following methods can be used to eliminate the need for users to enter the code from a text message every time:</p> +<pre><code>auth.exportedAuthorization#b434e2b8 id:long bytes:bytes = auth.ExportedAuthorization; +auth.authorization#cd050916 flags:# tmp_sessions:flags.0?int user:User = auth.Authorization; +---functions--- +auth.importAuthorization#a57a7dad id:long bytes:bytes = auth.Authorization; +auth.exportAuthorization#e5bfffcd dc_id:int = auth.ExportedAuthorization;</code></pre> +<p><a href="/method/auth.exportAuthorization">auth.exportAuthorization</a> must be executed in the current DC (the DC with which a connection has already been established), passing in <strong>dc_id</strong> as the value for the new DC. The method should return the user identifier and a long string of random data. An import operation can be performed at the new DC by sending it what was received. Queries requiring authorization can then be successfully executed in the new DC.</p> +</div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/dice.html b/data/corefork.telegram.org/api/dice.html new file mode 100644 index 0000000000..89db5f5186 --- /dev/null +++ b/data/corefork.telegram.org/api/dice.html @@ -0,0 +1,149 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Dice</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram supports sending [animated dice](https://telegram.org/blog/folders#and-one-more-thing) emojis."> + <meta property="og:title" content="Dice"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram supports sending [animated dice](https://telegram.org/blog/folders#and-one-more-thing) emojis."> + <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?215" 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/dice" >Dice</a></li></ul></div> + <h1 id="dev_page_title">Dice</h1> + + <div id="dev_page_content"><p>Telegram supports sending <a href="https://telegram.org/blog/folders#and-one-more-thing">animated dice</a> emojis.<br> +This is implemented by using the dice constructors: </p> +<pre><code><a href='/constructor/inputMediaDice'>inputMediaDice</a>#e66fbf7b emoticon:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>; +<a href='/constructor/messageMediaDice'>messageMediaDice</a>#3f7ee58b value:<a href='/type/int'>int</a> emoticon:<a href='/type/string'>string</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/inputStickerSetDice'>inputStickerSetDice</a>#e67f520e emoticon:<a href='/type/string'>string</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>; + +<a href='/constructor/messages.stickerSet'>messages.stickerSet</a>#b60a24a6 set:<a href='/type/StickerSet'>StickerSet</a> packs:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StickerPack'>StickerPack</a>> documents:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Document'>Document</a>> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/messages.getStickerSet'>messages.getStickerSet</a>#2619a90e stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> = <a href='/type/messages.StickerSet'>messages.StickerSet</a>; + +<a href='/method/help.getAppConfig'>help.getAppConfig</a>#98914110 = <a href='/type/JSONValue'>JSONValue</a>;</code></pre> +<p>On startup, clients should fetch <a href="/api/config#client-configuration">app configuration using help.getAppConfig</a>.<br> +Then, for each dice emoji contained in the <code>emojies_send_dice</code> field, clients should fetch the dice emoji stickerset by calling the <a href="/method/messages.getStickerSet">messages.getStickerSet</a> method, providing the properly populated <a href="/constructor/inputStickerSetDice">inputStickerSetDice</a> to the <code>stickerset</code> field.<br> +The returned stickerset will contain a set of animated stickers, one for each of the dice outcomes, plus a first looping sticker that should be shown as preview to the user before actually sending the dice. </p> +<p>If a user attempts to send a single emoji from the ones specified in <code>emojies_send_dice</code>, the dice should be sent using <a href="/method/messages.sendMedia">messages.sendMedia</a>, providing the dice emoji to the <code>emoticon</code> field. </p> +<p>Incoming dice stickers will be received as a <a href="/constructor/messageMediaDice">messageMediaDice</a> constructor, along with a randomly generated server-side value, ranging from 1 to the maximum allowed value for this type of dice.<br> +Clients should display the correct dice animated sticker for the specified value: since dice values start from 1, and the first animated sticker in dice stickerset is the preview, <code>value</code> can be used to directly index the <code>documents</code> sticker array from the animated stickerset. </p> +<p>The <code>emojies_send_dice_success</code> configuration parameter contains more info about dice emojis other than the basic <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />: </p> +<pre><code> "emojies_send_dice_success": { + "\ud83c\udfaf": { + "value": 6, + "frame_start": 62 + }, + "\ud83c\udfc0": { + "value": 5, + "frame_start": 110 + } + }</code></pre> +<p>For each of the dice emojis, a maximum "winning" value is specified, along with the frame number at which to show the fireworks <img class="emoji" src="//telegram.org/img/emoji/40/F09F8E86.png" width="20" height="20" alt="🎆" />.<br> +Please note that dice animated stickers should loop only once, right after being sent/received <strong>for the first time</strong>; clicking on the dice sticker should bring up a popup, inviting the user to send a new dice of the same type. </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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/discussion.html b/data/corefork.telegram.org/api/discussion.html new file mode 100644 index 0000000000..70271a7f45 --- /dev/null +++ b/data/corefork.telegram.org/api/discussion.html @@ -0,0 +1,151 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Discussion groups</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="[Groups](/api/channel) can be associated to a [channel](/api/channel) as a [discussion group](https://telegram.org/blog/privacy-discussions-web-bots), to allow users to discuss about posts."> + <meta property="og:title" content="Discussion groups"> + <meta property="og:image" content=""> + <meta property="og:description" content="[Groups](/api/channel) can be associated to a [channel](/api/channel) as a [discussion group](https://telegram.org/blog/privacy-discussions-web-bots), to allow users to discuss about posts."> + <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?215" 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/discussion" >Discussion groups</a></li></ul></div> + <h1 id="dev_page_title">Discussion groups</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><a href="/api/channel">Groups</a> can be associated to a <a href="/api/channel">channel</a> as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts. </p> +<pre><code><a href='/constructor/boolFalse'>boolFalse</a>#bc799737 = <a href='/type/Bool'>Bool</a>; +<a href='/constructor/boolTrue'>boolTrue</a>#997275b5 = <a href='/type/Bool'>Bool</a>; + +<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; + +<a href='/constructor/messages.chats'>messages.chats</a>#64ff9fd5 chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> = <a href='/type/messages.Chats'>messages.Chats</a>; + +---functions--- + +<a href='/method/channels.setDiscussionGroup'>channels.setDiscussionGroup</a>#40582bb2 broadcast:<a href='/type/InputChannel'>InputChannel</a> group:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/Bool'>Bool</a>; +<a href='/method/channels.getGroupsForDiscussion'>channels.getGroupsForDiscussion</a>#f5dad378 = <a href='/type/messages.Chats'>messages.Chats</a>;</code></pre> +<p>A discussion group can be associated to a channel using <a href="/method/channels.setDiscussionGroup">channels.setDiscussionGroup</a>.<br> +The discussion group can be accessed in the client by clicking on the discuss button of the channel, or by accessing the <a href="/api/threads">comment section</a> of a specific post; the discussion group ID is also present in the <code>linked_chat_id</code> field of the <a href="/constructor/channelFull">channelFull</a> constructor. </p> +<p>All messages sent to the channel will also be sent to the linked group (with sender peer <code>from_id</code> equal to the peer of the linked channel); those messages will also be automatically <a href="/api/pin">pinned</a> in the group.</p> +<h3><a class="anchor" href="#linking-a-discussion-group" id="linking-a-discussion-group" name="linking-a-discussion-group"><i class="anchor-icon"></i></a>Linking a discussion group</h3> +<p>To obtain a list of admined supergroups that a channel admin can possibly associate to a channel, use <a href="/method/channels.getGroupsForDiscussion">channels.getGroupsForDiscussion</a>.<br> +Returned <a href="/api/channel">legacy group chats</a> must be first <a href="/api/channel#migration">upgraded to supergroups</a> before they can be set as a discussion group.<br> +Before linking a supergroup to a channel, access to the supergroup's old messages must also be enabled using <a href="/method/channels.togglePreHistoryHidden">channels.togglePreHistoryHidden</a>. </p> +<p>To set a returned supergroup as a discussion group use <a href="/method/channels.setDiscussionGroup">channels.setDiscussionGroup</a>.</p> +<p>Schema: </p> +<pre><code><a href='/constructor/boolFalse'>boolFalse</a>#bc799737 = <a href='/type/Bool'>Bool</a>; +<a href='/constructor/boolTrue'>boolTrue</a>#997275b5 = <a href='/type/Bool'>Bool</a>; + +<a href='/constructor/messages.chats'>messages.chats</a>#64ff9fd5 chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> = <a href='/type/messages.Chats'>messages.Chats</a>; + +---functions--- + +<a href='/method/channels.setDiscussionGroup'>channels.setDiscussionGroup</a>#40582bb2 broadcast:<a href='/type/InputChannel'>InputChannel</a> group:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/Bool'>Bool</a>; +<a href='/method/channels.getGroupsForDiscussion'>channels.getGroupsForDiscussion</a>#f5dad378 = <a href='/type/messages.Chats'>messages.Chats</a>; + +<a href='/method/channels.togglePreHistoryHidden'>channels.togglePreHistoryHidden</a>#eabbb94c channel:<a href='/type/InputChannel'>InputChannel</a> enabled:<a href='/type/Bool'>Bool</a> = <a href='/type/Updates'>Updates</a>;</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/drafts.html b/data/corefork.telegram.org/api/drafts.html new file mode 100644 index 0000000000..8770c19a7e --- /dev/null +++ b/data/corefork.telegram.org/api/drafts.html @@ -0,0 +1,131 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Message drafts</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to handle message drafts"> + <meta property="og:title" content="Message drafts"> + <meta property="og:image" content="89f7ae8e51fc1ce19f"> + <meta property="og:description" content="How to handle message drafts"> + <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?215" 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/drafts" >Message drafts</a></li></ul></div> + <h1 id="dev_page_title">Message drafts</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Message <a href="https://telegram.org/blog/drafts">drafts</a> in Telegram allow syncing the text typed into message fields between devices.</p> +<h3><a class="anchor" href="#drafts" id="drafts" name="drafts"><i class="anchor-icon"></i></a>Drafts</h3> +<p>Drafts are represented by the <a href="/type/DraftMessage">DraftMessage</a> constructors. +The parameters of the peer-specific draft should be used as defaults when composing a message to be sent to a certain peer (in the case of media, the same draft should still be used as base, the message will become the caption). +If the user exits the app before sending the message, the message should be saved as a draft:</p> +<h3><a class="anchor" href="#saving-drafts" id="saving-drafts" name="saving-drafts"><i class="anchor-icon"></i></a>Saving drafts</h3> +<p>Drafts can be saved using the <a href="/method/messages.saveDraft">messages.saveDraft</a> method.</p> +<h3><a class="anchor" href="#downloading-drafts" id="downloading-drafts" name="downloading-drafts"><i class="anchor-icon"></i></a>Downloading drafts</h3> +<p>New drafts are automatically sent to all devices via <a href="/constructor/updateDraftMessage">updateDraftMessage</a> updates.</p> +<p><a href="/constructor/dialog">Dialog</a> objects fetched via the API also contain the draft associated with the dialog.</p> +<h3><a class="anchor" href="#clearing-drafts" id="clearing-drafts" name="clearing-drafts"><i class="anchor-icon"></i></a>Clearing drafts</h3> +<p>Drafts can be cleared by setting the <code>clear_draft</code> flag when sending messages or media using <a href="/method/messages.sendMessage">messages.sendMessage</a>, <a href="/method/messages.sendMedia">messages.sendMedia</a>, <a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a>, <a href="/method/messages.sendInlineBotResult">messages.sendInlineBotResult</a> and similar or manually by passing empty values to <a href="/method/messages.saveDraft">messages.saveDraft</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="//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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/end-to-end.html b/data/corefork.telegram.org/api/end-to-end.html new file mode 100644 index 0000000000..27fd5216fd --- /dev/null +++ b/data/corefork.telegram.org/api/end-to-end.html @@ -0,0 +1,244 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>End-to-End Encryption, Secret Chats</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="New feature for end-to-end-encrypted messaging."> + <meta property="og:title" content="End-to-End Encryption, Secret Chats"> + <meta property="og:image" content="842181036bcb572cf0"> + <meta property="og:description" content="New feature for end-to-end-encrypted messaging."> + <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?215" 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/end-to-end" >End-to-End Encryption, Secret Chats</a></li></ul></div> + <h1 id="dev_page_title">End-to-End Encryption, Secret Chats</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<blockquote> +<p>This article on MTProto's End-to-End encryption is meant for <strong>advanced users</strong>. +If you want to learn more about <a href="https://telegram.org/faq#secret-chats">Secret Chats</a> from a less intimidating source, kindly see our <a href="https://telegram.org/faq#secret-chats">general FAQ</a>.</p> +</blockquote> +<blockquote> +<p>Note that as of version 4.6, major Telegram clients are using <strong>MTProto 2.0</strong>. +MTProto v.1.0 is deprecated and is currently being phased out.</p> +</blockquote> +<hr> +<h5><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h5> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="/mtproto/security_guidelines">Security guidelines for developers</a></li> +<li><a href="/api/end-to-end/pfs">Perfect Forward Secrecy in Secret Chats</a></li> +<li><a href="/api/end-to-end/seq_no">Sequence numbers in Secret Chats</a></li> +<li><a href="/schema/end-to-end">End-to-End TL Schema</a></li> +</ul> +<p></div></p> +<hr> +<p>Secret Chats are one-on-one chats wherein messages are encrypted with a key held only by the chat’s participants. Note that the <a href="/schema/end-to-end">schema</a> for these end-to-end encrypted Secret Chats is different from what is used for <a href="/mtproto">cloud chats</a>:</p> +<div> + <a href="/file/811140633/4/hHw6Zy2DPyQ.109500/cabc10049a7190694f" target="_blank"><img src="/file/811140633/4/hHw6Zy2DPyQ.109500/cabc10049a7190694f" title="End-to-end encryption in MTProto 2.0 (Secret Chats)" class="dev_page_image" style="max-width: 600px"></a> +</div> +<h4><a class="anchor" href="#a-note-on-mtproto-20" id="a-note-on-mtproto-20" name="a-note-on-mtproto-20"><i class="anchor-icon"></i></a>A note on MTProto 2.0</h4> +<p>This article describes the end-to-end encryption layer in the MTProto protocol version <strong>2.0</strong>. +The principal differences from version 1.0 (<a href="/api/end-to-end_v1">described here</a> for reference) are as follows:</p> +<ul> +<li>SHA-256 is used instead of SHA-1;</li> +<li>Padding bytes are involved in the computation of msg_key;</li> +<li>msg_key depends not only on the message to be encrypted, but on a portion of the secret chat key as well;</li> +<li>12..1024 padding bytes are used instead of 0..15 padding bytes in v.1.0.</li> +</ul> +<p>See also: <a href="https://core.telegram.org/mtproto">MTProto 2.0: Cloud Chats, server-client encryption</a></p> +<h3><a class="anchor" href="#key-generation" id="key-generation" name="key-generation"><i class="anchor-icon"></i></a>Key Generation</h3> +<p>Keys are generated using the <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">Diffie-Hellman protocol</a>.</p> +<p>Let us consider the following scenario: User <strong>A</strong> would like to initiate end-to-end encrypted communication with User <strong>B</strong>.</p> +<h4><a class="anchor" href="#sending-a-request" id="sending-a-request" name="sending-a-request"><i class="anchor-icon"></i></a>Sending a Request</h4> +<p>User <strong>A</strong> executes <a href="/method/messages.getDhConfig">messages.getDhConfig</a> to obtain the Diffie-Hellman parameters: a prime <strong>p</strong>, and a high order element <strong>g</strong>.</p> +<p>Executing this method before each new key generation procedure is of vital importance. It makes sense to cache the values of the parameters together with the version in order to avoid having to receive all of the values every time. If the version stored on the client is still up-to-date, the server will return the constructor <a href="/constructor/messages.dhConfigNotModified">messages.dhConfigNotModified</a>.</p> +<p>Client is expected to check whether <strong>p</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that 2^2047 < p < 2^2048), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> -- namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as to avoid repeating lengthy computations in future. This cache might be shared with one used for <a href="/mtproto/auth_key">Authorization Key generation</a>.</p> +<p>If the client needs additional entropy for the random number generator, it can pass the <strong>random_length</strong> parameter (random_length> 0) so the server generates its own random sequence <strong>random</strong> of the appropriate length. +<strong>Important</strong>: using the server’s random sequence in its raw form may be unsafe, it must be combined with a client sequence.</p> +<p>Client <strong>A</strong> computes a 2048-bit number <strong>a</strong> (using sufficient entropy or the server’s <strong>random</strong>; see above) and executes <a href="/method/messages.requestEncryption">messages.requestEncryption</a> after passing in <code>g_a := pow(g, a) mod dh_prime</code>.</p> +<p>User <strong>B</strong> receives the update <a href="/constructor/updateEncryption">updateEncryption</a> for all associated authorization keys (all authorized devices) with the chat constructor <a href="/constructor/encryptedChatRequested">encryptedChatRequested</a>. The user must be shown basic information about User <strong>A</strong> and must be prompted to accept or reject the request.</p> +<p>Both clients are to check that <strong>g</strong>, <strong>g_a</strong> and <strong>g_b</strong> are greater than one and smaller than <strong>p-1</strong>. We recommend checking that <strong>g_a</strong> and <strong>g_b</strong> are between <strong>2^{2048-64}</strong> and <strong>p - 2^{2048-64}</strong> as well.</p> +<h4><a class="anchor" href="#accepting-a-request" id="accepting-a-request" name="accepting-a-request"><i class="anchor-icon"></i></a>Accepting a Request</h4> +<p>After User <strong>B</strong> confirms the creation of a secret chat with <strong>A</strong> in the client interface, Client <strong>B</strong> also receives up-to-date configuration parameters for the Diffie-Hellman method. Thereafter, it generates a random 2048-bit number, <strong>b</strong>, using rules similar to those for <strong>a</strong>. </p> +<p>Having received <strong>g_a</strong> from the update with <a href="/constructor/encryptedChatRequested">encryptedChatRequested</a>, it can immediately generate the final shared key: <code>key = (pow(g_a, b) mod dh_prime)</code>. If key length < 256 bytes, add several leading zero bytes as padding — so that the key is exactly 256 bytes long. Its fingerprint, <strong>key_fingerprint</strong>, is equal to the 64 last bits of SHA1 (key). </p> +<p><strong>Note 1:</strong> in this particular case SHA1 is used here even for MTProto 2.0 secret chats. </p> +<p><strong>Note 2:</strong> this fingerprint is used as a sanity check for the key exchange procedure to detect bugs when developing client software — it is not connected to the key visualization used on the clients as means of external authentication in secret chats. <a href="/api/end-to-end/pfs#key-visualization">Key visualizations</a> on the clients are generated using the first 128 bits of SHA1(initial key) followed by the first 160 bits of SHA256(key used when secret chat was updated to layer 46).</p> +<p>Client <strong>B</strong> executes <a href="/method/messages.acceptEncryption">messages.acceptEncryption</a> after passing it <code>g_b := pow(g, b) mod dh_prime</code> and <strong>key_fingerprint</strong>.</p> +<p>For all of Client <strong>B’s</strong> authorized devices, except the current one, <a href="/constructor/updateEncryption">updateEncryption</a> updates are sent with the constructor <a href="/constructor/encryptedChatDiscarded">encryptedChatDiscarded</a>. Thereafter, the only device that will be able to access the secret chat is Device <strong>B</strong>, which made the call to <a href="/method/messages.acceptEncryption">messages.acceptEncryption</a>.</p> +<p>User <strong>A</strong> will be sent an <a href="/constructor/updateEncryption">updateEncryption</a> update with the constructor <a href="/constructor/encryptedChat">encryptedChat</a>, for the authorization key that initiated the chat.</p> +<p>With <strong>g_b</strong> from the update, Client <strong>A</strong> can also compute the shared key <code>key = (pow(g_b, a) mod dh_prime)</code>. If key length < 256 bytes, add several leading zero bytes as padding — so that the key is exactly 256 bytes long. If the fingerprint for the received key is identical to the one that was passed to <a href="/constructor/encryptedChat">encryptedChat</a>, incoming messages can be sent and processed. Otherwise, <a href="/method/messages.discardEncryption">messages.discardEncryption</a> must be executed and the user notified.</p> +<h4><a class="anchor" href="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a>Perfect Forward Secrecy</h4> +<p>In order to keep past communications safe, official Telegram clients will initiate re-keying once a key has been used to decrypt and encrypt more than 100 messages, or has been in use for more than one week, provided the key has been used to encrypt at least one message. Old keys are then securely discarded and cannot be reconstructed, even with access to the new keys currently in use.</p> +<blockquote> +<p>The re-keying protocol is further described in this article: <a href="/api/end-to-end/pfs">Perfect Forward Secrecy in Secret Chats</a>.</p> +</blockquote> +<p>Please note that your client must support Forward Secrecy in Secret Chats to be compatible with official Telegram clients. </p> +<h3><a class="anchor" href="#sending-and-receiving-messages-in-a-secret-chat" id="sending-and-receiving-messages-in-a-secret-chat" name="sending-and-receiving-messages-in-a-secret-chat"><i class="anchor-icon"></i></a>Sending and Receiving Messages in a Secret Chat</h3> +<h4><a class="anchor" href="#serialization-and-encryption-of-outgoing-messages" id="serialization-and-encryption-of-outgoing-messages" name="serialization-and-encryption-of-outgoing-messages"><i class="anchor-icon"></i></a>Serialization and Encryption of Outgoing Messages</h4> +<p>A TL object of type <a href="/type/DecryptedMessage">DecryptedMessage</a> is created and contains the message in plain text. For backward compatibility, the object must be wrapped in the constructor <a href="/constructor/decryptedMessageLayer">decryptedMessageLayer</a> with an indication of the supported layer (starting with 46).</p> +<blockquote> +<p>The TL-Schema for the contents of end-to-end encrypted messages is available <a href="/schema/end-to-end">here »</a></p> +</blockquote> +<p>The resulting construct is serialized as an array of bytes using generic TL rules. The resulting array is prepended by 4 bytes containing the array length not counting these 4 bytes. </p> +<p>The byte array is padded with 12 to 1024 random padding bytes to make its length divisible by 16 bytes. (In the older MTProto 1.0 encryption, only 0 to 15 padding bytes were used.)</p> +<p>Message key, <strong>msg_key</strong>, is computed as the 128 middle bits of the SHA256 of the data obtained in the previous step, prepended by 32 bytes from the shared key <strong>key</strong>. (For the older MTProto 1.0 encryption, <strong>msg_key</strong> was computed differently, as the 128 lower bits of SHA1 of the data obtained in the previous steps, <em>excluding the padding bytes</em>.)</p> +<p>For MTProto 2.0, the AES key <strong>aes_key</strong> and initialization vector <strong>aes_iv</strong> are computed ( <strong>key</strong> is the shared key obtained during <a href="#key-generation">Key Generation</a> ) as follows:</p> +<ul> +<li>msg_key_large = SHA256 (substr (key, 88+x, 32) + plaintext + random_padding);</li> +<li>msg_key = substr (msg_key_large, 8, 16);</li> +<li>sha256_a = SHA256 (msg_key + substr (key, x, 36));</li> +<li>sha256_b = SHA256 (substr (key, 40+x, 36) + msg_key);</li> +<li>aes_key = substr (sha256_a, 0, 8) + substr (sha256_b, 8, 16) + substr (sha256_a, 24, 8);</li> +<li>aes_iv = substr (sha256_b, 0, 8) + substr (sha256_a, 8, 16) + substr (sha256_b, 24, 8);</li> +</ul> +<p>For MTProto 2.0, <strong>x=0</strong> for messages from the originator of the secret chat, <strong>x=8</strong> for the messages in the opposite direction.</p> +<p><em>For the obsolete MTProto 1.0, msg_key, aes_key, and aes_iv were computed differently (see <a href="/api/end-to-end_v1#serialization-and-encryption-of-outgoing-messages">this document</a> for reference).</em></p> +<p>Data is encrypted with a 256-bit key, <strong>aes_key</strong>, and a 256-bit initialization vector, <strong>aes-iv</strong>, using AES-256 encryption with infinite garble extension (IGE). Encryption key fingerprint <strong>key_fingerprint</strong> and the message key <strong>msg_key</strong> are added at the top of the resulting byte array.</p> +<p>Encrypted data is embedded into a <a href="/method/messages.sendEncrypted">messages.sendEncrypted</a> API call and passed to Telegram server for delivery to the other party of the Secret Chat.</p> +<h4><a class="anchor" href="#upgrading-to-mtproto-20-from-mtproto-10" id="upgrading-to-mtproto-20-from-mtproto-10" name="upgrading-to-mtproto-20-from-mtproto-10"><i class="anchor-icon"></i></a>Upgrading to MTProto 2.0 from MTProto 1.0</h4> +<p>As soon as both parties in a secret chat are using at least Layer 73, they should only use MTProto 2.0 for all outgoing messages. Some of the first received messages may use MTProto 1.0, if a sufficiently high starting layer has not been negotiated during the creation of the secret chat. After the first message encrypted with MTProto 2.0 (or the first message with Layer 73 or higher) is received, all messages with higher <a href="#sequence-numbers">sequence numbers</a> must be encrypted with MTProto 2.0 as well.</p> +<p>As long as the current layer is lower than 73, each party should try to decrypt received messages with MTProto 1.0, and if this is not successfull (msg_key does not match), try MTProto 2.0. Once the first MTProto 2.0-encrypted message arrives (or the layer is upgraded to 73), there is no need to try MTProto 1.0 decryption for any of the further messages (unless the client is still waiting for some gaps to be closed).</p> +<h4><a class="anchor" href="#decrypting-an-incoming-message" id="decrypting-an-incoming-message" name="decrypting-an-incoming-message"><i class="anchor-icon"></i></a>Decrypting an Incoming Message</h4> +<p>The steps above are performed in reverse order. +When an encrypted message is received, you <strong>must</strong> check that msg_key is <strong>in fact</strong> equal to the 128 middle bits of the SHA256 hash of the decrypted message, prepended by 32 bytes taken from the shared <strong>key</strong>. +If the message layer is greater than the one supported by the client, the user must be notified that the client version is out of date and prompted to update.</p> +<h4><a class="anchor" href="#sequence-numbers" id="sequence-numbers" name="sequence-numbers"><i class="anchor-icon"></i></a>Sequence numbers</h4> +<p>It is necessary to interpret all messages in their original order to protect against possible manipulations. Secret chats support a special mechanism for handling seq_no counters independently from the server.</p> +<blockquote> +<p>Proper handling of these counters is further described in this article: <a href="/api/end-to-end/seq_no">Sequence numbers in Secret Chats</a>.</p> +</blockquote> +<p>Please note that your client must support sequence numbers in Secret Chats to be compatible with official Telegram clients. </p> +<h4><a class="anchor" href="#sending-encrypted-files" id="sending-encrypted-files" name="sending-encrypted-files"><i class="anchor-icon"></i></a>Sending Encrypted Files</h4> +<p>All files sent to secret chats are encrypted with one-time keys that are in no way related to the chat’s shared key. Before an encrypted file is sent, it is assumed that the encrypted file’s address will be attached to the outside of an encrypted message using the <strong>file</strong> parameter of the <a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a> method and that the key for direct decryption will be sent in the body of the message (the <strong>key</strong> parameter in the constructors <a href="/constructor/decryptedMessageMediaPhoto">decryptedMessageMediaPhoto</a>, <a href="/constructor/decryptedMessageMediaPhoto">decryptedMessageMediaVideo</a> and <a href="/constructor/decryptedMessageMediaPhoto">decryptedMessageMediaFile</a>.</p> +<p>Prior to a file being sent to a secret chat, 2 random 256-bit numbers are computed which will serve as the AES key and initialization vector used to encrypt the file. AES-256 encryption with infinite garble extension (IGE) is used in like manner.</p> +<p>The key fingerprint is computed as follows:</p> +<ul> +<li>digest = md5(key + iv)</li> +<li>fingerprint = substr(digest, 0, 4) XOR substr(digest, 4, 4)</li> +</ul> +<p>The encrypted contents of a file are stored on the server in much the same way as those of a <a href="/api/files">file in cloud chats</a>: piece by piece using calls to <a href="/method/upload.saveFilePart">upload.saveFilePart</a>. +A subsequent call to <a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a> will assign an identifier to the stored file and send the address together with the message. The recipient will receive an update with <a href="/constructor/encryptedMessage">encryptedMessage</a>, and the <strong>file</strong> parameter will contain file information.</p> +<p>Incoming and outgoing encrypted files can be forwarded to other secret chats using the constructor <a href="/constructor/inputEncryptedFile">inputEncryptedFile</a> to avoid saving the same content on the server twice.</p> +<h4><a class="anchor" href="#working-with-an-update-box" id="working-with-an-update-box" name="working-with-an-update-box"><i class="anchor-icon"></i></a>Working with an Update Box</h4> +<p>Secret chats are associated with specific devices (or rather with <a href="/mtproto/description#creating-an-authorization-key">authorization keys</a>), not users. A conventional message box, which uses <strong>pts</strong> to describe the client’s status, is not suitable, because it is designed for long-term message storage and message access from different devices.</p> +<p>An additional temporary message queue is introduced as a solution to this problem. When an update regarding a message from a secret chat is sent, a new value of <strong>qts</strong> is sent, which helps reconstruct the difference if there has been a long break in the connection or in case of loss of an update.</p> +<p>As the number of events increases, the value of <strong>qts</strong> increases by 1 with each new event. The initial value may not (and will not) be equal to 0.</p> +<p>The fact that events from the temporary queue have been received and stored by the client is acknowledged explicitly by a call to the <a href="/method/messages.receivedQueue">messages.receivedQueue</a> method or implicitly by a call to <a href="/method/updates.getDifference">updates.getDifference</a> (the value of <strong>qts</strong> passed, not the final state). All messages acknowledged as delivered by the client, as well as any messages older than 7 days, may (and will) be deleted from the server.</p> +<p>Upon de-authorization, the event queue of the corresponding device will be forcibly cleared, and the value of <strong>qts</strong> will become irrelevant.</p> +<h2><a class="anchor" href="#updating-to-new-layers" id="updating-to-new-layers" name="updating-to-new-layers"><i class="anchor-icon"></i></a>Updating to new layers</h2> +<p>Your client should always store the maximal layer that is known to be supported by the client on the other side of a secret chat. When the secret chat is first created, this value should be initialized to 46. This remote layer value must always be updated immediately after receiving <em>any</em> packet containing information of an upper layer, i.e.:</p> +<ul> +<li>any secret chat message containing <em>layer_no</em> in its <code>decryptedMessageLayer</code> with <em>layer</em>>=46, or</li> +<li>a <a href="/constructor/decryptedMessageActionNotifyLayer">decryptedMessageActionNotifyLayer</a> service message, wrapped as if it were the <a href="/constructor/decryptedMessageService">decryptedMessageService</a> constructor of the obsolete layer 8 (constructor <code>decryptedMessageService#aa48327d</code>).</li> +</ul> +<h4><a class="anchor" href="#notifying-the-remote-client-about-your-local-layer" id="notifying-the-remote-client-about-your-local-layer" name="notifying-the-remote-client-about-your-local-layer"><i class="anchor-icon"></i></a>Notifying the remote client about your local layer</h4> +<p>In order to notify the remote client of your local layer, your client must send a message of the <code>decryptedMessageActionNotifyLayer</code> type. This notification must be wrapped in a constructor of an appropriate layer.</p> +<p>There are two cases when your client must notify the remote client about its local layer:</p> +<ol> +<li>As soon as a new secret chat has been created, immediately after the secret key has been successfully exchanged.</li> +<li>Immediately after the local client has been updated to support a new secret chat layer. In this case notifications must be sent to <strong>all</strong> currently existing secret chats. Note that this is only necessary when updating to new layers that contain changes in the secret chats implementation (e.g. you don’t need to do this when your client is updated from Layer 46 to Layer 47).</li> +</ol></div> + +</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/end-to-end/pfs.html b/data/corefork.telegram.org/api/end-to-end/pfs.html new file mode 100644 index 0000000000..8447ceee85 --- /dev/null +++ b/data/corefork.telegram.org/api/end-to-end/pfs.html @@ -0,0 +1,176 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Perfect Forward Secrecy</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram supports Perfect Forward Secrecy (PFS) in Secret Chats as of Layer 20. See updating to new layers. +In order to…"> + <meta property="og:title" content="Perfect Forward Secrecy"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram supports Perfect Forward Secrecy (PFS) in Secret Chats as of Layer 20. See updating to new layers. +In order to…"> + <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?215" 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/end-to-end" >Secret Chats</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/api/end-to-end%2Fpfs" >Perfect Forward Secrecy</a></li></ul></div> + <h1 id="dev_page_title">Perfect Forward Secrecy</h1> + + <div id="dev_page_content"><blockquote> +<p>Telegram supports Perfect Forward Secrecy (PFS) in Secret Chats as of Layer 20. See <a href="/api/end-to-end#updating-to-new-layers">updating to new layers</a>.</p> +</blockquote> +<p>In order to keep past communications safe, official Telegram clients will initiate re-keying once a key has been used to decrypt and encrypt more than 100 messages, or has been in use for more than one week, provided the key has been used to encrypt at least one message. Old keys are then securely discarded and cannot be reconstructed, even with access to the new keys currently in use.</p> +<p>Any client participating in a Secret Chat can initiate re-keying as soon as it perceives that the current key has been used for too long or for encrypting too many messages. Please note that you should never initiate a new instance of the re-keying protocol if an uncompleted instance exists, initiated by either party.</p> +<p><strong>Note:</strong> third-party developers are required to maintain the same level of security. All clients with secret chat support must be able to initiate re-keying and accept relevant service messages. See <a href="/mtproto/security_guidelines">Security Guidelines</a>.</p> +<h3><a class="anchor" href="#re-keying-protocol" id="re-keying-protocol" name="re-keying-protocol"><i class="anchor-icon"></i></a>Re-keying protocol</h3> +<p>New keys are generated by exchanging special messages, using previously established keys for encryption. The re-keying protocol between parties A and B normally consists of four steps:</p> +<h5><a class="anchor" href="#1-decryptedmessageactionrequestkey" id="1-decryptedmessageactionrequestkey" name="1-decryptedmessageactionrequestkey"><i class="anchor-icon"></i></a>1. decryptedMessageActionRequestKey</h5> +<p>A (re-keying initiator) generates a new value of <em>a</em>, subject to the same limitations as for the <a href="https://core.telegram.org/api/end-to-end#key-generation">initial Diffie-Hellman key exchange</a>, and sends the value of <em>pow(g,a)</em> to B, embedded in a <a href="/constructor/decryptedMessageService">decryptedMessageService</a>:</p> +<pre><code><a href='/constructor/decryptedMessageActionRequestKey'>decryptedMessageActionRequestKey</a> exchange_id:<a href='/type/long'>long</a> g_a:<a href='/type/string'>string</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;</code></pre> +<ul> +<li><em>exchange_id</em> is a random number identifying this instance of the Re-Keying Protocol for both parties</li> +<li><em>g_a</em> is the value of <em>pow(g,a) mod p</em></li> +</ul> +<p>Note that the same Diffie--Hellman parameters <em>(p,g)</em> as for the initial Diffie--Hellman key exchange in this secret chat are used. They do not need to be re-transmitted explicitly.</p> +<h5><a class="anchor" href="#2-decryptedmessageactionacceptkey" id="2-decryptedmessageactionacceptkey" name="2-decryptedmessageactionacceptkey"><i class="anchor-icon"></i></a>2. decryptedMessageActionAcceptKey</h5> +<p>Upon receipt of the above service message, B checks its content, and generates a response with same <em>exchange_id</em>, for a newly generated value of <em>b</em>:</p> +<pre><code><a href='/constructor/decryptedMessageActionAcceptKey'>decryptedMessageActionAcceptKey</a> exchange_id:<a href='/type/long'>long</a> g_b:<a href='/type/string'>string</a> key_fingerprint:<a href='/type/long'>long</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;</code></pre> +<ul> +<li><em>exchange_id</em> is the same as in the received <a href="/constructor/decryptedMessageActionRequestKey">decryptedMessageActionRequestKey</a></li> +<li><em>g_b</em> is the value of <em>pow(g,b) mod p</em></li> +<li><em>key_fingerprint</em> is the 64-bit fingerprint of the newly generated <em>key = pow(g_a, b) mod p</em>, used as a sanity check of the implementation</li> +</ul> +<p>At this stage, B can already compute the new key <em>key</em> = <em>pow(g_a, b) mod p</em> and its <em>key_fingerprint</em> (last 64 bits of its SHA-1). However, it continues using the previous key until the completion of the exchange.</p> +<p>Once side B sends <a href="/constructor/decryptedMessageActionAcceptKey">decryptedMessageActionAcceptKey</a>, it cannot abort the key exchange; it must be ready to switch to the new key immediately after a <code>decryptedMessageActionCommitKey</code> is received. Therefore, if side B wishes to delay the usage of new key, for example in order to fill some seq_no gaps first, it must delay the <code>decryptedMessageActionAcceptKey</code> answer accordingly.</p> +<h5><a class="anchor" href="#3-decryptedmessageactioncommitkey" id="3-decryptedmessageactioncommitkey" name="3-decryptedmessageactioncommitkey"><i class="anchor-icon"></i></a>3. decryptedMessageActionCommitKey</h5> +<p>Once A receives a valid <code>decryptedMessageActionAcceptKey</code>, it performs all necessary checks, and "commits" the new key by means of the following service message:</p> +<pre><code><a href='/constructor/decryptedMessageActionCommitKey'>decryptedMessageActionCommitKey</a> exchange_id:<a href='/type/long'>long</a> key_fingerprint:<a href='/type/long'>long</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;</code></pre> +<ul> +<li><em>exchange_id</em> is the same as in the two previous messages</li> +<li><em>key_fingerprint</em> is the value of the hash (last 64 bits of SHA-1) of the new key computed by A, for implementation sanity check</li> +</ul> +<p>After that, A can (and must) encrypt all following messages with the new key.</p> +<p>If side A wishes to delay installation of the new key, for example because there are some seq_no gaps that it wants to fill first, it must delay <a href="/constructor/decryptedMessageActionCommitKey">decryptedMessageActionCommitKey</a> answer accordingly.</p> +<h5><a class="anchor" href="#4-final-step" id="4-final-step" name="4-final-step"><i class="anchor-icon"></i></a>4. Final step</h5> +<p>When B receives either a <code>decryptedMessageActionCommitKey</code> or a message encrypted by the new key, recognized by the value of <em>key_fingerprint</em> prepended to the encrypted message (it may happen that the <code>decryptedMessageActionCommitKey</code> has been lost and will be re-requested later), it assumes that A has started using the new key for encryption, and does the same.</p> +<p>However, the previous key may be kept until there are no gaps in received messages up to the switch to the new key. Once all the gaps have been filled, the old key must be securely discarded.</p> +<p>There is one exception to this rule — the SHA-1 of the original key (generated during the establishment of Secret Chat in question) is always stored, in order to show <a href="#key-visualization">key visualizations</a> on the clients.</p> +<h4><a class="anchor" href="#aborting-protocol" id="aborting-protocol" name="aborting-protocol"><i class="anchor-icon"></i></a>Aborting protocol</h4> +<p>Any of the parties may abort any instance of an uncompleted re-keying protocol, unless <code>decryptedMessageActionCommitKey</code> or <code>decryptedMessageActionAcceptKey</code> has been already sent by the party in question. In order to abort re-keying, send</p> +<pre><code><a href='/constructor/decryptedMessageActionAbortKey'>decryptedMessageActionAbortKey</a> exchange_id:<a href='/type/long'>long</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;</code></pre> +<p>This could be done, for example, if the party is already participating in a different instance of the re-keying protocol, or if the received values of <em>g_a</em>, <em>g_b</em> and other parameters do not pass security checks. In the latter case, it might be advisable to abort the Secret Chat altogether.</p> +<h4><a class="anchor" href="#discarding-previous-keys" id="discarding-previous-keys" name="discarding-previous-keys"><i class="anchor-icon"></i></a>Discarding Previous Keys</h4> +<p>Once B receives <code>decryptedMessageActionCommitKey</code>, it can safely discard the previous key provided there are no gaps. However, A may only discard the previous key after a message encrypted with the new key has been received. If no ordinary messages are scheduled to be sent, a special <a href="/constructor/decryptedMessageActionNoop">no-op message</a> should sent by B for this purpose:</p> +<pre><code><a href='/constructor/decryptedMessageActionNoop'>decryptedMessageActionNoop</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;</code></pre> +<h4><a class="anchor" href="#concurrent-re-keying" id="concurrent-re-keying" name="concurrent-re-keying"><i class="anchor-icon"></i></a>Concurrent Re-Keying</h4> +<p>It may happen that both parties concurrently initiate re-keying by sending <code>decryptedMessageActionRequestKey</code> without knowing that the other party has already done so. If each side aborts re-keying because it is already participating in another instance of the protocol initiated by itself, the re-keying will never happen.</p> +<p>Because of this possibility, we suggest that only the instance with the smaller <em>exchange_id</em> is aborted, with the option to re-use its <em>(a,g_a)</em> for the re-keying protocol instance with the larger <em>exchange_id</em> (when compared as a <code>long</code>, i.e. signed little-endian 64-bit integer).</p> +<p>In other words, if a <code>decryptedMessageActionRequestKey</code> is received after A has sent its <code>decryptedMessageActionRequestKey</code>, but has not yet received <code>decryptedMessageActionAcceptKey</code>, the following is to be done:</p> +<ul> +<li>if <em>exchange_id</em> in the sent <code>decryptedMessageActionRequestKey</code> was larger than that in the <code>decryptionActionRequestKey</code> just received, abort the newly-suggested re-keying protocol instance without sending explicit <a href="/constructor/decryptedMessageActionAbortKey">decryptedMessageActionAbortKey</a> (the other side will do the same according to the next rule).</li> +<li>if <em>exchange_id</em> in our <code>decryptedMessageActionRequestKey</code> was smaller, respond to the newly-received <code>decryptedMessageActionRequestKey</code> with a <code>decryptedMessageActionAcceptKey</code>, and participate only in the re-keying protocol instance initiated by the other side. It is possible to re-use at this stage the value of <em>g_a</em> (now called <em>g_b</em>) that was generated for the original <code>decryptedMessageActionRequestKey</code>, now abandoned, or totally new <em>(b,g_b)</em> can be generated. </li> +<li>in the unlikely (2^{-64}) case both <em>exchange_id</em> are equal, abort both instances without sending an explicit <code>decryptedMessageActionAbortKey</code>. The other side will do the same.</li> +</ul> +<h5><a class="anchor" href="#key-visualization" id="key-visualization" name="key-visualization"><i class="anchor-icon"></i></a>Key Visualization</h5> +<p>Since all re-keying instances are carried over the secure channel established when the secret chat is created, it is necessary for the user to confirm that no MITM attack had taken place during the initial exchange. The key visualization on the clients uses the first 128-bits of the SHA-1 of the original key created when the Secret Chat was first established, followed by the first 160 bits of the SHA-256 of the key in use when the secret chat was updated to layer 46 (coincides with the original key if chat was created using layer 46).</p> +<blockquote> +<p>Please note that the <em>key_fingerprint</em> parameter was introduced as a maintenance tool (with a misleading name) and is <strong>not</strong> related to key visualization on the clients.</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/end-to-end/seq_no.html b/data/corefork.telegram.org/api/end-to-end/seq_no.html new file mode 100644 index 0000000000..ed84d5f923 --- /dev/null +++ b/data/corefork.telegram.org/api/end-to-end/seq_no.html @@ -0,0 +1,173 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Sequence numbers in Secret Chats</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="It is necessary to interpret all messages in their original order to protect against reordering, reflection, replay, omission…"> + <meta property="og:title" content="Sequence numbers in Secret Chats"> + <meta property="og:image" content=""> + <meta property="og:description" content="It is necessary to interpret all messages in their original order to protect against reordering, reflection, replay, omission…"> + <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?215" 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/end-to-end" >Secret Chats</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/api/end-to-end%2Fseq_no" >Sequence numbers in Secret Chats</a></li></ul></div> + <h1 id="dev_page_title">Sequence numbers in Secret Chats</h1> + + <div id="dev_page_content"><p>It is necessary to interpret <strong>all</strong> messages in their original order to protect against reordering, reflection, replay, omission and other manipulations (<a href="/constructor/decryptedMessageActionResend">decryptedMessageActionResend</a> messages are the only exception to this rule, see <a href="#avoiding-concurrent-gaps">avoiding concurrent gaps</a>). Secret chats support a special mechanism for handling <strong>seq_no</strong> counters independently from the server. Note that any <em>service messages</em> in secret chats must also increment the <strong>seq_no</strong>.</p> +<p>All Secret Chats messages in clients using Layer 17 or higher are wrapped in <a href="/constructor/decryptedMessageLayer">decryptedMessageLayer</a> and have <strong>seq_no</strong> (sequence number) counters attached to them. The <strong>seq_no</strong> counters in their raw form are initialized with <strong>(out_seq_no, in_seq_no) := (0,0)</strong>, and incremented strictly by 1 after any message (service or not) is sent/received and processed. They must be protected from mirroring before being sent to the remote client by transformation according to formula <strong>2*raw_seq_no+x</strong>, where <strong>x</strong> is 0 or 1, determined by the following rule:</p> +<table class="table"> +<tbody> +<tr> +<td><strong>in_seq_no</strong></td> +<td><strong>out_seq_no</strong></td> +</tr> +<tr> +<td>secret chat initiated by sender</td> +<td>0</td> +<td>1</td> +</tr> +<tr> +<td>secret chat initiated by recipient</td> +<td>1</td> +<td>0</td> +</tr> +</tbody> +</table> +<p>In this way the least significant bit of each <strong>seq_no</strong> field included in the message is different for incoming and outgoing messages. This is done to prevent a possible attacker from mirroring the messages. If any of the received <strong>in_seq_no</strong> or <strong>out_seq_no</strong> are not consistent in terms of parity (see table above), the client is required to immediately abort the secret chat.</p> +<blockquote> +<p>E.g., the first message the local client sends to any secret chat will have <strong>out_seq_no</strong> of <strong>0+x_out</strong>, the second one will have <strong>out_seq_no</strong> of <strong>2*1+x_out</strong>, and so on, where <strong>x_out</strong> is 0 if the chat was initiated by the remote client, 1 otherwise; similarly for the received messages, but there <strong>x_in</strong> is used instead of <strong>x_out</strong> and is equal to 0 if the chat was initiated by the local client, 1 otherwise. </p> +</blockquote> +<p>Raw sequence numbers will be used in the remaining part of this text, unless otherwise specified.</p> +<h4><a class="anchor" href="#preventing-gaps" id="preventing-gaps" name="preventing-gaps"><i class="anchor-icon"></i></a>Preventing gaps</h4> +<p>Your client must ensure that all outgoing secret chat messages are queued on the server in the correct order. This is achieved by correctly placing them into the <a href="/method/invokeAfterMsgs">invokeAfterMsgs</a> chain. Failure to do this may result in gaps on the remote client, which may in turn lead to aborted secret chats. The local client must maintain the correct sequence of <strong>in_seq_no</strong> for the remote client. To achieve this, assign <strong>in_seq_no</strong> and <strong>out_seq_no</strong> to each message at the <em>exact</em> moment when the message is created, and never change them in the future.</p> +<h2><a class="anchor" href="#security-checks" id="security-checks" name="security-checks"><i class="anchor-icon"></i></a>Security checks</h2> +<h4><a class="anchor" href="#checking-out-seq-no" id="checking-out-seq-no" name="checking-out-seq-no"><i class="anchor-icon"></i></a>Checking out_seq_no</h4> +<p>Your client must check that it has received <em>each</em> message with the sequence number <strong>out_seq_no</strong> starting from 0 to some current point <strong>C</strong>. It should then expect the next message to have the sequence number <strong>out_seq_no=C+1</strong>. If the <strong>out_seq_no</strong> in the received message does not match this, the following needs to be done:</p> +<ul> +<li>If the received <strong>out_seq_no<=C</strong>, the local client must drop the message (repeated message). The client should not check the contents of the message because the original message could have been deleted (see <a href="#deleting-unacknowledged-messages">Deleting unacknowledged messages</a>).</li> +<li>If the received <strong>out_seq_no>C+1</strong>, it most likely means that the server left out some messages due to a technical failure or due to the messages becoming obsolete. A temporary solution to this is to simply abort the secret chat. But since this may cause some existing older secret chats to be aborted, it is strongly recommended for the client to properly handle such <strong>seq_no</strong> gaps. Note that <strong>in_seq_no</strong> is not increased upon receipt of such a message; it is advanced only after all preceding gaps are filled.</li> +</ul> +<h4><a class="anchor" href="#proper-handling-of-gaps" id="proper-handling-of-gaps" name="proper-handling-of-gaps"><i class="anchor-icon"></i></a>Proper handling of gaps</h4> +<p>In order to correctly handle incoming messages after a hole has been identified (when received <strong>out_seq_no>C+1</strong>), it is necessary to put received messages with the wrong <strong>seq_no</strong> into a "waiting queue" on the local client, and to re-request the missing messages using the special constructor <a href="/constructor/decryptedMessageActionResend">decryptedMessageActionResend</a> <code>start_seq_no:<a href='/type/int'>int</a> end_seq_no:<a href='/type/int'>int</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;</code>. The sequence numbers used in this constructor must be ready for interpretation by the remote client and therefore <em>cannot</em> be in their raw form: you can easily get the necessary <strong>start_seq_no</strong> by adding 2 to the <strong>out_seq_no</strong> of the last message before the hole and the <strong>end_seq_no</strong> by subtracting 2 from the <strong>out_seq_no</strong> of the received message with the wrong sequence number.</p> +<p>Each hole normally requires only one request to resend messages — if the remote client keeps sending out of sync messages, they should be put into the queue without sending a new request. Having received the missing messages, the local client must first interpret these messages in the right order by their <strong>seq_no</strong>. Once this is done, the client can proceed to interpret messages from the queue (again, in the right <strong>seq_no</strong> order).</p> +<p>Special cases:</p> +<ul> +<li>Note that having <em>two</em> gaps simultaneously is very rare (provided that the remote client and server are operating normally) and it is acceptable to abort the secret chat in this situation.</li> +<li>If a local client receives <a href="/constructor/decryptedMessageActionResend">decryptedMessageActionResend</a> but is unable to satisfy the request, it must abort the secret chat.</li> +</ul> +<h4><a class="anchor" href="#avoiding-concurrent-gaps" id="avoiding-concurrent-gaps" name="avoiding-concurrent-gaps"><i class="anchor-icon"></i></a>Avoiding concurrent gaps</h4> +<p>In order to avoid getting stuck with concurrent gaps on both sides, <a href="/constructor/decryptedMessageActionResend">decryptedMessageActionResend</a> must always be interpreted <em>immediately upon receipt</em> in all cases, even if its <strong>out_seq_no>=C+1</strong>. Note that each <a href="/constructor/decryptedMessageActionResend">decryptedMessageActionResend</a> must only be handled once, it must not be interpreted again when we interpret messages in the queue.</p> +<h4><a class="anchor" href="#checking-and-handling-in-seq-no" id="checking-and-handling-in-seq-no" name="checking-and-handling-in-seq-no"><i class="anchor-icon"></i></a>Checking and handling in_seq_no</h4> +<p><strong>in_seq_no</strong> of all received messages must be <em>valid</em>. To ensure this, perform the following checks:</p> +<ul> +<li><strong>in_seq_no</strong> must form a non-decreasing sequence of non-negative integer numbers.</li> +<li><strong>in_seq_no</strong> must be valid at the moment of receiving the message, that is, if <strong>D</strong> is the <strong>out_seq_no</strong> of last message we sent, the received <strong>in_seq_no</strong> should not be greater than <strong>D + 1</strong>. This also allows us to insert the received message into its correct place in the secret chat. For example, imagine that the local client has sent 5 secret chat messages, and then receives a secret chat message with the text "Yes" and <strong>in_seq_no=2</strong>. In this situation the local client <em>must</em> place that message after the second message it sent. This makes manipulations with delayed messages impossible.</li> +</ul> +<p>If <code>in_seq_no</code> contradicts these criteria, the local client is required to immediately abort the secret chat. This could happen only in case of malicious or buggy behaviour on either server or remote client side.</p> +<h4><a class="anchor" href="#deleting-unacknowledged-messages" id="deleting-unacknowledged-messages" name="deleting-unacknowledged-messages"><i class="anchor-icon"></i></a>Deleting unacknowledged messages</h4> +<p>In case the user on the local client has deleted a message <em>before</em> the server (or the remote client, if <a href="/constructor/decryptedMessageActionResend">decryptedMessageActionResend</a> is handled correctly) could acknowledge the message, for security reasons, you must:</p> +<ul> +<li>securely destroy the contents of the message (as in case of any other deleted Secret Chat message);</li> +<li>change the local copy of the original message to <code>decryptedMessageActionDeleteMessages</code> with <strong>random_id</strong> equal to its own <strong>random_id</strong>;</li> +<li>create a new outgoing message deleting the original message.</li> +</ul> +<p>This must be done because your client doesn't know whether the remote client really received the message or not. In the case the message was already received, it will be deleted by the second message; otherwise it must arrive as a "self-delete" message to maintain the correct sequence of seq_no.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/end-to-end/voice-calls.html b/data/corefork.telegram.org/api/end-to-end/voice-calls.html new file mode 100644 index 0000000000..2743024d71 --- /dev/null +++ b/data/corefork.telegram.org/api/end-to-end/voice-calls.html @@ -0,0 +1,178 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>End-to-End Encrypted Voice Calls</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="This document describes encryption in voice calls as implemented in Telegram apps with versions < 7.0. See this document…"> + <meta property="og:title" content="End-to-End Encrypted Voice Calls"> + <meta property="og:image" content=""> + <meta property="og:description" content="This document describes encryption in voice calls as implemented in Telegram apps with versions < 7.0. See this document…"> + <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?215" 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/end-to-end%2Fvoice-calls" >End-to-End Encrypted Voice Calls</a></li></ul></div> + <h1 id="dev_page_title">End-to-End Encrypted Voice Calls</h1> + + <div id="dev_page_content"><blockquote> +<p>This document describes encryption in <strong>voice calls</strong> as implemented in Telegram apps with versions <strong>< 7.0</strong>. See <a href="https://core.telegram.org/api/end-to-end/video-calls">this document</a> for details on encryption used in <strong>voice and video calls</strong> in app versions released on <strong>August 14, 2020</strong> and later.</p> +</blockquote> +<h5><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h5> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="/api/end-to-end/video-calls">End-to-End Encryption in Voice and Video Calls</a></li> +<li><a href="/api/end-to-end">End-to-End Encryption in Secret Chats</a></li> +<li><a href="/mtproto/security_guidelines">Security Guidelines for Client Developers</a> +</div></li> +</ul> +<h2><a class="anchor" href="#establishing-voice-calls" id="establishing-voice-calls" name="establishing-voice-calls"><i class="anchor-icon"></i></a>Establishing voice calls</h2> +<p>Before a voice call is ready, some preliminary actions have to be performed. The calling party needs to contact the party to be called and check whether it is ready to accept the call. Besides that, the parties have to negotiate the protocols to be used, learn the IP addresses of each other or of the Telegram relay servers to be used (so-called <em>reflectors</em>), and generate a one-time encryption key for this voice call with the aid of <em>Diffie--Hellman key exchange</em>. All of this is accomplished in parallel with the aid of several Telegram API methods and related notifications. This document details the generation of the encryption key. Other negotiations will be eventually documented elsewhere.</p> +<h2><a class="anchor" href="#key-generation" id="key-generation" name="key-generation"><i class="anchor-icon"></i></a>Key Generation</h2> +<p>The Diffie-Hellman key exchange, as well as the whole protocol used to create a new voice call, is quite similar to the one used for <a href="/api/end-to-end#key-generation">Secret Chats</a>. We recommend studying the linked article before proceeding.</p> +<p>However, we have introduced some important changes to facilitate the <a href="#key-verification">key verification process</a>. Below is the entire exchange between the two communicating parties, the Caller (A) and the Callee (B), through the Telegram servers (S).</p> +<ul> +<li><em>A</em> executes <a href="/method/messages.getDhConfig">messages.getDhConfig</a> to find out the 2048-bit Diffie-Hellman prime <em>p</em> and generator <em>g</em>. The client is expected to check whether <em>p</em> is a safe prime and perform all the <a href="/api/end-to-end#sending-a-request">security checks</a> necessary for secret chats.</li> +<li><em>A</em> chooses a random value of <em>a</em>, 1 < a < p-1, and computes <em>g_a:=power(g,a) mod p</em> (a 256-byte number) and <em>g_a_hash:=SHA256(g_a)</em> (32 bytes long).</li> +<li><em>A</em> invokes (sends to server <em>S</em>) <a href="/method/phone.requestCall">phone.requestCall</a>, which has the field <code>g_a_hash:bytes</code>, among others. For this call, this field is to be filled with <em>g_a_hash</em>, <strong>not</strong> <em>g_a</em> itself.</li> +<li>The Server <em>S</em> performs privacy checks and sends an <a href="/constructor/updatePhoneCall">updatePhoneCall</a> update with a <a href="/constructor/phoneCallRequested">phoneCallRequested</a> constructor to all of <em>B</em>'s active devices. This update, apart from the identity of <em>A</em> and other relevant parameters, contains the <em>g_a_hash</em> field, filled with the value obtained from <em>A</em>.</li> +<li><em>B</em> accepts the call on one of their devices, stores the received value of <em>g_a_hash</em> for this instance of the voice call creation protocol, chooses a random value of <em>b</em>, 1 < b < p-1, computes <em>g_b:=power(g,b) mod p</em>, performs all the required security checks, and invokes the <a href="/method/phone.acceptCall">phone.acceptCall</a> method, which has a <em>g_b:bytes</em> field (among others), to be filled with the value of <em>g_b</em> itself (not its hash).</li> +<li>The Server <em>S</em> sends an <a href="/constructor/updatePhoneCall">updatePhoneCall</a> with the <a href="/constructor/phoneCallDiscarded">phoneCallDiscarded</a> constructor to all other devices <em>B</em> has authorized, to prevent accepting the same call on any of the other devices. From this point on, the server <em>S</em> works only with that of <em>B</em>'s devices which has invoked <a href="/method/phone.acceptCall">phone.acceptCall</a> first.</li> +<li>The Server <em>S</em> sends to <em>A</em> an <a href="/constructor/updatePhoneCall">updatePhoneCall</a> update with <a href="/constructor/phoneCallAccepted">phoneCallAccepted</a> constructor, containing the value of <em>g_b</em> received from <em>B</em>.</li> +<li><em>A</em> performs all the usual security checks on <em>g_b</em> and <em>a</em>, computes the Diffie--Hellman key <em>key:=power(g_b,a) mod p</em> and its fingerprint <em>key_fingerprint:long</em>, equal to the lower 64 bits of <em>SHA1(key)</em>, the same as with secret chats. Then <em>A</em> invokes the <a href="/method/phone.confirmCall">phone.confirmCall</a> method, containing <code>g_a:bytes</code> and <code>key_fingerprint:long</code>.</li> +<li>The Server <em>S</em> sends to <em>B</em> an <a href="/constructor/updatePhoneCall">updatePhoneCall</a> update with the <a href="/constructor/phoneCall">phoneCall</a> constructor, containing the value of <em>g_a</em> in <em>g_a_or_b:bytes</em> field, and <em>key_fingerprint:long</em></li> +<li>At this point <em>B</em> receives the value of <em>g_a</em>. It checks that <em>SHA256(g_a)</em> is indeed equal to the previously received value of <em>g_a_hash</em>, performs all the <a href="/mtproto/security_guidelines">usual Diffie-Hellman security checks</a>, and computes the key <em>key:=power(g_a,b) mod p</em> and its fingerprint, equal to the lower 64 bits of <em>SHA1(key)</em>. Then it checks that this fingerprint equals the value of <code>key_fingerprint:long</code> received from the other side, as an implementation sanity check.</li> +</ul> +<p>At this point, the Diffie--Hellman key exchange is complete, and both parties have a 256-byte shared secret key <em>key</em> which is used to encrypt all further exchanges between <em>A</em> and <em>B</em>.</p> +<p>It is of paramount importance to accept each update only once for each instance of the key generation protocol, discarding any duplicates or alternative versions of already received and processed messages (updates).</p> +<h2><a class="anchor" href="#encryption-of-voice-data" id="encryption-of-voice-data" name="encryption-of-voice-data"><i class="anchor-icon"></i></a>Encryption of voice data</h2> +<p>Both parties <em>A</em> (the Caller) and <em>B</em> (the Callee) transform the voice information into a sequence of small <em>chunks</em> or <em>packets</em>, not more than 1 kilobyte each. This information is to be encrypted using the shared key <em>key</em> generated during the initial exchange, and sent to the other party, either directly (P2P) or through Telegram's relay servers (so-called <em>reflectors</em>). This document describes only the encryption process for each chunk, leaving out voice encoding and the network-dependent parts.</p> +<h3><a class="anchor" href="#encapsulation-of-low-level-voice-data" id="encapsulation-of-low-level-voice-data" name="encapsulation-of-low-level-voice-data"><i class="anchor-icon"></i></a>Encapsulation of low-level voice data</h3> +<p>The low-level data chunk <code>raw_data:string</code>, obtained from voice encoder, is first encapsulated into one of the two constructors for the <a href="/type/DecryptedDataBlock">DecryptedDataBlock</a> type, similar to <a href="/type/DecryptedMessage">DecryptedMessage</a> used in secret chats:</p> +<pre><code><a href='/constructor/decryptedDataBlock'>decryptedDataBlock</a>#dbf948c1 random_id:<a href='/type/long'>long</a> random_bytes:<a href='/type/string'>string</a> flags:<a href='/type/%23'>#</a> voice_call_id:flags.2?<a href='/constructor/int128'>int128</a> in_seq_no:flags.4?<a href='/type/int'>int</a> out_seq_no:flags.4?<a href='/type/int'>int</a> recent_received_mask:flags.5?<a href='/type/int'>int</a> proto:flags.3?<a href='/type/int'>int</a> extra:flags.1?<a href='/type/string'>string</a> raw_data:flags.0?<a href='/type/string'>string</a> = <a href='/type/DecryptedDataBlock'>DecryptedDataBlock</a>; +<a href='/constructor/simpleDataBlock'>simpleDataBlock</a>#cc0d0e76 random_id:<a href='/type/long'>long</a> random_bytes:<a href='/type/string'>string</a> raw_data:<a href='/type/string'>string</a> = <a href='/type/DecryptedDataBlock'>DecryptedDataBlock</a>;</code></pre> +<p>Here <code>out_seq_no</code> is the chunk's sequence number among all sent by this party (starting from one), <code>in_seq_no</code> -- the highest known out_seq_no from the received packets. The parameter <code>recent_received_mask</code> is a 32-bit mask, used to track delivery of the last 32 packets sent by the other party. The bit <em>i</em> is set if a packet with <code>out_seq_no</code> equal to <code>in_seq_no</code>-<em>i</em> has been received.</p> +<p>The higher 8 bits in <code>flags</code> are reserved for use by the lower-level protocol (the one which generates and interprets <code>raw_data</code>), and will never be used for future extensions of <code>decryptedDataBlock</code>.</p> +<p>The parameters <code>voice_call_id</code> and <code>proto</code> are mandatory until the other side confirms reception of at least one packet by sending a packet with a non-zero <code>in_seq_no</code>. After that, they become optional, and the <code>simpleDataBlock</code> constructor can be used if the lower level protocol wants to.</p> +<p>The parameter <code>voice_call_id</code> is computed from the key <code>key</code> and equals the lower 128 bits of its SHA-256.</p> +<p>The <code>random_bytes</code> string should contain at least 7 bytes of random data. The field <code>random_id</code> also contains 8 random bytes, which can be used as a unique packet identifier if necessary.</p> +<h3><a class="anchor" href="#mtproto-encryption" id="mtproto-encryption" name="mtproto-encryption"><i class="anchor-icon"></i></a>MTProto encryption</h3> +<p>Once the data is encapsulated in <code>DecryptedDataBlock</code>, it is <a href="/mtproto/TL">TL-serialized</a> and encrypted with <a href="https://core.telegram.org/mtproto/description#defining-aes-key-and-initialization-vector">MTProto</a>, using <code>key</code> instead of <code>auth_key</code>; the parameter <em>x</em> is to be set to <em>0</em> for messages from <em>A</em> to <em>B</em>, and to <em>8</em> for messages in the opposite direction. Encrypted data are prepended by the 128-bit <code>msg_key</code> (usual for MTProto); before that, either the 128-bit <code>voice_call_id</code> (if P2P is used) or the <code>peer_tag</code> (if reflectors are used) is prepended. The resulting data packet is sent by UDP either directly to the other party (if P2P is possible) or to the Telegram relay servers (reflectors).</p> +<h2><a class="anchor" href="#key-verification" id="key-verification" name="key-verification"><i class="anchor-icon"></i></a>Key Verification</h2> +<p>To verify the key, both parties concatenate the secret key <em>key</em> with the value <em>g_a</em> of the Caller ( <em>A</em> ), compute SHA256 and use it to generate a sequence of emoticons. More precisely, the SHA256 hash is split into four 64-bit integers; each of them is divided by the total number of emoticons used (currently 333), and the remainder is used to select specific emoticons. The specifics of the protocol guarantee that comparing four emoticons out of a set of 333 is sufficient to prevent eavesdropping (MiTM attack on DH) with a probability of <strong>0.9999999999</strong>.</p> +<p>This is because instead of the standard Diffie-Hellman key exchange which requires only two messages between the parties:</p> +<ul> +<li>A->B : (generates a and) sends g_a := g^a</li> +<li>B->A : (generates b and true key (g_a)^b, then) sends g_b := g^b</li> +<li>A : computes key (g_b)^a</li> +</ul> +<p>we use a <strong>three-message modification</strong> thereof that works well when both parties are online (which also happens to be a requirement for voice calls):</p> +<ul> +<li>A->B : (generates a and) sends g_a_hash := hash(g^a)</li> +<li>B->A : (stores g_a_hash, generates b and) sends g_b := g^b</li> +<li>A->B : (computes key (g_b)^a, then) sends g_a := g^a</li> +<li>B : checks hash(g_a) == g_a_hash, then computes key (g_a)^b</li> +</ul> +<p>The idea here is that <em>A</em> commits to a specific value of <em>a</em> (and of <em>g_a</em>) without disclosing it to <em>B</em>. <em>B</em> has to choose its value of <em>b</em> and <em>g_b</em> without knowing the true value of <em>g_a</em>, so that it cannot try different values of <em>b</em> to force the final key <em>(g_a)^b</em> to have any specific properties (such as fixed lower 32 bits of SHA256(key)). At this point, <em>B</em> commits to a specific value of <em>g_b</em> without knowing <em>g_a</em>. Then <em>A</em> has to send its value <em>g_a</em>; it cannot change it even though it knows <em>g_b</em> now, because the other party <em>B</em> would accept only a value of <em>g_a</em> that has a hash specified in the very first message of the exchange.</p> +<p>If some impostor is pretending to be either <em>A</em> or <em>B</em> and tries to perform a Man-in-the-Middle Attack on this Diffie--Hellman key exchange, the above still holds. Party <em>A</em> will generate a shared key with <em>B</em> -- or whoever pretends to be <em>B</em> -- without having a second chance to change its exponent <em>a</em> depending on the value <em>g_b</em> received from the other side; and the impostor will not have a chance to adapt his value of <em>b</em> depending on <em>g_a</em>, because it has to commit to a value of <em>g_b</em> before learning <em>g_a</em>. The same is valid for the key generation between the impostor and the party <em>B</em>.</p> +<p>The use of hash commitment in the DH exchange constrains the attacker to only <strong>one guess</strong> to generate the correct visualization in their attack, which means that using just over 33 bits of entropy represented by four emoji in the visualization is enough to make a successful attack highly improbable.</p> +<blockquote> +<p>For a slightly more user-friendly explanation of the above see: <a href="https://core.telegram.org/techfaq#q-how-are-voice-calls-authenticated">How are calls authenticated?</a></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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/end-to-end_v1.html b/data/corefork.telegram.org/api/end-to-end_v1.html new file mode 100644 index 0000000000..6cd75973a3 --- /dev/null +++ b/data/corefork.telegram.org/api/end-to-end_v1.html @@ -0,0 +1,225 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Secret chats, end-to-end encryption (v. 1.0, DEPRECATED)</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="This document describes end-to-end encrypted Secret Chats in MTProto 1.0, its status is DEPRECATED. +For information on…"> + <meta property="og:title" content="Secret chats, end-to-end encryption (v. 1.0, DEPRECATED)"> + <meta property="og:image" content="https://corefork.telegram.org/file/811140845/3/3aEkph1_NYU/cf861ae5ea85912769"> + <meta property="og:description" content="This document describes end-to-end encrypted Secret Chats in MTProto 1.0, its status is DEPRECATED. +For information 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?215" 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/end-to-end_v1" >Secret chats, end-to-end encryption (v.…</a></li></ul></div> + <h1 id="dev_page_title">Secret chats, end-to-end encryption (v. 1.0, DEPRECATED)</h1> + + <div id="dev_page_content"><blockquote> +<p>This document describes end-to-end encrypted Secret Chats in MTProto 1.0, its status is <strong>DEPRECATED</strong>. +For information on end-to-end encryption used in up-to-date Telegram clients, kindly see <a href="/api/end-to-end">this document</a>.</p> +</blockquote> +<h5><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h5> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="/api/end-to-end">Secret Chats, MTProto 2.0</a></li> +<li><a href="/api/end-to-end/voice-calls">End-to-end-encryption in Voice Calls</a></li> +<li><a href="/mtproto/security_guidelines">Security guidelines for developers</a></li> +<li><a href="/api/end-to-end/pfs">Perfect Forward Secrecy in Secret Chats</a></li> +<li><a href="/api/end-to-end/seq_no">Sequence numbers in Secret Chats</a></li> +<li><a href="/schema/end-to-end">End-to-End TL Schema</a></li> +</ul> +<p></div></p> +<hr> +<p>Secret Chats are one-on-one chats wherein messages are encrypted with a key held only by the chat’s participants. Please note that the <a href="/schema/end-to-end">schema</a> for end-to-end encrypted Secret Chats is different from what is used for <a href="/mtproto">cloud chats</a>:</p> +<div> + <a href="/file/811140845/3/3aEkph1_NYU/cf861ae5ea85912769" target="_blank"><img src="/file/811140845/3/3aEkph1_NYU/cf861ae5ea85912769" title="End-to-end encryption in MTProto (Secret Chats)" class="dev_page_image"></a> +</div> +<h3><a class="anchor" href="#key-generation" id="key-generation" name="key-generation"><i class="anchor-icon"></i></a>Key Generation</h3> +<p>The Diffie-Hellman protocol is used for key generation. For more information, see <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">Wikipedia</a>.</p> +<p>Let us consider the following scenario: User <strong>A</strong> would like to initiate encrypted communication with User <strong>B</strong>.</p> +<h4><a class="anchor" href="#sending-a-request" id="sending-a-request" name="sending-a-request"><i class="anchor-icon"></i></a>Sending a Request</h4> +<p>User <strong>A</strong> executes <a href="/method/messages.getDhConfig">messages.getDhConfig</a> to obtain the Diffie-Hellman parameters: a prime <strong>p</strong>, and a high order element <strong>g</strong>.</p> +<p>Executing this method before each new key generation procedure is of vital importance. It makes sense to cache the values of the parameters together with the version in order to avoid having to receive all of the values every time. If the version stored on the client is still up-to-date, the server will return the constructor <a href="/constructor/messages.dhConfigNotModified">messages.dhConfigNotModified</a>.</p> +<p>Client is expected to check whether <strong>p</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that 2^2047 < p < 2^2048), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> -- namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as to avoid repeating lengthy computations in future. This cache might be shared with one used for <a href="/mtproto/auth_key">Authorization Key generation</a>.</p> +<p>If the client has an inadequate random number generator, it makes sense to pass the <strong>random_length</strong> parameter (random_length> 0) so the server generates its own random sequence <strong>random</strong> of the appropriate length. +<strong>Important</strong>: using the server’s random sequence in its raw form may be unsafe. It must be combined with a client sequence, for example, by generating a client random number of the same length (<strong>client_random</strong>) and using <code>final_random := random XOR client_random</code>.</p> +<p>Client <strong>A</strong> computes a 2048-bit number <strong>a</strong> (using sufficient entropy or the server’s <strong>random</strong>; see above) and executes <a href="/method/messages.requestEncryption">messages.requestEncryption</a> after passing in <code>g_a := pow(g, a) mod dh_prime</code>.</p> +<p>User <strong>B</strong> receives the update <a href="/constructor/updateEncryption">updateEncryption</a> for all associated authorization keys (all authorized devices) with the chat constructor <a href="/constructor/encryptedChatRequested">encryptedChatRequested</a>. The user must be shown basic information about User <strong>A</strong> and must be prompted to accept or reject the request.</p> +<p>Both clients are to check that <strong>g</strong>, <strong>g_a</strong> and <strong>g_b</strong> are greater than one and smaller than <strong>p-1</strong>. We recommend checking that <strong>g_a</strong> and <strong>g_b</strong> are between <strong>2^{2048-64}</strong> and <strong>p - 2^{2048-64}</strong> as well.</p> +<h4><a class="anchor" href="#accepting-a-request" id="accepting-a-request" name="accepting-a-request"><i class="anchor-icon"></i></a>Accepting a Request</h4> +<p>After User <strong>B</strong> confirms the creation of a secret chat with <strong>A</strong> in the client interface, Client <strong>B</strong> also receives up-to-date configuration parameters for the Diffie-Hellman method. Thereafter, it generates a random 2048-bit number, <strong>b</strong>, using rules similar to those for <strong>a</strong>. </p> +<p>Having received <strong>g_a</strong> from the update with <a href="/constructor/encryptedChatRequested">encryptedChatRequested</a>, it can immediately generate the final shared key: <code>key = (pow(g_a, b) mod dh_prime)</code>. If key length < 256 bytes, add several leading zero bytes as padding — so that the key is exactly 256 bytes long. Its fingerprint, <strong>key_fingerprint</strong>, is equal to the 64 last bits of SHA1 (key).</p> +<p><strong>Note:</strong> this fingerprint is used as a sanity check for the key exchange procedure to detect bugs while developing client software — it is not connected to the key visualization used on the clients as means of external authentication in secret chats. <a href="/api/end-to-end/pfs#key-visualization">Key visualizations</a> on the clients are generated using the first 128 bits of SHA1(initial key) followed by the first 160 bits of SHA256(key used when secret chat was updated to layer 46).</p> +<p>Client <strong>B</strong> executes <a href="/method/messages.acceptEncryption">messages.acceptEncryption</a> after passing it <code>g_b := pow(g, b) mod dh_prime</code> and <strong>key_fingerprint</strong>.</p> +<p>For all of Client <strong>B’s</strong> authorized devices, except the current one, <a href="/constructor/updateEncryption">updateEncryption</a> updates are sent with the constructor <a href="/constructor/encryptedChatDiscarded">encryptedChatDiscarded</a>. Thereafter, the only device that will be able to access the secret chat is Device <strong>B</strong>, which made the call to <a href="/method/messages.acceptEncryption">messages.acceptEncryption</a>.</p> +<p>User <strong>A</strong> will be sent an <a href="/constructor/updateEncryption">updateEncryption</a> update with the constructor <a href="/constructor/encryptedChat">encryptedChat</a>, for the authorization key that initiated the chat.</p> +<p>With <strong>g_b</strong> from the update, Client <strong>A</strong> can also receive the shared key <code>key = (pow(g_b, a) mod dh_prime)</code>. If key length < 256 bytes, add several leading zero bytes as padding — so that the key is exactly 256 bytes long. If the fingerprint for the received key is identical to the one that was passed to <a href="/constructor/encryptedChat">encryptedChat</a>, incoming messages can be sent and processed. Otherwise, <a href="/method/messages.discardEncryption">messages.discardEncryption</a> must be executed and the user notified.</p> +<h4><a class="anchor" href="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a>Perfect Forward Secrecy</h4> +<p>In order to keep past communications safe, official Telegram clients will initiate re-keying once a key has been used to decrypt and encrypt more than 100 messages, or has been in use for more than one week, provided the key has been used to encrypt at least one message. Old keys are then securely discarded and cannot be reconstructed, even with access to the new keys currently in use.</p> +<blockquote> +<p>The re-keying protocol is further described in this article: <a href="/api/end-to-end/pfs">Perfect Forward Secrecy in Secret Chats</a>.</p> +</blockquote> +<p>Please note that your client must support Forward Secrecy in Secret Chats to be compatible with official Telegram clients. </p> +<h3><a class="anchor" href="#sending-and-receiving-messages-in-a-secret-chat" id="sending-and-receiving-messages-in-a-secret-chat" name="sending-and-receiving-messages-in-a-secret-chat"><i class="anchor-icon"></i></a>Sending and Receiving Messages in a Secret Chat</h3> +<h4><a class="anchor" href="#serialization-and-encryption-of-outgoing-messages" id="serialization-and-encryption-of-outgoing-messages" name="serialization-and-encryption-of-outgoing-messages"><i class="anchor-icon"></i></a>Serialization and Encryption of Outgoing Messages</h4> +<p>A TL object of type <a href="/type/DecryptedMessage">DecryptedMessage</a> is created and contains the message in plain text. For backward compatibility, the object must be wrapped in the constructor <a href="/constructor/decryptedMessageLayer">decryptedMessageLayer</a> with an indication of the supported layer (starting with 8). +The TL-Schema for end-to-end encrypted messages contents is represented <a href="/schema/end-to-end">here »</a>.</p> +<p>The resulting construct is serialized as an array of bytes using generic TL rules. The resulting array is padded at the top with 4 bytes of the array length not counting these 4 bytes. +A message key, <strong>msg_key</strong>, is computed as the 128 low-order bits of the SHA1 of the data obtained in the previous step. +The byte array is padded with random data until its length is divisible by 16 bytes. +An AES key and an initialization vector are computed ( <strong>key</strong> is the shared key obtained during <a href="#key-generation">Key Generation</a>; in MTProto 1.0, <strong>x</strong> = 0 ):</p> +<ul> +<li>msg_key = substr (SHA1 (plaintext), 4, 16);</li> +<li>sha1_a = SHA1 (msg_key + substr (key, x, 32));</li> +<li>sha1_b = SHA1 (substr (key, 32+x, 16) + msg_key + substr (key, 48+x, 16));</li> +<li>sha1_с = SHA1 (substr (key, 64+x, 32) + msg_key);</li> +<li>sha1_d = SHA1 (msg_key + substr (key, 96+x, 32));</li> +<li>aes_key = substr (sha1_a, 0, 8) + substr (sha1_b, 8, 12) + substr (sha1_c, 4, 12);</li> +<li>aes_iv = substr (sha1_a, 8, 12) + substr (sha1_b, 0, 8) + substr (sha1_c, 16, 4) + substr (sha1_d, 0, 8);</li> +</ul> +<p>Data is encrypted with a 256-bit key, <strong>aes_key</strong>, and a 256-bit initialization vector, <strong>aes-iv</strong>, using AES-256 encryption with infinite garble extension (IGE). Encryption key fingerprint <strong>key_fingerprint</strong> and the message key <strong>msg_key</strong> are added at the top of the resulting byte array.</p> +<p>Encrypted data is embedded into a <a href="/method/messages.sendEncrypted">messages.sendEncrypted</a> API call and passed to Telegram server for delivery to the other party of the Secret Chat.</p> +<h4><a class="anchor" href="#decrypting-an-incoming-message" id="decrypting-an-incoming-message" name="decrypting-an-incoming-message"><i class="anchor-icon"></i></a>Decrypting an Incoming Message</h4> +<p>The steps above are performed in reverse order. +When an encrypted message is received, you <strong>must</strong> check that msg_key is <strong>in fact</strong> equal to the 128 low-order bits of the SHA1 hash of the decrypted message. +If the message layer is greater than the one supported by the client, the user must be notified that the client version is out of date and prompted to update.</p> +<h4><a class="anchor" href="#sequence-numbers" id="sequence-numbers" name="sequence-numbers"><i class="anchor-icon"></i></a>Sequence numbers</h4> +<p>It is necessary to interpret all messages in their original order to protect against possible manipulations. Secret chats support a special mechanism for handling seq_no counters independently from the server.</p> +<blockquote> +<p>Proper handling of these counters is further described in this article: <a href="/api/end-to-end/seq_no">Sequence numbers in Secret Chats</a>.</p> +</blockquote> +<p>Please note that your client must support sequence numbers in Secret Chats to be compatible with official Telegram clients. </p> +<h4><a class="anchor" href="#sending-encrypted-files" id="sending-encrypted-files" name="sending-encrypted-files"><i class="anchor-icon"></i></a>Sending Encrypted Files</h4> +<p>All files sent to secret chats are encrypted with one-time keys that are in no way related to the chat’s shared key. Before an encrypted file is sent, it is assumed that the encrypted file’s address will be attached to the outside of an encrypted message using the <strong>file</strong> parameter of the <a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a> method and that the key for direct decryption will be sent in the body of the message (the <strong>key</strong> parameter in the constructors <a href="/constructor/decryptedMessageMediaPhoto">decryptedMessageMediaPhoto</a>, <a href="/constructor/decryptedMessageMediaPhoto">decryptedMessageMediaVideo</a> and <a href="/constructor/decryptedMessageMediaPhoto">decryptedMessageMediaFile</a>.</p> +<p>Prior to a file being sent to a secret chat, 2 random 256-bit numbers are computed which will serve as the AES key and initialization vector used to encrypt the file. AES-256 encryption with infinite garble extension (IGE) is used in like manner.</p> +<p>The key fingerprint is computed as follows:</p> +<ul> +<li>digest = md5(key + iv)</li> +<li>fingerprint = substr(digest, 0, 4) XOR substr(digest, 4, 4)</li> +</ul> +<p>The encrypted contents of a file are stored on the server in much the same way as those of a <a href="/api/files">file in cloud chats</a>: piece by piece using calls to <a href="/method/upload.saveFilePart">upload.saveFilePart</a>. +A subsequent call to <a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a> will assign an identifier to the stored file and send the address together with the message. The recipient will receive an update with <a href="/constructor/encryptedMessage">encryptedMessage</a>, and the <strong>file</strong> parameter will contain file information.</p> +<p>Incoming and outgoing encrypted files can be forwarded to other secret chats using the constructor <a href="/constructor/inputEncryptedFile">inputEncryptedFile</a> to avoid saving the same content on the server twice.</p> +<h4><a class="anchor" href="#working-with-an-update-box" id="working-with-an-update-box" name="working-with-an-update-box"><i class="anchor-icon"></i></a>Working with an Update Box</h4> +<p>Secret chats are associated with specific devices (or rather with <a href="/mtproto/description_v1#authorization-key">authorization keys</a>), not users. A conventional message box, which uses <strong>pts</strong> to describe the client’s status, is not suitable, because it is designed for long-term message storage and message access from different devices.</p> +<p>An additional temporary message queue is introduced as a solution to this problem. When an update regarding a message from a secret chat is sent, a new value of <strong>qts</strong> is sent, which helps reconstruct the difference if there has been a long break in the connection or in case of loss of an update.</p> +<p>As the number of events increases, the value of <strong>qts</strong> increases monotonically (not always by 1). The initial value may not (and will not) be equal to 0.</p> +<p>The fact that events from the temporary queue have been received and stored by the client is acknowledged explicitly by a call to the <a href="/method/messages.receivedQueue">messages.receivedQueue</a> method or implicitly by a call to <a href="/method/updates.getDifference">updates.getDifference</a> (the value of <strong>qts</strong> passed, not the final state). All messages acknowledged as delivered by the client, as well as any messages older than 7 days, may (and will) be deleted from the server.</p> +<p>Upon de-authorization, the event queue of the corresponding device will be forcibly cleared, and the value of <strong>qts</strong> will become irrelevant.</p> +<h2><a class="anchor" href="#updating-to-new-layers" id="updating-to-new-layers" name="updating-to-new-layers"><i class="anchor-icon"></i></a>Updating to new layers</h2> +<p>Your client should always store the maximal layer that is known to be supported by the client on the other side of a secret chat. When the secret chat is first created, this value should be initialized to 8, the first layer where Secret Chats became available. This remote layer value must always be updated immediately after receiving <em>any</em> packet containing information of an upper layer, i.e.:</p> +<ul> +<li>any secret chat message containing <em>layer_no</em> in its <code>decryptedMessageLayer</code> with <em>layer</em>>=17, or</li> +<li>a <a href="/constructor/decryptedMessageActionNotifyLayer">decryptedMessageActionNotifyLayer</a> service message, wrapped as if it were the <a href="/constructor/decryptedMessageService">decryptedMessageService</a> constructor of the obsolete layer 8 (constructor <code>decryptedMessageService#aa48327d</code>).</li> +</ul> +<h4><a class="anchor" href="#notifying-the-remote-client-about-your-local-layer" id="notifying-the-remote-client-about-your-local-layer" name="notifying-the-remote-client-about-your-local-layer"><i class="anchor-icon"></i></a>Notifying the remote client about your local layer</h4> +<p>In order to notify the remote client of your local layer, your client must send a message of the <code>decryptedMessageActionNotifyLayer</code> type. This notification must be wrapped in a constructor of an appropriate layer. For instance, if the remote layer for the chat in question is deemed to be lower than 17, the notification must be wrapped as if it were the <code>decryptedMessageService</code> constructor of the obsolete layer 8 (constructor <code>decryptedMessageService#aa48327d</code>), despite the fact that the <code>decryptedMessageActionNotifyLayer</code> constructor is actually not present in Layer 8.</p> +<p>There are three cases when your client must notify the remote client about its local layer:</p> +<ol> +<li>As soon as a new secret chat has been created, immediately after the secret key has been successfully exchanged.</li> +<li>Immediately after the remote layer value is updated to layer 17 or higher. An exception to this case is when the secret chat in question has been created less than 15 seconds ago. In this case the notification was already sent (see 1).</li> +<li>Immediately after the local client has been updated to support a new secret chat layer. In this case notifications must be sent to <strong>all</strong> currently existing secret chats. Note that this is only necessary when updating to new layers that contain changes in the secret chats implementation (e.g. you don’t need to do this when your client is updated from Layer 17 to Layer 18).</li> +</ol> +<blockquote> +<p>Note that all pending obsolete layer messages must be sent prior to the layer update notification (more on this in <a href="/api/end-to-end/seq_no#preventing-gaps">Handling Sequence numbers</a>).</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/errors.html b/data/corefork.telegram.org/api/errors.html new file mode 100644 index 0000000000..a7f8aeec7d --- /dev/null +++ b/data/corefork.telegram.org/api/errors.html @@ -0,0 +1,189 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Error handling </title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to handle API return errors correctly."> + <meta property="og:title" content="Error handling "> + <meta property="og:image" content="80b44334eec2aec564"> + <meta property="og:description" content="How to handle API return errors correctly."> + <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?215" 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/errors" >Error handling </a></li></ul></div> + <h1 id="dev_page_title">Error handling </h1> + + <div id="dev_page_content"><p>There will be errors when working with the API, and they must be correctly handled on the client.</p> +<p>An error is characterized by several parameters:</p> +<h4><a class="anchor" href="#error-code" id="error-code" name="error-code"><i class="anchor-icon"></i></a>Error Code</h4> +<p>Numerical value similar to HTTP status. Contains information on the type of error that occurred: for example, a data input error, privacy error, or server error. This is a required parameter.</p> +<h4><a class="anchor" href="#error-type" id="error-type" name="error-type"><i class="anchor-icon"></i></a>Error Type</h4> +<p>A string literal in the form of <code>/[A-Z_0-9]+/</code>, which summarizes the problem. For example, <code>AUTH_KEY_UNREGISTERED</code>. This is an optional parameter.</p> +<hr> +<h4><a class="anchor" href="#error-constructors" id="error-constructors" name="error-constructors"><i class="anchor-icon"></i></a>Error Constructors</h4> +<p>There should be a way to handle errors that are returned in <a href="/mtproto/service_messages#rpc-error">rpc_error</a> constructors.</p> +<p>Below is a list of error codes and their meanings:</p> +<h3><a class="anchor" href="#303-see-other" id="303-see-other" name="303-see-other"><i class="anchor-icon"></i></a>303 SEE_OTHER</h3> +<p>The request must be repeated, but directed to a different data center.</p> +<h4><a class="anchor" href="#examples-of-errors" id="examples-of-errors" name="examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4> +<ul> +<li>FILE_MIGRATE_X: the file to be accessed is currently stored in a different data center.</li> +<li>PHONE_MIGRATE_X: the phone number a user is trying to use for authorization is associated with a different data center.</li> +<li>NETWORK_MIGRATE_X: the source IP address is associated with a different data center (for registration)</li> +<li>USER_MIGRATE_X: the user whose identity is being used to execute queries is associated with a different data center (for registration)</li> +</ul> +<p>In all these cases, the error description’s string literal contains the number of the data center (instead of the X) to which the repeated query must be sent. +<a href="/api/datacenter">More information about redirects between data centers »</a></p> +<h3><a class="anchor" href="#400-bad-request" id="400-bad-request" name="400-bad-request"><i class="anchor-icon"></i></a>400 BAD_REQUEST</h3> +<p>The query contains errors. In the event that a request was created using a form and contains user generated data, the user should be notified that the data must be corrected before the query is repeated.</p> +<h4><a class="anchor" href="#examples-of-errors" id="examples-of-errors" name="examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4> +<ul> +<li>FIRSTNAME_INVALID: The first name is invalid</li> +<li>LASTNAME_INVALID: The last name is invalid</li> +<li>PHONE_NUMBER_INVALID: The phone number is invalid</li> +<li>PHONE_CODE_HASH_EMPTY: phone_code_hash is missing</li> +<li>PHONE_CODE_EMPTY: phone_code is missing</li> +<li>PHONE_CODE_EXPIRED: The confirmation code has expired</li> +<li>API_ID_INVALID: The api_id/api_hash combination is invalid</li> +<li>PHONE_NUMBER_OCCUPIED: The phone number is already in use</li> +<li>PHONE_NUMBER_UNOCCUPIED: The phone number is not yet being used</li> +<li>USERS_TOO_FEW: Not enough users (to create a chat, for example)</li> +<li>USERS_TOO_MUCH: The maximum number of users has been exceeded (to create a chat, for example)</li> +<li>TYPE_CONSTRUCTOR_INVALID: The type constructor is invalid</li> +<li>FILE_PART_INVALID: The file part number is invalid</li> +<li>FILE_PARTS_INVALID: The number of file parts is invalid</li> +<li>FILE_PART_Х_MISSING: Part X (where X is a number) of the file is missing from storage</li> +<li>MD5_CHECKSUM_INVALID: The MD5 checksums do not match</li> +<li>PHOTO_INVALID_DIMENSIONS: The photo dimensions are invalid</li> +<li>FIELD_NAME_INVALID: The field with the name FIELD_NAME is invalid</li> +<li>FIELD_NAME_EMPTY: The field with the name FIELD_NAME is missing</li> +<li>MSG_WAIT_FAILED: A request that must be completed before processing the current request returned an error</li> +<li>MSG_WAIT_TIMEOUT: A request that must be completed before processing the current request didn't finish processing yet</li> +</ul> +<h3><a class="anchor" href="#401-unauthorized" id="401-unauthorized" name="401-unauthorized"><i class="anchor-icon"></i></a>401 UNAUTHORIZED</h3> +<p>There was an unauthorized attempt to use functionality available only to authorized users.</p> +<h4><a class="anchor" href="#examples-of-errors" id="examples-of-errors" name="examples-of-errors"><i class="anchor-icon"></i></a>Examples of Errors:</h4> +<ul> +<li>AUTH_KEY_UNREGISTERED: The key is not registered in the system</li> +<li>AUTH_KEY_INVALID: The key is invalid</li> +<li>USER_DEACTIVATED: The user has been deleted/deactivated</li> +<li>SESSION_REVOKED: The authorization has been invalidated, because of the user terminating all sessions</li> +<li>SESSION_EXPIRED: The authorization has expired</li> +<li>AUTH_KEY_PERM_EMPTY: The method is unavailble for temporary authorization key, not bound to permanent</li> +</ul> +<h3><a class="anchor" href="#403-forbidden" id="403-forbidden" name="403-forbidden"><i class="anchor-icon"></i></a>403 FORBIDDEN</h3> +<p>Privacy violation. For example, an attempt to write a message to someone who has blacklisted the current user.</p> +<h3><a class="anchor" href="#404-not-found" id="404-not-found" name="404-not-found"><i class="anchor-icon"></i></a>404 NOT_FOUND</h3> +<p>An attempt to invoke a non-existent object, such as a method.</p> +<h3><a class="anchor" href="#406-not-acceptable" id="406-not-acceptable" name="406-not-acceptable"><i class="anchor-icon"></i></a>406 NOT_ACCEPTABLE</h3> +<p>Similar to <a href="#400-bad-request">400 BAD_REQUEST</a>, but the app should not display any error messages to user in UI as a result of this response. The error message will be delivered via <a href="/constructor/updateServiceNotification">updateServiceNotification</a> instead.</p> +<h3><a class="anchor" href="#420-flood" id="420-flood" name="420-flood"><i class="anchor-icon"></i></a>420 FLOOD</h3> +<p>The maximum allowed number of attempts to invoke the given method with the given input parameters has been exceeded. For example, in an attempt to request a large number of text messages (SMS) for the same phone number.</p> +<h4><a class="anchor" href="#error-example" id="error-example" name="error-example"><i class="anchor-icon"></i></a>Error Example:</h4> +<ul> +<li>FLOOD_WAIT_X: A wait of X seconds is required (where X is a number)</li> +</ul> +<h3><a class="anchor" href="#500-internal" id="500-internal" name="500-internal"><i class="anchor-icon"></i></a>500 INTERNAL</h3> +<p>An internal server error occurred while a request was being processed; for example, there was a disruption while accessing a database or file storage.</p> +<p>If a client receives a 500 error, or you believe this error should not have occurred, please collect as much information as possible about the query and error and send it to the developers.</p> +<h3><a class="anchor" href="#other-error-codes" id="other-error-codes" name="other-error-codes"><i class="anchor-icon"></i></a>Other Error Codes</h3> +<p>If a server returns an error with a code other than the ones listed above, it may be considered the same as a 500 error and treated as an <a href="#500-internal">internal server error</a>.</p></div> + +</div> + + </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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/files.html b/data/corefork.telegram.org/api/files.html new file mode 100644 index 0000000000..5cb328b3b2 --- /dev/null +++ b/data/corefork.telegram.org/api/files.html @@ -0,0 +1,568 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Uploading and Downloading Files</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to transfer large data batches correctly."> + <meta property="og:title" content="Uploading and Downloading Files"> + <meta property="og:image" content="1937a1be855ea8fce8"> + <meta property="og:description" content="How to transfer large data batches correctly."> + <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?215" 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/files" >Uploading and Downloading Files</a></li></ul></div> + <h1 id="dev_page_title">Uploading and Downloading Files</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>When working with the API, it is sometimes necessary to send a relatively large file to the server. For example, when sending a message with a photo/video attachment or when setting the current user’s profile picture.</p> +<h3><a class="anchor" href="#uploading-files" id="uploading-files" name="uploading-files"><i class="anchor-icon"></i></a>Uploading files</h3> +<p>There are a number of API methods to save files. The schema of the types and methods used is presented below:</p> +<pre><code><a href='/constructor/inputFile'>inputFile</a>#f52ff27f id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> name:<a href='/type/string'>string</a> md5_checksum:<a href='/type/string'>string</a> = <a href='/type/InputFile'>InputFile</a>; +<a href='/constructor/inputFileBig'>inputFileBig</a>#fa4f0bb5 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> name:<a href='/type/string'>string</a> = <a href='/type/InputFile'>InputFile</a>; + + +<a href='/constructor/inputEncryptedFileUploaded'>inputEncryptedFileUploaded</a>#64bd0306 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> md5_checksum:<a href='/type/string'>string</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>; +<a href='/constructor/inputEncryptedFileBigUploaded'>inputEncryptedFileBigUploaded</a>#2dc173c8 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>; + +<a href='/constructor/inputSecureFileUploaded'>inputSecureFileUploaded</a>#3334b0f0 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> md5_checksum:<a href='/type/string'>string</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; +<a href='/constructor/inputSecureFile'>inputSecureFile</a>#5367e5be id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; + +<a href='/constructor/inputMediaUploadedPhoto'>inputMediaUploadedPhoto</a>#1e287d04 flags:<a href='/type/%23'>#</a> file:<a href='/type/InputFile'>InputFile</a> stickers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputDocument'>InputDocument</a>> ttl_seconds:flags.1?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; +<a href='/constructor/inputMediaUploadedDocument'>inputMediaUploadedDocument</a>#5b38c6c1 flags:<a href='/type/%23'>#</a> nosound_video:flags.3?<a href='/constructor/true'>true</a> force_file:flags.4?<a href='/constructor/true'>true</a> file:<a href='/type/InputFile'>InputFile</a> thumb:flags.2?<a href='/type/InputFile'>InputFile</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> stickers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputDocument'>InputDocument</a>> ttl_seconds:flags.1?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; + +<a href='/constructor/inputChatUploadedPhoto'>inputChatUploadedPhoto</a>#c642724e flags:<a href='/type/%23'>#</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> = <a href='/type/InputChatPhoto'>InputChatPhoto</a>; + + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/method/messages.uploadMedia'>messages.uploadMedia</a>#519bc2b1 peer:<a href='/type/InputPeer'>InputPeer</a> media:<a href='/type/InputMedia'>InputMedia</a> = <a href='/type/MessageMedia'>MessageMedia</a>; +<a href='/method/messages.sendEncryptedFile'>messages.sendEncryptedFile</a>#5559481d flags:<a href='/type/%23'>#</a> silent:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> random_id:<a href='/type/long'>long</a> data:<a href='/type/bytes'>bytes</a> file:<a href='/type/InputEncryptedFile'>InputEncryptedFile</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>; + +<a href='/method/photos.uploadProfilePhoto'>photos.uploadProfilePhoto</a>#89f30f69 flags:<a href='/type/%23'>#</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> = <a href='/type/photos.Photo'>photos.Photo</a>; + +<a href='/method/upload.saveFilePart'>upload.saveFilePart</a>#b304a621 file_id:<a href='/type/long'>long</a> file_part:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/Bool'>Bool</a>; +<a href='/method/upload.saveBigFilePart'>upload.saveBigFilePart</a>#de7b673d file_id:<a href='/type/long'>long</a> file_part:<a href='/type/int'>int</a> file_total_parts:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Before transmitting the contents of the file itself, the file has to be assigned a unique 64-bit client identifier: <strong>file_id</strong>.</p> +<p>The file’s binary content is then split into parts. All parts must have the same size ( <strong>part_size</strong> ) and the following conditions must be met:</p> +<ul> +<li><code>part_size % 1024 = 0</code> (divisible by 1KB)</li> +<li><code>524288 % part_size = 0</code> (512KB must be evenly divisible by <strong>part_size</strong>)</li> +</ul> +<p>The last part does not have to satisfy these conditions, provided its size is less than <strong>part_size</strong>.</p> +<p>Each part should have a sequence number, <strong>file_part</strong>, with a value ranging from 0 to 2,999.</p> +<p>After the file has been partitioned you need to choose a method for saving it on the server. Use <a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a> in case the full size of the file is more than <strong>10 MB</strong> and <a href="/method/upload.saveFilePart">upload.saveFilePart</a> for smaller files.</p> +<p>Each call saves a portion of the data in a temporary location on the server to be used later. The storage life of each portion of data is between several minutes and several hours (depending on how busy the storage area is). After this time, the file part will become unavailable. To increase the time efficiency of a file save operation, we recommend using a call queue, so X pieces of the file are being saved at any given moment in time. Each successful operation to save a part invokes the method call to save the next part. The value of X can be tuned to achieve maximum performance.</p> +<p>When using one of the methods mentioned above to save file parts, one of the following <a href="/api/errors#400-bad-request">data input errors</a> may be returned:</p> +<ul> +<li>FILE_PARTS_INVALID - Invalid number of parts. The value is not between <code>1..3000</code></li> +<li>FILE_PART_INVALID: The file part number is invalid. The value is not between <code>0 and 2,999</code>.</li> +<li>FILE_PART_TOO_BIG: The size limit (512 KB) for the content of the file part has been exceeded</li> +<li>FILE_PART_EMPTY: The file part sent is empty</li> +<li>FILE_PART_SIZE_INVALID - 512KB cannot be evenly divided by <strong>part_size</strong></li> +<li>FILE_PART_SIZE_CHANGED - The part size is different from the size of one of the previous parts in the same file</li> +</ul> +<p>While the parts are being uploaded, an <a href="https://en.wikipedia.org/wiki/MD5">MD5 hash</a> of the file contents can also be computed to be used later as the <strong>md5_checksum</strong> parameter in the <a href="/constructor/inputFile">inputFile</a> constructor (since it is checked only by the server, for encrypted secret chat files it must be generated from the encrypted file). +After the entire file is successfully saved, the final method may be called and passed the generated <a href="/type/InputFile">inputFile</a> object. In case the <a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a> method is used, the <a href="/constructor/inputFileBig">inputFileBig</a> constructor must be passed, in other cases use <a href="/constructor/inputFile">inputFile</a>.</p> +<ul> +<li><a href="/method/messages.sendMedia">messages.sendMedia</a> - Sends a media file to a chat</li> +<li><a href="/method/messages.uploadMedia">messages.uploadMedia</a> - Uploads a media file to a chat, without sending it, returning only a <a href="/type/MessageMedia">MessageMedia</a> constructor that can be used to later send the file to multiple chats, without reuploading it every time. </li> +<li><a href="/method/photos.uploadProfilePhoto">photos.uploadProfilePhoto</a> - Used to set a <a href="#uploading-profile-or-chat-pictures">profile or chat picture or video</a></li> +</ul> +<p>The file save operation may return one of the following <a href="/api/errors#400-bad-request">data input errors</a>:</p> +<ul> +<li>FILE_PARTS_INVALID: The number of file parts is invalid The value is not between 1 and 3,000.</li> +<li>FILE_PART_Х_MISSING: Part X (where X is a number) of the file is missing from storage. Try repeating the method call to resave the part.</li> +<li>MD5_CHECKSUM_INVALID: The file’s checksum did not match the <strong>md5_checksum</strong> parameter</li> +</ul> +<h4><a class="anchor" href="#albums-grouped-media" id="albums-grouped-media" name="albums-grouped-media"><i class="anchor-icon"></i></a>Albums, grouped media</h4> +<pre><code><a href='/constructor/inputMediaUploadedPhoto'>inputMediaUploadedPhoto</a>#1e287d04 flags:<a href='/type/%23'>#</a> file:<a href='/type/InputFile'>InputFile</a> stickers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputDocument'>InputDocument</a>> ttl_seconds:flags.1?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; +<a href='/constructor/inputMediaUploadedDocument'>inputMediaUploadedDocument</a>#5b38c6c1 flags:<a href='/type/%23'>#</a> nosound_video:flags.3?<a href='/constructor/true'>true</a> force_file:flags.4?<a href='/constructor/true'>true</a> file:<a href='/type/InputFile'>InputFile</a> thumb:flags.2?<a href='/type/InputFile'>InputFile</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> stickers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputDocument'>InputDocument</a>> ttl_seconds:flags.1?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; + +<a href='/constructor/inputSingleMedia'>inputSingleMedia</a>#1cc6e91f flags:<a href='/type/%23'>#</a> media:<a href='/type/InputMedia'>InputMedia</a> random_id:<a href='/type/long'>long</a> message:<a href='/type/string'>string</a> entities:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/InputSingleMedia'>InputSingleMedia</a>; + +---functions--- + +<a href='/method/messages.sendMultiMedia'>messages.sendMultiMedia</a>#cc0110cb flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> multi_media:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputSingleMedia'>InputSingleMedia</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Telegram allows grouping photos into <a href="https://telegram.org/blog/albums-saved-messages">albums</a> and generic files (audio, docuemnts) into media groups. </p> +<p>To do this, <a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a> is used, wrapping each <a href="/type/InputMedia">InputMedia</a> constructor (uploaded or pre-existing, maximum 10 per media group) into an <a href="/constructor/inputSingleMedia">inputSingleMedia</a> constructor, optionally providing a custom per-file caption in <code>message</code>. </p> +<p>For photo albums, clients should display an album caption only if exactly one photo in the group has a caption, otherwise no album caption should be displayed, and only when viewing in detail a specific photo of the group the caption should be shown.<br> +Other grouped media can display a caption under each file. </p> +<h4><a class="anchor" href="#re-using-pre-uploaded-files" id="re-using-pre-uploaded-files" name="re-using-pre-uploaded-files"><i class="anchor-icon"></i></a>Re-using pre-uploaded files</h4> +<pre><code><a href='/constructor/document'>document</a>#1e87342b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumbs:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_thumbs:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/Document'>Document</a>; + +---functions--- + +<a href='/method/messages.getDocumentByHash'>messages.getDocumentByHash</a>#338e2464 sha256:<a href='/type/bytes'>bytes</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/Document'>Document</a>;</code></pre> +<p>For some types of documents like GIFs, <a href="/method/messages.getDocumentByHash">messages.getDocumentByHash</a> can be used to search for the document on Telegram servers. +The SHA256 hash of the file is computed, and it is passed along with the file's mime type and size to the method: if the file type is correct and the file is found, a <a href="/constructor/document">document</a> is returned.</p> +<h3><a class="anchor" href="#uploading-profile-or-chat-pictures" id="uploading-profile-or-chat-pictures" name="uploading-profile-or-chat-pictures"><i class="anchor-icon"></i></a>Uploading profile or chat pictures</h3> +<pre><code><a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>; + +<a href='/constructor/photos.photo'>photos.photo</a>#20212ca8 photo:<a href='/type/Photo'>Photo</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/photos.Photo'>photos.Photo</a>; + +<a href='/constructor/inputPhoto'>inputPhoto</a>#3bb3b94a id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> = <a href='/type/InputPhoto'>InputPhoto</a>; + +<a href='/constructor/inputFile'>inputFile</a>#f52ff27f id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> name:<a href='/type/string'>string</a> md5_checksum:<a href='/type/string'>string</a> = <a href='/type/InputFile'>InputFile</a>; + +<a href='/constructor/inputChatUploadedPhoto'>inputChatUploadedPhoto</a>#c642724e flags:<a href='/type/%23'>#</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> = <a href='/type/InputChatPhoto'>InputChatPhoto</a>; +<a href='/constructor/inputChatPhoto'>inputChatPhoto</a>#8953ad37 id:<a href='/type/InputPhoto'>InputPhoto</a> = <a href='/type/InputChatPhoto'>InputChatPhoto</a>; + +---functions--- + +<a href='/method/photos.updateProfilePhoto'>photos.updateProfilePhoto</a>#72d4742c id:<a href='/type/InputPhoto'>InputPhoto</a> = <a href='/type/photos.Photo'>photos.Photo</a>; +<a href='/method/photos.uploadProfilePhoto'>photos.uploadProfilePhoto</a>#89f30f69 flags:<a href='/type/%23'>#</a> file:flags.0?<a href='/type/InputFile'>InputFile</a> video:flags.1?<a href='/type/InputFile'>InputFile</a> video_start_ts:flags.2?<a href='/type/double'>double</a> = <a href='/type/photos.Photo'>photos.Photo</a>; + +<a href='/method/messages.editChatPhoto'>messages.editChatPhoto</a>#35ddd674 chat_id:<a href='/type/long'>long</a> photo:<a href='/type/InputChatPhoto'>InputChatPhoto</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/channels.editPhoto'>channels.editPhoto</a>#f12e57c9 channel:<a href='/type/InputChannel'>InputChannel</a> photo:<a href='/type/InputChatPhoto'>InputChatPhoto</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>User profile pictures can be uploaded using the <a href="/method/photos.updateProfilePhoto">photos.uploadProfilePhoto</a> method: the actual profile picture has to be <a href="#uploading-files">uploaded as for normal files</a>.<br> +<a href="/method/photos.updateProfilePhoto">photos.uploadProfilePhoto</a> can also be used to reupload previously uploaded profile pictures. </p> +<h4><a class="anchor" href="#animated-profile-pictures" id="animated-profile-pictures" name="animated-profile-pictures"><i class="anchor-icon"></i></a>Animated profile pictures</h4> +<p>Animated profile pictures are also supported, by populating the <code>video</code> constructor: square MPEG4 videos up to <code>1080x1080</code> are supported, <code>800x800</code> is the recommended resolution.<br> +The <code>video_start_ts</code> is a floating point UNIX timestamp in seconds, indicating the frame of the video that should be used as static preview. </p> +<p><a href="/api/channel">Chat, channel and supergroup</a> profile photos and videos can be uploaded using <a href="/method/messages.editChatPhoto">messages.editChatPhoto</a> (<a href="/api/channel">legacy groups</a>) or <a href="/method/channels.editPhoto">channels.editPhoto</a> (<a href="/api/channel">channels, supergroups</a>).<br> +Use the <a href="/constructor/inputChatPhoto">inputChatPhoto</a> to reuse previously uploaded profile pictures. </p> +<h3><a class="anchor" href="#downloading-files" id="downloading-files" name="downloading-files"><i class="anchor-icon"></i></a>Downloading files</h3> +<p>There are methods available to download files which have been successfully uploaded. The schema of the types and methods used is presented below:</p> +<pre><code><a href='/constructor/upload.file'>upload.file</a>#96a18d5 type:<a href='/type/storage.FileType'>storage.FileType</a> mtime:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/upload.File'>upload.File</a>; +<a href='/constructor/upload.fileCdnRedirect'>upload.fileCdnRedirect</a>#f18cda44 dc_id:<a href='/type/int'>int</a> file_token:<a href='/type/bytes'>bytes</a> encryption_key:<a href='/type/bytes'>bytes</a> encryption_iv:<a href='/type/bytes'>bytes</a> file_hashes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/FileHash'>FileHash</a>> = <a href='/type/upload.File'>upload.File</a>; + +<a href='/constructor/storage.fileUnknown'>storage.fileUnknown</a>#aa963b05 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileJpeg'>storage.fileJpeg</a>#7efe0e = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileGif'>storage.fileGif</a>#cae1aadf = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.filePng'>storage.filePng</a>#a4f63c0 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMp3'>storage.fileMp3</a>#528a0677 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMov'>storage.fileMov</a>#4b09ebbc = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.filePartial'>storage.filePartial</a>#40bc6f52 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMp4'>storage.fileMp4</a>#b3cea0e4 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileWebp'>storage.fileWebp</a>#1081464c = <a href='/type/storage.FileType'>storage.FileType</a>; + +---functions--- + +<a href='/method/upload.getFile'>upload.getFile</a>#b15a9afc flags:<a href='/type/%23'>#</a> precise:flags.0?<a href='/constructor/true'>true</a> cdn_supported:flags.1?<a href='/constructor/true'>true</a> location:<a href='/type/InputFileLocation'>InputFileLocation</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/upload.File'>upload.File</a>;</code></pre> +<p>Any file can be downloaded by calling <a href="/method/upload.getFile">upload.getFile</a>. +The data for the input parameter of the <a href="/type/InputFileLocation">InputFileLocation</a> type is generated as follows:</p> +<pre><code><a href='/constructor/inputFileLocation'>inputFileLocation</a>#dfdaabe1 volume_id:<a href='/type/long'>long</a> local_id:<a href='/type/int'>int</a> secret:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputEncryptedFileLocation'>inputEncryptedFileLocation</a>#f5235d55 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputDocumentFileLocation'>inputDocumentFileLocation</a>#bad07584 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> thumb_size:<a href='/type/string'>string</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputSecureFileLocation'>inputSecureFileLocation</a>#cbc7ee28 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputTakeoutFileLocation'>inputTakeoutFileLocation</a>#29be5899 = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputPhotoFileLocation'>inputPhotoFileLocation</a>#40181ffe id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> thumb_size:<a href='/type/string'>string</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputPhotoLegacyFileLocation'>inputPhotoLegacyFileLocation</a>#d83466f3 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> volume_id:<a href='/type/long'>long</a> local_id:<a href='/type/int'>int</a> secret:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputPeerPhotoFileLocation'>inputPeerPhotoFileLocation</a>#37257e99 flags:<a href='/type/%23'>#</a> big:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> photo_id:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputStickerSetThumb'>inputStickerSetThumb</a>#9d84f3db stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> thumb_version:<a href='/type/int'>int</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; +<a href='/constructor/inputGroupCallStream'>inputGroupCallStream</a>#598a92a flags:<a href='/type/%23'>#</a> call:<a href='/type/InputGroupCall'>InputGroupCall</a> time_ms:<a href='/type/long'>long</a> scale:<a href='/type/int'>int</a> video_channel:flags.0?<a href='/type/int'>int</a> video_quality:flags.0?<a href='/type/int'>int</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; + +<a href='/constructor/inputStickerSetEmpty'>inputStickerSetEmpty</a>#ffb62b95 = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetID'>inputStickerSetID</a>#9de7a269 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetShortName'>inputStickerSetShortName</a>#861cc8a0 short_name:<a href='/type/string'>string</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetAnimatedEmoji'>inputStickerSetAnimatedEmoji</a>#28703c8 = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetDice'>inputStickerSetDice</a>#e67f520e emoticon:<a href='/type/string'>string</a> = <a href='/type/InputStickerSet'>InputStickerSet</a>; +<a href='/constructor/inputStickerSetAnimatedEmojiAnimations'>inputStickerSetAnimatedEmojiAnimations</a>#cde3739 = <a href='/type/InputStickerSet'>InputStickerSet</a>; + +<a href='/constructor/inputPeerSelf'>inputPeerSelf</a>#7da07ec9 = <a href='/type/InputPeer'>InputPeer</a>; +<a href='/constructor/inputPeerChat'>inputPeerChat</a>#35a95cb9 chat_id:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>; +<a href='/constructor/inputPeerUser'>inputPeerUser</a>#dde8a54c user_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>; +<a href='/constructor/inputPeerChannel'>inputPeerChannel</a>#27bcbbfc channel_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputPeer'>InputPeer</a>; + +<a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>; +<a href='/constructor/document'>document</a>#1e87342b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumbs:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_thumbs:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/Document'>Document</a>; + +<a href='/constructor/photoSize'>photoSize</a>#75c78e60 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoCachedSize'>photoCachedSize</a>#21e1ad6 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>; + +<a href='/constructor/chatPhoto'>chatPhoto</a>#1c6e1c11 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> stripped_thumb:flags.1?<a href='/type/bytes'>bytes</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/ChatPhoto'>ChatPhoto</a>; +<a href='/constructor/userProfilePhoto'>userProfilePhoto</a>#82d1f706 flags:<a href='/type/%23'>#</a> has_video:flags.0?<a href='/constructor/true'>true</a> photo_id:<a href='/type/long'>long</a> stripped_thumb:flags.1?<a href='/type/bytes'>bytes</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/UserProfilePhoto'>UserProfilePhoto</a>;</code></pre> +<ul> +<li> +<p>For photos, <a href="/constructor/inputPhotoFileLocation">inputPhotoFileLocation</a> is used:</p> +<ul> +<li><code>id</code>, <code>file_reference</code> and <code>access_hash</code> taken from the <a href="/constructor/photo">photo</a> constructor</li> +<li><code>thumb_size</code> taken from the <code>type</code> field of the desired <a href="/type/PhotoSize">PhotoSize</a> of the <a href="/constructor/photo">photo</a></li> +</ul> +</li> +<li> +<p>For profile pictures of users, channels, supergroups and groups, <a href="/constructor/inputPeerPhotoFileLocation">inputPeerPhotoFileLocation</a> has to be used:</p> +<ul> +<li><code>peer</code> is the identifier of the peer whose photo we want to download</li> +<li><code>big</code> is used to choose whether to download the full-resolution picture, or just the thumbnail</li> +<li><code>photo_id</code> is extracted from the <a href="/constructor/chatPhoto">chatPhoto</a> or <a href="/constructor/userProfilePhoto">userProfilePhoto</a> of the desired profile photo</li> +</ul> +</li> +<li> +<p>For documents, <a href="/constructor/inputDocumentFileLocation">inputDocumentFileLocation</a> is used:</p> +<ul> +<li><code>id</code>, <code>file_reference</code> and <code>access_hash</code> taken from the <a href="/constructor/document">document</a> constructor</li> +<li>If downloading the thumbnail of a document, <code>thumb_size</code> should be taken from the <code>type</code> field of the desired <a href="/type/PhotoSize">PhotoSize</a> of the <a href="/constructor/photo">photo</a>; otherwise, provide an empty string.</li> +</ul> +</li> +<li> +<p>For previews of sticker sets, <a href="/constructor/inputStickerSetThumb">inputStickerSetThumb</a> is used (note: to download stickers and previews of stickers use the document method described above for documents):</p> +<ul> +<li><code>stickerset</code> is set to the <a href="/type/InputStickerSet">InputStickerSet</a> constructor generated from <a href="/constructor/stickerSet">stickerSet</a></li> +<li><code>thumb_version</code> is copied from the same field in <a href="/constructor/stickerSet">stickerSet</a></li> +</ul> +</li> +<li> +<p>For encrypted secret chat and telegram passport documents, respectively <a href="/constructor/inputEncryptedFileLocation">inputEncryptedFileLocation</a> and <a href="/constructor/inputSecureFileLocation">inputSecureFileLocation</a> have to be used, with parameters extracted from <a href="/constructor/encryptedFile">encryptedFile</a> and <a href="/constructor/secureFile">secureFile</a> (<a href="/passport">passport docs</a>).</p> +</li> +<li> +<p>For livestream chunks, <a href="/constructor/inputGroupCallStream">inputGroupCallStream</a> is used:</p> +<ul> +<li><code>call</code> contains the related group call ID+access hash, taken from the <a href="/constructor/groupCall">groupCall</a> constructor.</li> +<li><code>time_ms</code> specifies the timestamp to fetch</li> +<li><code>scale</code> specifies the duration of the video segment to fetch in milliseconds, by bitshifting <code>1000</code> to the right <code>scale</code> times: <code>duration_ms := 1000 >> scale</code></li> +<li><code>video_channel</code> specifies the video channel to fetch</li> +<li><code>video_quality</code> specifies the selected video quality (0 = lowest, 1 = medium, 2 = best)</li> +</ul> +</li> +<li> +<p>For old <strong>deprecated</strong> photos, if the client has cached some old fileLocations with the <strong>deprecated</strong> <code>secret</code> identifier, <a href="/constructor/inputFileLocation">inputFileLocation</a> or <a href="/constructor/inputPhotoLegacyFileLocation">inputPhotoLegacyFileLocation</a> is used (this is mainly used for backwards compatiblity with bot API file IDs, all user clients must use the modern <a href="/constructor/inputPhotoFileLocation">inputPhotoFileLocation</a> file IDs): </p> +<ul> +<li>All fields are taken from the previously cached fileLocation except for <code>file_reference</code>, <code>access_hash</code> and <code>id</code>, which are taken from the <a href="/constructor/photo">photo</a> constructor (the last two fields are used only if available, in which case <a href="/constructor/inputPhotoLegacyFileLocation">inputPhotoLegacyFileLocation</a> is used instead of <a href="/constructor/inputFileLocation">inputFileLocation</a>).</li> +</ul> +</li> +</ul> +<p>The size of each file in bytes is available, which makes it possible to download the file in parts using the parameters <strong>offset</strong> and <strong>limit</strong>, similar to the way files are uploaded.</p> +<p>If <strong>precise</strong> flag is not specified, then </p> +<ul> +<li>The parameter <strong>offset</strong> must be divisible by 4 KB.</li> +<li>The parameter <strong>limit</strong> must be divisible by 4 KB.</li> +<li>1048576 (1 MB) must be divisible by <strong>limit</strong>.</li> +</ul> +<p>If <strong>precise</strong> is specified, then</p> +<ul> +<li>The parameter <strong>offset</strong> must be divisible by 1 KB.</li> +<li>The parameter <strong>limit</strong> must be divisible by 1 KB.</li> +<li><strong>limit</strong> must not exceed 1048576 (1 MB).</li> +</ul> +<p>In any case the requested part should be within one 1 MB chunk from the beginning of the file, i. e.</p> +<ul> +<li><strong>offset</strong> / (1024 * 1024) == (<strong>offset</strong> + <strong>limit</strong> - 1) / (1024 * 1024).</li> +</ul> +<p>The file download operation may return a <code>FILE_REFERENCE_EXPIRED</code> error (or another error starting with <code>FILE_REFERENCE_</code>): in this case, the <code>file_reference</code> field of the input location must be <a href="/api/file_reference">refreshed</a>. +The file download operation may return an <a href="/constructor/upload.fileCdnRedirect">upload.fileCdnRedirect</a> constructor: in this case, <a href="/cdn">these</a> instructions must be followed for downloading CDN files. +The file download operation may also return one of the following <a href="/api/errors#400-bad-request">data input errors</a>:</p> +<ul> +<li>FILE_ID_INVALID: The file address is invalid</li> +<li>OFFSET_INVALID: The <strong>offset</strong> value is invalid</li> +<li>LIMIT_INVALID: The <strong>limit</strong> value is invalid</li> +<li>FILE_MIGRATE_X: The file is in the datacenter No. X</li> +</ul> +<h4><a class="anchor" href="#verifying-downloaded-chunks" id="verifying-downloaded-chunks" name="verifying-downloaded-chunks"><i class="anchor-icon"></i></a>Verifying downloaded chunks</h4> +<pre><code><a href='/constructor/fileHash'>fileHash</a>#6242c773 offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/FileHash'>FileHash</a>; + +---functions--- + +<a href='/method/upload.getFileHashes'>upload.getFileHashes</a>#c7025931 location:<a href='/type/InputFileLocation'>InputFileLocation</a> offset:<a href='/type/int'>int</a> = <a href='/type/Vector%20t'>Vector</a><<a href='/type/FileHash'>FileHash</a>>;</code></pre> +<p>In order to confirm the integrity of the downloaded file, clients are recommended to verify hashes for each downloaded part, as for <a href="/cdn">CDN DCs</a>. +<a href="/method/upload.getFileHashes">upload.getFileHashes</a> contain <a href="/type/FileHash">FileHash</a> constructors. Each of these constructors contains the SHA-256 hash of a part of the file that starts with <code>offset</code> and takes <code>limit</code> bytes.</p> +<p>Before saving each portion of the data received from the DC into the file, the client can confirm that its hash matches the hash that was received from the master DC. If missing a hash for any file part, client developers must use the <a href="/method/upload.getFileHashes">upload.getFileHashes</a> method to obtain the missing hash.</p> +<h4><a class="anchor" href="#handling-audio-video-and-vector-previews" id="handling-audio-video-and-vector-previews" name="handling-audio-video-and-vector-previews"><i class="anchor-icon"></i></a>Handling audio, video and vector previews</h4> +<p>Schema:</p> +<pre><code><a href='/constructor/photoSizeEmpty'>photoSizeEmpty</a>#e17e23c type:<a href='/type/string'>string</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoSize'>photoSize</a>#75c78e60 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoCachedSize'>photoCachedSize</a>#21e1ad6 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoStrippedSize'>photoStrippedSize</a>#e0b0bc2e type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoSizeProgressive'>photoSizeProgressive</a>#fa3efb95 type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/PhotoSize'>PhotoSize</a>; +<a href='/constructor/photoPathSize'>photoPathSize</a>#d8214d41 type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>; + +<a href='/constructor/videoSize'>videoSize</a>#de33b094 flags:<a href='/type/%23'>#</a> type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> video_start_ts:flags.0?<a href='/type/double'>double</a> = <a href='/type/VideoSize'>VideoSize</a>; + +<a href='/constructor/document'>document</a>#1e87342b flags:<a href='/type/%23'>#</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumbs:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_thumbs:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/Document'>Document</a>; +<a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>; + +<a href='/constructor/photo'>photo</a>#fb197a65 flags:<a href='/type/%23'>#</a> has_stickers:flags.0?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> file_reference:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> sizes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PhotoSize'>PhotoSize</a>> video_sizes:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/VideoSize'>VideoSize</a>> dc_id:<a href='/type/int'>int</a> = <a href='/type/Photo'>Photo</a>;</code></pre> +<p>Telegram attaches a vector of thumbnails with reduced resolution to all uploaded media.<br> +The server also generates a trimmed and scaled down video preview for videos, GIFs and animated profile pictures. </p> +<h4><a class="anchor" href="#image-thumbnail-types" id="image-thumbnail-types" name="image-thumbnail-types"><i class="anchor-icon"></i></a>Image thumbnail types</h4> +<p>Each photo preview has a specific <code>type</code>, indicating the resolution and image transform that was applied server-side. </p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Image filter</th> +<th>Size</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>s</code></td> +<td>box</td> +<td>100x100</td> +</tr> +<tr> +<td><code>m</code></td> +<td>box</td> +<td>320x320</td> +</tr> +<tr> +<td><code>x</code></td> +<td>box</td> +<td>800x800</td> +</tr> +<tr> +<td><code>y</code></td> +<td>box</td> +<td>1280x1280</td> +</tr> +<tr> +<td><code>w</code></td> +<td>box</td> +<td>2560x2560</td> +</tr> +<tr> +<td><code>a</code></td> +<td>crop</td> +<td>160x160</td> +</tr> +<tr> +<td><code>b</code></td> +<td>crop</td> +<td>320x320</td> +</tr> +<tr> +<td><code>c</code></td> +<td>crop</td> +<td>640x640</td> +</tr> +<tr> +<td><code>d</code></td> +<td>crop</td> +<td>1280x1280</td> +</tr> +</tbody> +</table> +<p>Special types:</p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Image filter</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>i</code></td> +<td>strip</td> +</tr> +<tr> +<td><code>j</code></td> +<td>outline</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#stripped-thumbnails" id="stripped-thumbnails" name="stripped-thumbnails"><i class="anchor-icon"></i></a>Stripped thumbnails</h4> +<pre><code><a href='/constructor/photoStrippedSize'>photoStrippedSize</a>#e0b0bc2e type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;</code></pre> +<p>A <a href="/constructor/photoStrippedSize">photoStrippedSize</a> (with type <code>i</code>) is an extremely low-res thumbnail, embedded directly inside media location objects.<br> +It should be shown to the user in chat message previews, or while still downloading the most appropriately sized <a href="/constructor/photoSize">photoSize</a> through the media DCs as <a href="#downloading-files">described above</a>. </p> +<p>The stripped <code>bytes</code> payload should be inflated to a JPG payload as seen <a href="https://github.com/telegramdesktop/tdesktop/blob/1757dd856b84d23f83d4e562c94dde825f6eb40c/Telegram/SourceFiles/ui/image/image.cpp#L43">here »</a>.</p> +<h4><a class="anchor" href="#vector-thumbnails" id="vector-thumbnails" name="vector-thumbnails"><i class="anchor-icon"></i></a>Vector thumbnails</h4> +<pre><code><a href='/constructor/photoPathSize'>photoPathSize</a>#d8214d41 type:<a href='/type/string'>string</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/PhotoSize'>PhotoSize</a>;</code></pre> +<p>Messages with <a href="/animated_stickers">animated stickers</a> can have a compressed svg (< 300 bytes) to show the outline of the sticker before fetching the actual lottie animation. +Animated sticker outlines will have a <code>j</code> type <a href="/constructor/photoPathSize">photoPathSize</a> thumbnail. </p> +<p>This specific vector thumbnail consists in an <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths">SVG path</a>, specially encoded to save space.<br> +This path will be the outline of the animated sticker, and should be shown to the user while downloading the actual sticker. </p> +<p>As for stripped sizes, the payload should be inflated using the following algorithm:</p> +<pre><code>encoded := photoPathSize.bytes + +lookup := "AACAAAAHAAALMAAAQASTAVAAAZaacaaaahaaalmaaaqastava.az0123456789-," + +path := "M" + +len := strlen(encoded) +for (i = 0; i < len; i++) { + num := ord(encoded[i]) + if (num >= 128 + 64) { + path += lookup[num - 128 - 64] + } else { + if (num >= 128) { + path += ',' + } else if (num >= 64) { + path += '-' + } + path += itoa(num & 63) + } +} +path += "z"</code></pre> +<p><code>path</code> will contain the actual SVG path that can be directly inserted in the <code>d</code> attribute of an <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path">svg <path> element</a>: </p> +<pre><code><?xml version="1.0" encoding="utf-8"?> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" + viewBox="0 0 512 512" xml:space="preserve"> +<path d="{$path}"/> +</svg></code></pre> +<h4><a class="anchor" href="#video-types" id="video-types" name="video-types"><i class="anchor-icon"></i></a>Video types</h4> +<pre><code><a href='/constructor/videoSize'>videoSize</a>#de33b094 flags:<a href='/type/%23'>#</a> type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> video_start_ts:flags.0?<a href='/type/double'>double</a> = <a href='/type/VideoSize'>VideoSize</a>;</code></pre> +<p>A <a href="/constructor/videoSize">videoSize</a> constructor is typically used for <a href="#animated-profile-pictures">animated profile pictures</a> and video previews.</p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Description</th> +<th>Format</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>u</code></td> +<td>Animated profile picture</td> +<td>MPEG4</td> +</tr> +<tr> +<td><code>v</code></td> +<td>Video preview</td> +<td>MPEG4</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#downloading-webfiles" id="downloading-webfiles" name="downloading-webfiles"><i class="anchor-icon"></i></a>Downloading webfiles</h3> +<p>Remote HTTP files sent by inline bots <a href="/type/BotInlineResult">in response to inline queries</a> and in other places are represented by <a href="/type/WebDocument">WebDocument</a> constructors. +When forwarding such remote HTTP files, they should be sent using <a href="/type/InputMedia">external InputMedia constructors</a>. +Remote HTTP files can only be downloaded directly by the client if contained in a <a href="/constructor/webDocumentNoProxy">webDocumentNoProxy</a> constructor: in this case, the file is deemed safe to download (this is the case for HTTPS files from certain trusted domains).</p> +<p>However, if the remote file is contained in a <a href="/constructor/webDocument">webDocument</a>, to avoid leaking sensitive information the file must be downloaded through telegram's servers. +This can be done in a manner similar to <a href="#downloading-files">normal files</a>, with the difference that <a href="/method/upload.getWebFile">upload.getWebFile</a> must be used, instead.</p> +<pre><code><a href='/constructor/upload.webFile'>upload.webFile</a>#21e753bc size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> file_type:<a href='/type/storage.FileType'>storage.FileType</a> mtime:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/upload.WebFile'>upload.WebFile</a>; + +<a href='/constructor/storage.fileUnknown'>storage.fileUnknown</a>#aa963b05 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileJpeg'>storage.fileJpeg</a>#7efe0e = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileGif'>storage.fileGif</a>#cae1aadf = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.filePng'>storage.filePng</a>#a4f63c0 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMp3'>storage.fileMp3</a>#528a0677 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMov'>storage.fileMov</a>#4b09ebbc = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.filePartial'>storage.filePartial</a>#40bc6f52 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileMp4'>storage.fileMp4</a>#b3cea0e4 = <a href='/type/storage.FileType'>storage.FileType</a>; +<a href='/constructor/storage.fileWebp'>storage.fileWebp</a>#1081464c = <a href='/type/storage.FileType'>storage.FileType</a>; + + ---functions--- + +<a href='/method/upload.getWebFile'>upload.getWebFile</a>#24e6818d location:<a href='/type/InputWebFileLocation'>InputWebFileLocation</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/upload.WebFile'>upload.WebFile</a>;</code></pre> +<p>The <a href="/type/InputWebFileLocation">InputWebFileLocation</a> constructor is generated as follows.</p> +<pre><code><a href='/constructor/inputWebFileLocation'>inputWebFileLocation</a>#c239d686 url:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputWebFileLocation'>InputWebFileLocation</a>; +<a href='/constructor/inputWebFileGeoPointLocation'>inputWebFileGeoPointLocation</a>#9f2221c9 geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> access_hash:<a href='/type/long'>long</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> zoom:<a href='/type/int'>int</a> scale:<a href='/type/int'>int</a> = <a href='/type/InputWebFileLocation'>InputWebFileLocation</a>; + +<a href='/constructor/webDocument'>webDocument</a>#1c570ed1 url:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/WebDocument'>WebDocument</a>; + +<a href='/constructor/inputGeoPoint'>inputGeoPoint</a>#48222faf flags:<a href='/type/%23'>#</a> lat:<a href='/type/double'>double</a> long:<a href='/type/double'>double</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/InputGeoPoint'>InputGeoPoint</a>; + +<a href='/constructor/geoPoint'>geoPoint</a>#b2a2f663 flags:<a href='/type/%23'>#</a> long:<a href='/type/double'>double</a> lat:<a href='/type/double'>double</a> access_hash:<a href='/type/long'>long</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/GeoPoint'>GeoPoint</a>;</code></pre> +<ul> +<li><a href="/constructor/inputWebFileLocation">inputWebFileLocation</a> is simply generated by taking the <code>url</code> and <code>access_hash</code> fields of the <a href="/constructor/webDocument">webDocument</a> constructor.</li> +<li><a href="/constructor/inputWebFileGeoPointLocation">inputWebFileGeoPointLocation</a> is used to download a server-generated image with the map preview from a <a href="/constructor/geoPoint">geoPoint</a>.<ul> +<li><code>geo_point</code> is generated from the <code>lat</code>, <code>long</code> <code>accuracy_radius</code> parameters of the <a href="/constructor/geoPoint">geoPoint</a></li> +<li><code>access_hash</code> is the access hash of the <a href="/constructor/geoPoint">geoPoint</a></li> +<li><code>w</code> - Map width in pixels before applying scale; 16-1024</li> +<li><code>h</code> - Map height in pixels before applying scale; 16-1024</li> +<li><code>zoom</code> - Map zoom level; 13-20</li> +<li><code>scale</code> - Map scale; 1-3</li> +</ul> +</li> +</ul> +<h3><a class="anchor" href="#general-considerations" id="general-considerations" name="general-considerations"><i class="anchor-icon"></i></a>General Considerations</h3> +<p>It is recommended that large queries (<a href="/method/upload.getFile">upload.getFile</a>, <a href="/method/upload.saveFilePart">upload.saveFilePart</a>, <a href="/method/upload.getWebFile">upload.getWebFile</a>) be handled through a separate session and a separate connection, in which no methods other than these should be executed. If this is done, then data transfer will cause less interference with <a href="/api/updates">getting updates</a> and other method calls.</p> +<h3><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h3> +<h4><a class="anchor" href="#handling-file-references" id="handling-file-references" name="handling-file-references"><i class="anchor-icon"></i></a><a href="/api/file_reference">Handling file references</a></h4> +<p>How to handle file references.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/folders.html b/data/corefork.telegram.org/api/folders.html new file mode 100644 index 0000000000..238f3f4636 --- /dev/null +++ b/data/corefork.telegram.org/api/folders.html @@ -0,0 +1,179 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Folders</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists."> + <meta property="og:title" content="Folders"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists."> + <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?215" 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/folders" >Folders</a></li></ul></div> + <h1 id="dev_page_title">Folders</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.<br> +In the API, folders are called "dialog filters"; in the UI, they are typically represented as tabs. </p> +<p>Schema:</p> +<pre><code><a href='/constructor/dialogFilter'>dialogFilter</a>#7438f7e8 flags:<a href='/type/%23'>#</a> contacts:flags.0?<a href='/constructor/true'>true</a> non_contacts:flags.1?<a href='/constructor/true'>true</a> groups:flags.2?<a href='/constructor/true'>true</a> broadcasts:flags.3?<a href='/constructor/true'>true</a> bots:flags.4?<a href='/constructor/true'>true</a> exclude_muted:flags.11?<a href='/constructor/true'>true</a> exclude_read:flags.12?<a href='/constructor/true'>true</a> exclude_archived:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> title:<a href='/type/string'>string</a> emoticon:flags.25?<a href='/type/string'>string</a> pinned_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputPeer'>InputPeer</a>> include_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputPeer'>InputPeer</a>> exclude_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputPeer'>InputPeer</a>> = <a href='/type/DialogFilter'>DialogFilter</a>; + +<a href='/constructor/dialogFilterSuggested'>dialogFilterSuggested</a>#77744d4a filter:<a href='/type/DialogFilter'>DialogFilter</a> description:<a href='/type/string'>string</a> = <a href='/type/DialogFilterSuggested'>DialogFilterSuggested</a>; + +<a href='/constructor/updateDialogFilter'>updateDialogFilter</a>#26ffde7d flags:<a href='/type/%23'>#</a> id:<a href='/type/int'>int</a> filter:flags.0?<a href='/type/DialogFilter'>DialogFilter</a> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updateDialogFilterOrder'>updateDialogFilterOrder</a>#a5d72105 order:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updateDialogFilters'>updateDialogFilters</a>#3504914f = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getDialogFilters'>messages.getDialogFilters</a>#f19ed96d = <a href='/type/Vector%20t'>Vector</a><<a href='/type/DialogFilter'>DialogFilter</a>>; +<a href='/method/messages.getSuggestedDialogFilters'>messages.getSuggestedDialogFilters</a>#a29cd42c = <a href='/type/Vector%20t'>Vector</a><<a href='/type/DialogFilterSuggested'>DialogFilterSuggested</a>>; +<a href='/method/messages.updateDialogFilter'>messages.updateDialogFilter</a>#1ad4a04a flags:<a href='/type/%23'>#</a> id:<a href='/type/int'>int</a> filter:flags.0?<a href='/type/DialogFilter'>DialogFilter</a> = <a href='/type/Bool'>Bool</a>; +<a href='/method/messages.updateDialogFiltersOrder'>messages.updateDialogFiltersOrder</a>#c563c1e4 order:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Bool'>Bool</a>; + +<a href='/method/help.getAppConfig'>help.getAppConfig</a>#98914110 = <a href='/type/JSONValue'>JSONValue</a>;</code></pre> +<h3><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a>Folders</h3> +<p>On startup, clients call: </p> +<ul> +<li><a href="/method/messages.getDialogFilters">messages.getDialogFilters</a> to fetch a list of previously configured folders.</li> +<li><a href="/method/messages.getSuggestedDialogFilters">messages.getSuggestedDialogFilters</a> to fetch a list of suggested folder combinations.</li> +<li><a href="/method/help.getAppConfig">help.getAppConfig</a> to fetch app-specific configuration parameters. </li> +</ul> +<p>The boolean under the <code>dialog_filters_tooltip</code> JSON key in the result of <a href="/method/help.getAppConfig">help.getAppConfig</a> can be used to determine whether a folder tooltip should be presented to the user right away.<br> +The UI should then show a list of suggested folder combinations. </p> +<p>Once configuration is finished, apps call <a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a> to create or update existing folders.<br> +As per the <a href="/constructor/dialogFilter">dialogFilter</a> constructor, folders have multiple flags that can be combined to determine which chats should be included in (or excluded from) the folder.<br> +Folders can also have unlimited pinned chats, as determined by the <code>pinned_peers</code> field.</p> +<p>To reorder existing folders, <a href="/method/messages.updateDialogFiltersOrder">messages.updateDialogFiltersOrder</a> should be used with the IDs of the various dialog filters.</p> +<p>To delete folders, use <a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a> without populating the <code>filter</code> flag field. </p> +<p>Clients can receive <a href="/constructor/updateDialogFilter">updateDialogFilter</a>, <a href="/constructor/updateDialogFilterOrder">updateDialogFilterOrder</a> updates with new filter information, generated by other clients when modifying folder info.<br> +Clients can also receive <a href="/constructor/updateDialogFilters">updateDialogFilters</a>, in which case folder info should be refetched manually using <a href="/method/messages.getDialogFilters">messages.getDialogFilters</a>.</p> +<h3><a class="anchor" href="#peer-folders" id="peer-folders" name="peer-folders"><i class="anchor-icon"></i></a>Peer folders</h3> +<p>The API also has another method for identifying groups of peers, typically used only by archived chats.</p> +<p>Schema:</p> +<pre><code><a href='/constructor/inputDialogPeer'>inputDialogPeer</a>#fcaafeb7 peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/InputDialogPeer'>InputDialogPeer</a>; +<a href='/constructor/inputDialogPeerFolder'>inputDialogPeerFolder</a>#64600527 folder_id:<a href='/type/int'>int</a> = <a href='/type/InputDialogPeer'>InputDialogPeer</a>; + +<a href='/constructor/dialogPeer'>dialogPeer</a>#e56dbf05 peer:<a href='/type/Peer'>Peer</a> = <a href='/type/DialogPeer'>DialogPeer</a>; +<a href='/constructor/dialogPeerFolder'>dialogPeerFolder</a>#514519e2 folder_id:<a href='/type/int'>int</a> = <a href='/type/DialogPeer'>DialogPeer</a>; + +<a href='/constructor/updateFolderPeers'>updateFolderPeers</a>#19360dc0 folder_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/FolderPeer'>FolderPeer</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/updates'>updates</a>#74ae4240 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +---functions--- + +<a href='/method/folders.editPeerFolders'>folders.editPeerFolders</a>#6847d0ab folder_peers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputFolderPeer'>InputFolderPeer</a>> = <a href='/type/Updates'>Updates</a>; +<a href='/method/folders.deleteFolder'>folders.deleteFolder</a>#1c295881 folder_id:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>API peer folders are typically used only by <a href="https://telegram.org/blog/archive-and-new-design">archived chats</a>, and are really handy for distinguishing groups of peers, since most peer-related constructors (updates, chat info) will contain the <code>folder_id</code> assigned the the specified chat. </p> +<p>In Telegram apps, API peer folders are used only to implement the chat archive, identified by <code>folder_id</code> <code>1</code>; all other peers are in <code>folder_id</code> <code>0</code> by default; no other <code>folder_id</code> is allowed at the moment.</p> +<ul> +<li><a href="/method/folders.editPeerFolders">folders.editPeerFolders</a> can be used to add and remove peers from peer folders.</li> +<li><a href="/method/folders.deleteFolder">folders.deleteFolder</a> can be used to delete peer folders, moving all peers previously present in that folder to the default <code>0</code> folder.</li> +</ul> +<p>Both methods return an <a href="/constructor/updates">updates</a> constructor, containing a single <a href="/constructor/updateFolderPeers">updateFolderPeers</a> with the new <code>folder_id</code> of moved peers.<br> +Clients can also receive <a href="/constructor/updateFolderPeers">updateFolderPeers</a> as a normal <a href="/api/updates">update</a>, generated by other clients when modifying peer folders.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/import.html b/data/corefork.telegram.org/api/import.html new file mode 100644 index 0000000000..8ebb0f6140 --- /dev/null +++ b/data/corefork.telegram.org/api/import.html @@ -0,0 +1,173 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Imported messages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows importing messages and media from foreign chat apps."> + <meta property="og:title" content="Imported messages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows importing messages and media from foreign chat apps."> + <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?215" 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/import" >Imported messages</a></li></ul></div> + <h1 id="dev_page_title">Imported messages</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows importing messages and media from foreign chat apps.</p> +<blockquote> +<p>Note: This article is intended for MTProto API developers. If you're looking for a way to move history from other chat apps into Telegram, check out the related <a href="https://telegram.org/blog/move-history">Telegram blog post</a>.</p> +</blockquote> +<h3><a class="anchor" href="#1-validate-the-chat-export-file" id="1-validate-the-chat-export-file" name="1-validate-the-chat-export-file"><i class="anchor-icon"></i></a>1. Validate the chat export file</h3> +<pre><code><a href='/constructor/messages.historyImportParsed'>messages.historyImportParsed</a>#5e0fb7b9 flags:<a href='/type/%23'>#</a> pm:flags.0?<a href='/constructor/true'>true</a> group:flags.1?<a href='/constructor/true'>true</a> title:flags.2?<a href='/type/string'>string</a> = <a href='/type/messages.HistoryImportParsed'>messages.HistoryImportParsed</a>; + +---functions--- + +<a href='/method/messages.checkHistoryImport'>messages.checkHistoryImport</a>#43fe19f3 import_head:<a href='/type/string'>string</a> = <a href='/type/messages.HistoryImportParsed'>messages.HistoryImportParsed</a>;</code></pre> +<p>The import process begins by calling <a href="/method/messages.checkHistoryImport">messages.checkHistoryImport</a>, passing to <code>import_head</code> up to 100 lines of the chat export file, starting from the beginning of the file.</p> +<p>The returned constructor contains information about the exported chat, including its title or type. +If the <code>pm</code> flag is set, the chat export file was generated from a private chat. +If the <code>group</code> flag is set, the chat export file was generated from a group chat. +If neither the <code>pm</code> or <code>group</code> flags are set, the specified chat export was generated from a chat of unknown type.</p> +<h3><a class="anchor" href="#2-choosing-a-destination-telegram-chat" id="2-choosing-a-destination-telegram-chat" name="2-choosing-a-destination-telegram-chat"><i class="anchor-icon"></i></a>2. Choosing a destination Telegram chat</h3> +<pre><code><a href='/constructor/messages.checkedHistoryImportPeer'>messages.checkedHistoryImportPeer</a>#a24de717 confirm_text:<a href='/type/string'>string</a> = <a href='/type/messages.CheckedHistoryImportPeer'>messages.CheckedHistoryImportPeer</a>; + +---functions--- + +<a href='/method/messages.checkHistoryImportPeer'>messages.checkHistoryImportPeer</a>#5dc60f03 peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/messages.CheckedHistoryImportPeer'>messages.CheckedHistoryImportPeer</a>;</code></pre> +<p>Using <a href="/method/messages.checkHistoryImportPeer">messages.checkHistoryImportPeer</a>, check whether chat history exported from another chat app can be imported into a specific Telegram <code>peer</code>, chosen by the user.<br> +Typically, history imports are allowed for private chats with a mutual contact or <a href="/api/channel">supergroups</a> with <a href="/api/rights"><code>change_info</code> administrator rights »</a>.</p> +<p>If the check succeeds, and no RPC errors are returned, a <a href="/type/messages.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</a> constructor will be returned, with a confirmation text to be shown to the user in a confirmation prompt.<br> +Upon final user confirmation, <a href="#3-initialize-the-import">the import process is initialized</a>. </p> +<h3><a class="anchor" href="#3-initialize-the-import" id="3-initialize-the-import" name="3-initialize-the-import"><i class="anchor-icon"></i></a>3. Initialize the import</h3> +<pre><code><a href='/constructor/messages.historyImport'>messages.historyImport</a>#1662af0b id:<a href='/type/long'>long</a> = <a href='/type/messages.HistoryImport'>messages.HistoryImport</a>; + +---functions--- + +<a href='/method/messages.initHistoryImport'>messages.initHistoryImport</a>#34090c3b peer:<a href='/type/InputPeer'>InputPeer</a> file:<a href='/type/InputFile'>InputFile</a> media_count:<a href='/type/int'>int</a> = <a href='/type/messages.HistoryImport'>messages.HistoryImport</a>;</code></pre> +<p>Use <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a> to initialize the import process, passing the following parameters: </p> +<ul> +<li><code>peer</code> - The Telegram chat where the history should be imported.</li> +<li><code>file</code> - The chat export file.</li> +<li><code>media_count</code> - The number of media files associated with the export, to be uploaded in <a href="#4-uploading-media">the next step</a>. </li> +</ul> +<h3><a class="anchor" href="#4-uploading-media" id="4-uploading-media" name="4-uploading-media"><i class="anchor-icon"></i></a>4. Uploading media</h3> +<pre><code>---functions--- + +<a href='/method/messages.uploadImportedMedia'>messages.uploadImportedMedia</a>#2a862092 peer:<a href='/type/InputPeer'>InputPeer</a> import_id:<a href='/type/long'>long</a> file_name:<a href='/type/string'>string</a> media:<a href='/type/InputMedia'>InputMedia</a> = <a href='/type/MessageMedia'>MessageMedia</a>;</code></pre> +<p>Use <a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a> to upload media files eventually associated with the chat export.<br> +<code>import_id</code> is the <code>id</code> contained in the <a href="/constructor/messages.historyImport">messages.historyImport</a> constructor, returned by <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a> <a href="#3-initialize-the-import">in the previous step</a>. </p> +<h3><a class="anchor" href="#5-finalize-the-import" id="5-finalize-the-import" name="5-finalize-the-import"><i class="anchor-icon"></i></a>5. Finalize the import</h3> +<pre><code><a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/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>; + +---functions--- + +<a href='/method/messages.startHistoryImport'>messages.startHistoryImport</a>#b43df344 peer:<a href='/type/InputPeer'>InputPeer</a> import_id:<a href='/type/long'>long</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Finally, invoke <a href="/method/messages.startHistoryImport">messages.startHistoryImport</a> to complete the <a href="/api/import">history import process</a>, importing all messages into the chat.<br> +As usual, <code>import_id</code> is the <code>id</code> contained in the <a href="/constructor/messages.historyImport">messages.historyImport</a> constructor, returned by <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a>. </p> +<p>Imported messages will show in the chat history as <a href="/constructor/message">messages</a> containing a <code>fwd_from</code> <a href="/constructor/messageFwdHeader">messageFwdHeader</a> constructor with the <code>imported</code> flag, and should be appropriately marked in the UI as messages imported from a foreign chat app.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/invoking.html b/data/corefork.telegram.org/api/invoking.html new file mode 100644 index 0000000000..1095dbc4d0 --- /dev/null +++ b/data/corefork.telegram.org/api/invoking.html @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Calling API Methods</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Additional options for calling methods."> + <meta property="og:title" content="Calling API Methods"> + <meta property="og:image" content="5901cb4c908e540453"> + <meta property="og:description" content="Additional options for calling methods."> + <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?215" 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/invoking" >Calling API Methods</a></li></ul></div> + <h1 id="dev_page_title">Calling API Methods</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<h3><a class="anchor" href="#layers" id="layers" name="layers"><i class="anchor-icon"></i></a>Layers</h3> +<p>Versioning in the API is supported by so-called TL layers.</p> +<p>The need to add a new object constructor or to add/remove a field in a constructor creates a backwards compatibility problem for previous versions of API clients. After all, simply changing a constructor in a schema also changes its number. To address this problem, each schema update is separated into a layer.</p> +<p>A layer is a collection of updated methods or constructors in a TL schema. Each layer is numbered with sequentially increasing numbers starting with 2. The first layer is the base layer -- the TL schema without any changes.</p> +<p>There is a helper method to let the API know that a client supports the Layer <code>layer</code>:</p> +<pre><code>invokeWithLayer#da9b0d0d {X:Type} layer:int query:!X = X;</code></pre> +<p>The helper method <strong><a href="/method/invokeWithLayer">invokeWithLayer</a></strong> can be used only together with <a href="/method/initConnection">initConnection</a>: the present layer will be saved with all other parameters of the client and any future requests will be using this saved value. <a href="#saving-client-info">See more below</a>.</p> +<h4><a class="anchor" href="#list-of-available-layers" id="list-of-available-layers" name="list-of-available-layers"><i class="anchor-icon"></i></a><a href="/api/layers">List of Available Layers</a></h4> +<h3><a class="anchor" href="#saving-client-info" id="saving-client-info" name="saving-client-info"><i class="anchor-icon"></i></a>Saving Client Info</h3> +<p>It is possible to save information about the current client on the server in conjunction with an authorization key. This may help eliminate client-side problems with certain releases on certain devices or with certain localizations, as well as eliminate the need for sending layer information in each request.</p> +<p>The helper method <strong><a href="/method/initConnection">initConnection</a></strong> accepts client parameters. This method must be called when first calling the API after the application has restarted or in case the value of one of the parameters could have changed.</p> +<p><strong>initConnection</strong> must also be called after each <a href="/method/auth.bindTempAuthKey">auth.bindTempAuthKey</a>.</p> +<p>When calling this method, the current layer used by the client is also saved (the layer in which <a href="/method/initConnection">initConnection</a> was wrapped is used). After a successful call to <a href="/method/initConnection">initConnection</a> it is no longer necessary to wrap each API call in <strong>invokeWithLayerN</strong>.</p> +<h3><a class="anchor" href="#disabling-updates" id="disabling-updates" name="disabling-updates"><i class="anchor-icon"></i></a>Disabling updates</h3> +<pre><code>invokeWithoutUpdates#bf9459b7 {X:Type} query:!X = X;</code></pre> +<p><a href="/method/invokeWithoutUpdates">invokeWithoutUpdates</a> can be used to invoke a request without subscribing the used connection for <a href="/api/updates">updates</a> (this is enabled by default for <a href="/api/files">file queries</a>).</p> +<h3><a class="anchor" href="#sequential-requests" id="sequential-requests" name="sequential-requests"><i class="anchor-icon"></i></a>Sequential Requests</h3> +<p>By default, the server processes parallel requests in arbitrary order. Two helper methods exist for cases when the client needs certain requests to be processed in a certain order and intends to send a new request before the previous one is completed:</p> +<div class="richcode"> +<p><a href="/method/invokeAfterMsg">invokeAfterMsg</a>#cb9f372d {X:Type} msg_id:long query:!X = X;<br> +<a href="/method/invokeAfterMsgs">invokeAfterMsgs</a>#3dc4b4f0 {X:Type} msg_ids:Vector<long> query:!X = X; </long></p> +</div> +<p>They may be used, for example, when a client attempts to send messages that accumulated while waiting for the Internet connection to be restored for a long time. In this case, the 32-bit number <code>0xcb9f372d</code> must be added before the method number in each request, followed by a 64-bit message identifier, msg_id, which contains the previous request in the queue. </p> +<p>The second method is similar, except it takes several messages that must be successfully processed before the current one.</p> +<p>If the waiting period exceeds 0.5 seconds (this value may change in the future) and no result has appeared, the method will return the <a href="/api/errors#400-bad-request">400 MSG_WAIT_TIMEOUT</a> error.</p> +<h4><a class="anchor" href="#helper-method-sequence" id="helper-method-sequence" name="helper-method-sequence"><i class="anchor-icon"></i></a>Helper Method Sequence</h4> +<p><strong>Important:</strong> if the helper methods <strong>invokeAfterMsg</strong> / <strong>invokeAfterMsgs</strong> are used together with <strong>invokeWithLayerN</strong> or other helper methods, <strong>invokeAfterMsg</strong> / <strong>invokeAfterMsgs</strong> must always be the outermost wrapper.</p> +<h3><a class="anchor" href="#data-compression" id="data-compression" name="data-compression"><i class="anchor-icon"></i></a>Data Compression</h3> +<p>We recommend using gzip compression when calling methods to reduce the amount of network traffic.</p> +<p>The schema and constructor information are given in the <a href="/mtproto/service_messages#packed-object">protocol documentation</a>.</p> +<h4><a class="anchor" href="#data-compression-when-making-a-request" id="data-compression-when-making-a-request" name="data-compression-when-making-a-request"><i class="anchor-icon"></i></a>Data Compression when Making a Request</h4> +<p>Before transmitting a query, the string containing the entire body of the serialized high-level query (starting with the method number) must be compressed using gzip. If the resulting string is smaller than the original, it makes sense to transmit the <a href="/mtproto/service_messages#pakovannyy-obekt">gzip_packed</a> constructor.</p> +<p>There is no point in doing the above when transmitting binary multimedia data (photos, videos) or small messages (up to 255 bytes).</p> +<h4><a class="anchor" href="#uncompressing-data" id="uncompressing-data" name="uncompressing-data"><i class="anchor-icon"></i></a>Uncompressing Data</h4> +<p>By default, the server compresses the response to any request as well as <a href="/api/updates">updates</a>, in accordance with the rules stated above. If the <a href="/mtproto/service_messages#packed-object">gzip_packed</a> constructor is received as a response in rpc_result, then the string that follows must be extracted and uncompressed. Processing then continues on the resulting new string.</p></div> + +</div> + + </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/live-location.html b/data/corefork.telegram.org/api/live-location.html new file mode 100644 index 0000000000..f72bb2e16a --- /dev/null +++ b/data/corefork.telegram.org/api/live-location.html @@ -0,0 +1,178 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Live geolocation</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert."> + <meta property="og:title" content="Live geolocation"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert."> + <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?215" 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/live-location" >Live geolocation</a></li></ul></div> + <h1 id="dev_page_title">Live geolocation</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert. </p> +<h3><a class="anchor" href="#sending-live-locations" id="sending-live-locations" name="sending-live-locations"><i class="anchor-icon"></i></a>Sending live locations</h3> +<pre><code><a href='/constructor/inputGeoPointEmpty'>inputGeoPointEmpty</a>#e4c123d6 = <a href='/type/InputGeoPoint'>InputGeoPoint</a>; + +<a href='/constructor/inputGeoPoint'>inputGeoPoint</a>#48222faf flags:<a href='/type/%23'>#</a> lat:<a href='/type/double'>double</a> long:<a href='/type/double'>double</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/InputGeoPoint'>InputGeoPoint</a>; + +<a href='/constructor/inputMediaGeoLive'>inputMediaGeoLive</a>#971fa843 flags:<a href='/type/%23'>#</a> stopped:flags.0?<a href='/constructor/true'>true</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> heading:flags.2?<a href='/type/int'>int</a> period:flags.1?<a href='/type/int'>int</a> proximity_notification_radius:flags.3?<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/messages.editMessage'>messages.editMessage</a>#48f71778 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> message:flags.11?<a href='/type/string'>string</a> media:flags.14?<a href='/type/InputMedia'>InputMedia</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.15?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>To send a live geolocation, use <a href="/method/messages.sendMedia">messages.sendMedia</a> with an <a href="/constructor/inputMediaGeoLive">inputMediaGeoLive</a> <code>media</code> . </p> +<p>The <a href="/constructor/inputMediaGeoLive">inputMediaGeoLive</a> allows sending the geolocation as an <a href="/constructor/inputGeoPoint">inputGeoPoint</a> with floating point latitude and longitude, with an optional <code>accuracy_radius</code> in meters.<br> +Clients can also provide a <code>heading</code>, a direction in degrees (1-360) that can be used to indicate the direction of the user, a validity <code>period</code> for the current location, and a <code>proximity_notification_radius</code> . </p> +<p>The sent geolocation should be updated perioducally using <a href="/method/messages.editMessage">messages.editMessage</a> <strong>at most</strong> every <code>period</code> seconds, in order to implement the "live" part of live geolocations. </p> +<p>To stop sharing the location, pass <a href="/constructor/inputGeoPointEmpty">inputGeoPointEmpty</a> as location and set the <code>stopped</code> flag to true in a last <a href="/method/messages.editMessage">messages.editMessage</a> call. </p> +<h3><a class="anchor" href="#receiving-live-locations" id="receiving-live-locations" name="receiving-live-locations"><i class="anchor-icon"></i></a>Receiving live locations</h3> +<pre><code><a href='/constructor/geoPoint'>geoPoint</a>#b2a2f663 flags:<a href='/type/%23'>#</a> long:<a href='/type/double'>double</a> lat:<a href='/type/double'>double</a> access_hash:<a href='/type/long'>long</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/GeoPoint'>GeoPoint</a>; +<a href='/constructor/messageMediaGeoLive'>messageMediaGeoLive</a>#b940c666 flags:<a href='/type/%23'>#</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> heading:flags.0?<a href='/type/int'>int</a> period:<a href='/type/int'>int</a> proximity_notification_radius:flags.1?<a href='/type/int'>int</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/updateGeoLiveViewed'>updateGeoLiveViewed</a>#871fb939 peer:<a href='/type/Peer'>Peer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;</code></pre> +<p>Clients will receive a message with a <a href="/constructor/messageMediaGeoLive">messageMediaGeoLive</a>, containing the information passed by the sender; when the geolocation message is marked as read, an <a href="/constructor/updateGeoLiveViewed">updateGeoLiveViewed</a> is generated. </p> +<p>Periodically, the geolocation will be updated with <a href="/constructor/updateEditMessage">updateEditMessage</a>/<a href="/constructor/updateEditChannelMessage">updateEditChannelMessage</a> updates. </p> +<h4><a class="anchor" href="#live-location-previews" id="live-location-previews" name="live-location-previews"><i class="anchor-icon"></i></a>Live location previews</h4> +<pre><code><a href='/constructor/inputWebFileGeoPointLocation'>inputWebFileGeoPointLocation</a>#9f2221c9 geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> access_hash:<a href='/type/long'>long</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> zoom:<a href='/type/int'>int</a> scale:<a href='/type/int'>int</a> = <a href='/type/InputWebFileLocation'>InputWebFileLocation</a>; + +<a href='/constructor/inputGeoPoint'>inputGeoPoint</a>#48222faf flags:<a href='/type/%23'>#</a> lat:<a href='/type/double'>double</a> long:<a href='/type/double'>double</a> accuracy_radius:flags.0?<a href='/type/int'>int</a> = <a href='/type/InputGeoPoint'>InputGeoPoint</a>; + +---functions--- + +<a href='/method/upload.getWebFile'>upload.getWebFile</a>#24e6818d location:<a href='/type/InputWebFileLocation'>InputWebFileLocation</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/upload.WebFile'>upload.WebFile</a>;</code></pre> +<p>A map preview can be generated by passing the received <a href="/constructor/geoPoint">geoPoint</a> to <a href="/api/files#downloading-webfiles">upload.getWebFile</a>, to download an image preview of the map. </p> +<ul> +<li><code>geo_point</code> is generated from the <code>lat</code> , <code>long</code> <code>accuracy_radius</code> parameters of the <a href="/constructor/geoPoint">geoPoint</a></li> +<li><code>access_hash</code> is the access hash of the <a href="/constructor/geoPoint">geoPoint</a></li> +<li><code>w</code> - Map width in pixels before applying scale; 16-1024</li> +<li><code>h</code> - Map height in pixels before applying scale; 16-1024</li> +<li><code>zoom</code> - Map zoom level; 13-20</li> +<li><code>scale</code> - Map scale; 1-3</li> +</ul> +<p>The image is then downloaded as specified <a href="/api/files">here » </a></p> +<h3><a class="anchor" href="#proximity-alert" id="proximity-alert" name="proximity-alert"><i class="anchor-icon"></i></a>Proximity alert</h3> +<pre><code><a href='/constructor/messageActionGeoProximityReached'>messageActionGeoProximityReached</a>#98e0d697 from_id:<a href='/type/Peer'>Peer</a> to_id:<a href='/type/Peer'>Peer</a> distance:<a href='/type/int'>int</a> = <a href='/type/MessageAction'>MessageAction</a>; + +<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>;</code></pre> +<p>If:</p> +<ul> +<li>A user sets a <code>proximity_notification_radius</code> when sending a location</li> +<li>Multiple users share their location within the same chat</li> +<li>One of the other users comes within <code>proximity_notification_radius</code> meters of the first user, and updates their location accordingly</li> +</ul> +<p>An <a href="/constructor/updateNewMessage">updateNewMessage</a>/<a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> is generated for all chat members, containing a <a href="/constructor/messageService">messageService</a> with action <a href="/constructor/messageActionGeoProximityReached">messageActionGeoProximityReached</a>:</p> +<ul> +<li><code>messageActionGeoProximityReached.to_id</code> is the peer that enabled proximity alerts</li> +<li><code>messageActionGeoProximityReached.from_id</code> is the peer that is now in proximity of <code>messageActionGeoProximityReached.to_id</code></li> +<li><code>messageActionGeoProximityReached.distance</code> is the distance between them, in meters</li> +</ul></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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/mentions.html b/data/corefork.telegram.org/api/mentions.html new file mode 100644 index 0000000000..b89ac3f48f --- /dev/null +++ b/data/corefork.telegram.org/api/mentions.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Mentions</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible."> + <meta property="og:title" content="Mentions"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible."> + <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?215" 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/mentions" >Mentions</a></li></ul></div> + <h1 id="dev_page_title">Mentions</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p> +<pre><code><a href='/constructor/messageEntityMention'>messageEntityMention</a>#fa04579d offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> = <a href='/type/MessageEntity'>MessageEntity</a>; +<a href='/constructor/messageEntityMentionName'>messageEntityMentionName</a>#dc7b1140 offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> = <a href='/type/MessageEntity'>MessageEntity</a>; +<a href='/constructor/inputMessageEntityMentionName'>inputMessageEntityMentionName</a>#208e68c9 offset:<a href='/type/int'>int</a> length:<a href='/type/int'>int</a> user_id:<a href='/type/InputUser'>InputUser</a> = <a href='/type/MessageEntity'>MessageEntity</a>; + +<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/channelParticipantsMentions'>channelParticipantsMentions</a>#e04b5ceb flags:<a href='/type/%23'>#</a> q:flags.0?<a href='/type/string'>string</a> top_msg_id:flags.1?<a href='/type/int'>int</a> = <a href='/type/ChannelParticipantsFilter'>ChannelParticipantsFilter</a>; + +---functions--- + +<a href='/method/messages.sendMessage'>messages.sendMessage</a>#520c3870 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/channels.getParticipants'>channels.getParticipants</a>#77ced9d0 channel:<a href='/type/InputChannel'>InputChannel</a> filter:<a href='/type/ChannelParticipantsFilter'>ChannelParticipantsFilter</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/channels.ChannelParticipants'>channels.ChannelParticipants</a>;</code></pre> +<p>Mentions are implemented as <a href="/api/entities">message entities</a>, passed to the <a href="/method/messages.sendMessage">messages.sendMessage</a> method:</p> +<ul> +<li><a href="/constructor/inputMessageEntityMentionName">inputMessageEntityMentionName</a> - Used when sending messages, allows mentioning a user <a href="https://t.me/botfather">inline, even for users that don't have a @username</a></li> +<li><a href="/constructor/messageEntityMentionName">messageEntityMentionName</a> - Incoming message counterpart of <a href="/constructor/inputMessageEntityMentionName">inputMessageEntityMentionName</a></li> +<li><a href="/constructor/messageEntityMention">messageEntityMention</a> - <a href="https://t.me/botfather">@botfather</a> (this entity is generated automatically server-side for @usernames in messages, no need to provide it manually)</li> +</ul> +<p>Incoming <a href="/constructor/message">messages</a> mentioning to the current user will have the <code>mentioned</code> flag set, and will contain one or more <a href="/constructor/messageEntityMention">messageEntityMention</a> and <a href="/constructor/messageEntityMentionName">messageEntityMentionName</a> constructors. </p> +<p>Graphical clients can show a list of mentionable users when the user starts entering an <code>@</code> in the text bar; for this purpose, the <a href="/constructor/channelParticipantsMentions">channelParticipantsMentions</a> filter can be used in <a href="/method/channels.getParticipants">channels.getParticipants</a>.<br> +This filter can be enhanced by providing an additional query string <code>q</code> (anything the user enters after <code>@</code>); it will also return non-participant users, in case of channel users commenting in <a href="/api/discussion">post comment sections</a>. </p> +<h3><a class="anchor" href="#dialog-mentions" id="dialog-mentions" name="dialog-mentions"><i class="anchor-icon"></i></a>Dialog mentions</h3> +<pre><code><a href='/constructor/dialog'>dialog</a>#2c171f72 flags:<a href='/type/%23'>#</a> pinned:flags.2?<a href='/constructor/true'>true</a> unread_mark:flags.3?<a href='/constructor/true'>true</a> peer:<a href='/type/Peer'>Peer</a> top_message:<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> unread_mentions_count:<a href='/type/int'>int</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> pts:flags.0?<a href='/type/int'>int</a> draft:flags.1?<a href='/type/DraftMessage'>DraftMessage</a> folder_id:flags.4?<a href='/type/int'>int</a> = <a href='/type/Dialog'>Dialog</a>; + +---functions--- + +<a href='/method/messages.getUnreadMentions'>messages.getUnreadMentions</a>#46578472 peer:<a href='/type/InputPeer'>InputPeer</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> = <a href='/type/messages.Messages'>messages.Messages</a>; +<a href='/method/messages.readMentions'>messages.readMentions</a>#f0189d3 peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/messages.AffectedHistory'>messages.AffectedHistory</a>;</code></pre> +<p>Graphical clients are supposed to show a blue mention indicator next to the message counter of chats in the dialog list.<br> +The <a href="/constructor/dialog">dialog</a> constructor contains an <code>unread_mentions_count</code> field to isolate chats with unread mentions; the actual mention counter should be shown inside of the chat itself, above an <code>@</code> button that can be used, by clicking multiple times, to navigate back (using <a href="/method/messages.getUnreadMentions">messages.getUnreadMentions</a>) through the mention history. </p> +<p>When the last unread mention is read, or when long-clicking on the <code>@</code> button, all mentions for a chat should marked as read using <a href="/method/messages.readMentions">messages.readMentions</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="//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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/min.html b/data/corefork.telegram.org/api/min.html new file mode 100644 index 0000000000..b19b2c4ab0 --- /dev/null +++ b/data/corefork.telegram.org/api/min.html @@ -0,0 +1,142 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Min constructors</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set. "> + <meta property="og:title" content="Min constructors"> + <meta property="og:image" content="8440249ddd84efacd0"> + <meta property="og:description" content="In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set. "> + <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?215" 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/min" >Min constructors</a></li></ul></div> + <h1 id="dev_page_title">Min constructors</h1> + + <div id="dev_page_content"><p>In some situations <a href="/constructor/user">user</a> and <a href="/constructor/channel">channel</a> constructors have reduced set of fields present (although <code>id</code> is always there) and <code>min</code> flag set. This is done for performance and privacy reasons. </p> +<p>When receiving said constructors, the client must first check if user or chat object without <code>min</code> flag is already present in local cache. If it is present, then the client should just ignore constructors with <code>min</code> flag and use local one instead.</p> +<p><strong>The rest of article assumes the client receives min-constructor without full object in local cache.</strong></p> +<p>The client must store the context (similar to <a href="/api/file_reference">file references</a>) in which the user/channel was seen. Later, when the client needs to pass the user/channel as input argument (e.g. fetch profile, mute, ban etc), the context is used to generate the <code>input*FromMessage</code> constructor, instead of normal <code>inputUser</code>, <code>inputChannel</code> or <code>inputPeer</code>.</p> +<ul> +<li><a href="/constructor/inputPeerUserFromMessage">inputPeerUserFromMessage</a></li> +<li><a href="/constructor/inputPeerChannelFromMessage">inputPeerChannelFromMessage</a></li> +<li><a href="/constructor/inputUserFromMessage">inputUserFromMessage</a></li> +<li><a href="/constructor/inputChannelFromMessage">inputChannelFromMessage</a></li> +</ul> +<p>The <code>access_hash</code> value, if present, is only suitable to use in <a href="/constructor/inputPeerPhotoFileLocation"><code>inputPeerPhotoFileLocation</code></a>, to directly <a href="/api/files">download the profile pictures</a> of channels and users <strong>without</strong> having to generate an <code>inputPeer*FromMessage</code>, simply using <code>inputPeer*</code> with the specified access hash. </p> +<p>Usually <code>min</code> constructors are encountered in messages inside of groups or channels. +When a message mentioning (sender, forwarder or forwardee, et cetera) such a user or channel is found, the constuctor must be associated with the message ID of the message and with the chat where the message was seen.</p> +<h4><a class="anchor" href="#example" id="example" name="example"><i class="anchor-icon"></i></a>Example</h4> +<p>Assume a <a href="/constructor/message">message</a> with id <code>34</code> is received from supergroup (<a href="/api/channel">actually channel</a>) <code>123456789</code>. +Said message was sent by <code>from_id</code> <code>102424212</code>. +The <a href="/api/updates">updates</a> container that contained the message has a user with ID <code>102424212</code> in the <code>users</code> field, but it has the <code>min</code> flag set, and the provided <code>access_hash</code> may be absent, or otherwise can't be used to generate a typical <a href="/constructor/inputPeerUser">inputPeerUser</a> constructor to send messages or do other actions.</p> +<p>What the client does is associate <code>102424212</code> with the channel <code>123456789</code> and message ID <code>34</code>. +When and if the client will need to interact with user <code>102424212</code>, it will generate one of the <code>*FromMessage</code> constructors mentioned above, setting:</p> +<ul> +<li><code>msg_id</code> to <code>34</code></li> +<li><code>peer</code> to the <a href="/type/InputPeer">InputPeer</a> associated with channel <code>123456789</code></li> +<li><code>user_id</code> to <code>102424212</code></li> +</ul> +<p><code>user_id</code> can also be set to the IDs of users met in the <code>fwd_header</code> (messages forwarded from a user can be used to interact with the original sender, if they don't have privacy settings for forwards enabled). +Users mentioned via <a href="/constructor/messageEntityMentionName">messageEntityMentionName</a> in a message can also be used.</p> +<p>The same can be done with <code>min</code> <a href="/api/channel">channels</a>.</p> +<p>Example implementations: <a href="https://github.com/peter-iakovlev/Telegram-iOS">Telegram for iOS</a>, <a href="https://github.com/tdlib/td">tdlib</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/obtaining_api_id.html b/data/corefork.telegram.org/api/obtaining_api_id.html new file mode 100644 index 0000000000..ed6d7eb7ab --- /dev/null +++ b/data/corefork.telegram.org/api/obtaining_api_id.html @@ -0,0 +1,140 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Creating your Telegram Application</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to get your application identifier and create a new Telegram app."> + <meta property="og:title" content="Creating your Telegram Application"> + <meta property="og:image" content="06c229ff662379138f"> + <meta property="og:description" content="How to get your application identifier and create a new Telegram app."> + <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?215" 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/obtaining_api_id" >Creating your Telegram Application</a></li></ul></div> + <h1 id="dev_page_title">Creating your Telegram Application</h1> + + <div id="dev_page_content"><p>We welcome all developers to use our <a href="https://core.telegram.org/api#telegram-api">API</a> and source code to create Telegram-like messaging applications on our platform free of charge.</p> +<blockquote> +<p>In order to ensure consistency and security across the Telegram ecosystem, +<strong>all third-party client apps</strong> must comply with the <a href="/api/terms"><strong>API Terms of Service</strong></a>.</p> +</blockquote> +<h3><a class="anchor" href="#obtaining-api-id" id="obtaining-api-id" name="obtaining-api-id"><i class="anchor-icon"></i></a>Obtaining api_id</h3> +<p>In order to obtain an <strong>API id</strong> and develop your own application using the Telegram API you need to do the following:</p> +<ul> +<li>Sign up for Telegram using any application.</li> +<li>Log in to your Telegram core: <a href="https://my.telegram.org">https://my.telegram.org</a>.</li> +<li>Go to <a href="https://my.telegram.org/apps">'API development tools'</a> and fill out the form.</li> +<li>You will get basic addresses as well as the <strong>api_id</strong> and <strong>api_hash</strong> parameters required for user authorization.</li> +<li>For the moment each number can only have one api_id connected to it.</li> +</ul> +<p>We will be sending important developer notifications to the phone number that you use in this process, so please use an up-to-date number connected to your active Telegram account.</p> +<h3><a class="anchor" href="#using-the-api-id" id="using-the-api-id" name="using-the-api-id"><i class="anchor-icon"></i></a>Using the api_id</h3> +<p>Before using the MTProto Telegram API, please note that all API client libraries are strictly monitored to prevent abuse.</p> +<p>If you use the Telegram API for flooding, spamming, faking subscriber and view counters of channels, you <strong>will be banned forever</strong>. </p> +<p>Due to excessive abuse of the Telegram API, <strong>all accounts</strong> that sign up or log in using unofficial Telegram API clients are automatically put <strong>under observation</strong> to avoid violations of the <a href="/api/terms">Terms of Service</a>. </p> +<p>If you didn't violate the Terms of Service but your account does get banned after using the API, write to <a href="mailto:recover@telegram.org">recover@telegram.org</a> explaining what you intend to do with the API, asking to unban your account.<br> +Please note that emails are checked by a human, so automatically generated emails will be detected and banned.</p> +<h3><a class="anchor" href="#using-telegrams-open-source-code" id="using-telegrams-open-source-code" name="using-telegrams-open-source-code"><i class="anchor-icon"></i></a>Using Telegram's open source code</h3> +<p>Everyone is welcome to use our open source code. We have included a sample API id with the code. This API id is limited on the server side and is not suitable for apps released to end-users — using it for anything but testing purposes will result in the API_ID_PUBLISHED_FLOOD error for your users. It is necessary that you obtain your <strong>own API id</strong> before you publish your app.</p> +<blockquote> +<p>Please remember to publish your code as well in order to comply with the GNU GPL licences.</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/offsets.html b/data/corefork.telegram.org/api/offsets.html new file mode 100644 index 0000000000..f61d92bc36 --- /dev/null +++ b/data/corefork.telegram.org/api/offsets.html @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Pagination in the API</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to fetch results from large lists of objects."> + <meta property="og:title" content="Pagination in the API"> + <meta property="og:image" content="4dd378cd0f58b0b820"> + <meta property="og:description" content="How to fetch results from large lists of objects."> + <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?215" 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/offsets" >Pagination in the API</a></li></ul></div> + <h1 id="dev_page_title">Pagination in the API</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Lots of Telegram API methods provide access to potentially large lists of objects, which requires pagination.</p> +<p>In order to fetch only relevant subset of results for each request there is a number of available input parameters. Here is a list in order how they are applied in API.</p> +<p>Typically, results are returned in antichronological order with descending object ID values.</p> +<h3><a class="anchor" href="#limit-parameter" id="limit-parameter" name="limit-parameter"><i class="anchor-icon"></i></a><code>limit</code> parameter</h3> +<p>A limit on the number of objects to be returned, typically between 1 and 100. When 0 is provided the limit will often default to an intermediate value like ~20.</p> +<h3><a class="anchor" href="#offset-based-pagination" id="offset-based-pagination" name="offset-based-pagination"><i class="anchor-icon"></i></a><code>offset</code>-based pagination</h3> +<p>For a few methods with mostly static data this parameter allows to skip <code>offset</code> elements from the beginning of list; negative values are ignored.</p> +<h3><a class="anchor" href="#offset-id-based-pagination" id="offset-id-based-pagination" name="offset-id-based-pagination"><i class="anchor-icon"></i></a><code>offset_id</code>-based pagination</h3> +<p>For most methods where results are real-time data (e.g. any chat history) <code>offset</code> value is not passed directly. Instead it is calculated from the passed <code>offset_id</code> and <code>add_offset</code> parameter values as <code>offsetFromID(offset_id) + add_offset</code>, where <code>offsetFromID(offset_id)</code> is a number of results from the beginning of list up to the result with ID <code>offset_id</code>, inclusive.</p> +<p>Sample use cases:</p> +<ul> +<li> +<p>Loading 20 messages, older than message with ID <code>MSGID</code>:</p> +<p>messages.getHistory({offset_id: MSGID, add_offset: 0, limit: 20})</p> +</li> +<li> +<p>Loading 20 messages, newer than message with ID <code>MSGID</code>:</p> +<p>messages.getHistory({offset_id: MSGID, add_offset: -20, limit: 20})</p> +</li> +<li> +<p>Loading 20 messages around message with ID <code>MSGID</code>:</p> +<p>messages.getHistory({offset_id: MSGID, add_offset: -10, limit: 20})</p> +</li> +</ul> +<h3><a class="anchor" href="#additional-filtering" id="additional-filtering" name="additional-filtering"><i class="anchor-icon"></i></a>Additional filtering</h3> +<p>There is a number of parameters, which are applied to the list after slicing with offset and limit, to reduce the result subset even more:</p> +<ul> +<li><strong>max_id</strong>: Can be used to only return results with ID strictly smaller than <code>max_id</code> (e.g. message ID)</li> +<li><strong>min_id</strong>: Can be used to only return results with ID strictly greater than <code>min_id</code>(e.g. message ID)</li> +<li><strong>max_date</strong>: Can be used to only return results that are older than <code>max_date</code>:</li> +<li><strong>min_date</strong>: Can be used to only return results with are newer than <code>min_date</code>:</li> +<li><strong>hash</strong>: See below.</li> +</ul> +<h3><a class="anchor" href="#hash-generation" id="hash-generation" name="hash-generation"><i class="anchor-icon"></i></a>Hash generation</h3> +<p>To further reduce the result subset, there is a mechanism to avoid fetching data if the resulting list hasn't changed from the one stored on client, similar to <a href="https://en.wikipedia.org/wiki/HTTP_ETag">ETag</a>.</p> +<p>When the client has cached results for API request, it can calculate the <code>hash</code> value for it by taking the result IDs (message IDs or other fields with name <code>id</code>) and using them to compute a 64-bit hash with the following algorithm:</p> +<pre><code># Here, ^ indicates a bitwise XOR + +hash = 0 +for id in ids: + hash = hash ^ (id >> 21) + hash = hash ^ (id << 35) + hash = hash ^ (id >> 4) + hash = hash + id</code></pre> +<p>In some cases, the result container already has a <code>hash</code> field, that can be used instead.</p> +<p>When the client passes a correct value, the API will return one of <code>*NotModified</code> constructors, e.g. <a href="/constructor/messages.messagesNotModified">messages.messagesNotModified</a> instead of the actual results.</p> +<h3><a class="anchor" href="#example-methods" id="example-methods" name="example-methods"><i class="anchor-icon"></i></a>Example methods</h3> +<ul> +<li><a href="/method/messages.getHistory">messages.getHistory</a> supports all result navigation parameters including message ID hashes and except filters</li> +<li><a href="/method/channels.getParticipants">channels.getParticipants</a> supports simple navigation using <strong>limit</strong> and <strong>offset</strong>, along with filtering and <code>hash</code> reducing using the user IDs of returned participants</li> +</ul></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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/optimisation.html b/data/corefork.telegram.org/api/optimisation.html new file mode 100644 index 0000000000..35d3848e85 --- /dev/null +++ b/data/corefork.telegram.org/api/optimisation.html @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Client-Side Optimization</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Ways to boost API interactions."> + <meta property="og:title" content="Client-Side Optimization"> + <meta property="og:image" content="cc8d9aa19196b9a2dd"> + <meta property="og:description" content="Ways to boost API interactions."> + <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?215" 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/optimisation" >Client-Side Optimization</a></li></ul></div> + <h1 id="dev_page_title">Client-Side Optimization</h1> + + <div id="dev_page_content"><h3><a class="anchor" href="#simplified-acknowledgment-of-message-delivery" id="simplified-acknowledgment-of-message-delivery" name="simplified-acknowledgment-of-message-delivery"><i class="anchor-icon"></i></a>Simplified Acknowledgment of Message Delivery</h3> +<p>An outgoing message may be considered sent once the server has assigned it an identifier. Normally, a client would learn of this from the result of the <a href="/method/messages.sendMessage">messages.sendMessage</a> method. +The MTProto server provides a mechanism for <a href="/mtproto/mtproto-transports#quick-ack">“quick acknowledgments"</a>. Upon receiving such an acknowledgment, the client may be certain that the call to the send message method has at least been fully received by the server and placed in a processing queue, and can inform the user that the delivery was successful. +It is possible that the server’s actual response will never be received by the client (an interrupted connection; or the app restarts at exactly the wrong time). To correctly handle these situations, you can use a special type of notification generated by the server when <a href="/method/updates.getDifference">updates.getDifference</a> is called: <a href="/constructor/updateMessageID">updateMessageID</a>. When processing this notification, the client can use the <strong>random_id</strong> identifier to associate the previously transmitted message with the one delivered to the server. +If such a notification is not issued when <a href="/method/updates.getDifference">updates.getDifference</a> is called for one of the previously sent messages, the message must be marked as undelivered.</p> +<h3><a class="anchor" href="#server-salt" id="server-salt" name="server-salt"><i class="anchor-icon"></i></a>Server Salt</h3> +<p>Server salt is a 64-bit number added to every outgoing and incoming message. At present, a single salt’s lifespan is 1 hour, following which it is considered invalid and the server will return an error for all the messages that contain it. The error message will contain the correct salt, which may be immediately used for sending. Given this approach, there will always be a period of waiting before the client receives a new salt if it connects to the server less frequently than once an hour. +For improved performance, there is a special <a href="/mtproto/service_messages#request-for-several-future-salts">get_future_salts</a> method, which fetches in advance a list of the salts that will be valid during the course of a specified period of time following the call (1 day, for example). A start time and an end time are specified for each salt. The salts overlap one another by half an hour. We recommend always using the record with the longest remaining lifespan.</p> +<h3><a class="anchor" href="#downloading-files-and-uploading-data-to-the-server" id="downloading-files-and-uploading-data-to-the-server" name="downloading-files-and-uploading-data-to-the-server"><i class="anchor-icon"></i></a>Downloading Files and Uploading Data to the Server</h3> +<p>We recommend that separate connections and sessions be created for these tasks. Remember that the extra sessions must be deleted when no longer needed. +It makes sense to download files over several connections (optimally to have a pool). When uploading data to a server one connection is enough to achieve the best results.</p> +<p>The file handling API is designed to perform data operations in parts. In its simplest implementation, the process of uploading files to a server looks like this: send a query, wait for a response, send the next query, etc. This approach does not optimize the use of network resources and the ping time has a huge effect. +The upload and download process is optimal when two or more queries are continuously being executed through one connection. In this arrangement, uploading to the server would look like this:</p> +<ol> +<li>Send Query 1</li> +<li>Send Query 2</li> +<li>Wait for a response to Query 1</li> +<li>Send Query 3</li> +<li>Wait for a response to Query 2</li> +<li>Send Query 4</li> +<li>etc.</li> +</ol> +<p>This will help reduce the effect of ping latency and maximize the channel workload.</p> +<h3><a class="anchor" href="#sending-messages-in-bulk" id="sending-messages-in-bulk" name="sending-messages-in-bulk"><i class="anchor-icon"></i></a>Sending Messages in Bulk</h3> +<p>Sometimes a client needs to transmit several send message method calls to the server all at once in a single message or in several consecutive messages. However, the server may execute these requests out of order (queries are handled by different servers to improve performance, which introduces a degree of randomness to the process). +This requires that dependencies be explicitly stated when processing queries by using the function</p> +<pre><code>invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;</code></pre> +<p>Actually, this means padding the beginning of the query with the 32-bit number <code>0xcb9f372d</code> and the 64-bit message identifier of the query on which the current query is dependent.</p> +<h3><a class="anchor" href="#grouping-updates" id="grouping-updates" name="grouping-updates"><i class="anchor-icon"></i></a>Grouping Updates</h3> +<p>Generating updates (notifications about various server events) and delivering them to the client form two different parts of the system (respectively, the messenger API and MTProto). By itself, MTProto cannot modify in any way the data transmitted to the client, and the server API cannot respond to client-MTProto connection events. +Imagine the situation where a client loses its connection (or is intentionally disconnected from the network) for some time. If lots of different events occur before a new connection is established (contacts come online, typing event messages are sent), then when a connection is established the client will receive lots of data containing all of the intervening events, despite the fact that most of the data is obsolete. +The grouping of messages has been introduced to optimize such situations. If new events occur and the client has not managed to “collect” the previously generated updates, then the server API can combine them into a single package.</p> +<p>A client is able to control when the MTProto server begins to consider that the connection has been lost and grouping can begin (the earlier this occurs when there is no connection, the better for the client). This functionality is implemented through a special type of Ping message, <a href="/mtproto/service_messages#deferred-connection-closure-ping">ping_delay_disconnect</a>, which specifies a time delay following which the server will close the current connection and start grouping messages. </p> +<p>It makes sense to combine the transmission of <a href="/mtproto/service_messages#deferred-connection-closure-ping">ping_delay_disconnect</a> with that of other recurring tasks, such as updating the user status (<a href="/method/account.updateStatus">account.updateStatus</a>).</p> +<h3><a class="anchor" href="#setting-the-typing-status" id="setting-the-typing-status" name="setting-the-typing-status"><i class="anchor-icon"></i></a>Setting the Typing Status</h3> +<p>If a contact is not online, there is no need to invoke <a href="/method/messages.setTyping">messages.setTyping</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/passport.html b/data/corefork.telegram.org/api/passport.html new file mode 100644 index 0000000000..0aaa487f89 --- /dev/null +++ b/data/corefork.telegram.org/api/passport.html @@ -0,0 +1,674 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram passport</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Client-side passport flow"> + <meta property="og:title" content="Telegram passport"> + <meta property="og:image" content="127528a6974e1bc1ac"> + <meta property="og:description" content="Client-side passport flow"> + <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?215" 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/passport" >Telegram passport</a></li></ul></div> + <h1 id="dev_page_title">Telegram passport</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><strong>Telegram Passport</strong> is a unified authorization method for services that require personal identification. Users can upload their documents once, then instantly share their data with services that require real-world ID (finance, ICOs, etc.). Telegram doesn‘t have access to the users’ personal information thanks to end-to-end encryption.</p> +<p>This page describes the request flow that client apps must used to send the requested data to the service.</p> +<h3><a class="anchor" href="#overview" id="overview" name="overview"><i class="anchor-icon"></i></a>Overview</h3> +<p>From the perspective of a service that requires real-world ID, the process looks like this:</p> +<ul> +<li>A user presses “Log in with Telegram” on your website or in your app.</li> +<li>You request the data you need.</li> +<li>The user accepts your privacy policy and agrees to share their data.</li> +<li>The user's Telegram app downloads and decrypts the data you requested from the end-to-end encrypted storage on Telegram.</li> +<li>If some of the data you requested is missing, the user can add it to their Telegram Passport at this point.</li> +<li>The user's app encrypts the data with your public key and sends it to you.</li> +<li>You decrypt the data, check it for errors and re-request any missing or invalid information.</li> +<li>You sign the user up for your service. Tada!</li> +</ul> +<p>See <a href="#as-a-bot">As a bot</a> to see how to request passport data using a bot, through the MTProto API. +Look at the <a href="/passport">Passport Manual</a> to see how to request passport data using a bot, through the simplified bot API.</p> +<p>From the perspective of a user, the process looks something like this:</p> +<ul> +<li>Your app <a href="#receiving-requests">receives an event/intent</a> from one of the <a href="/passport#sdk">SDKs</a>, or from a custom source.</li> +<li>The user accepts your privacy policy and agrees to share their data.</li> +<li>The user's Telegram app <a href="/passport/encryption#fetching-and-deleting-stored-passport-data">downloads the data you requested</a> from the end-to-end encrypted storage on Telegram.</li> +<li>If some of the data you requested is missing, the user can <a href="/passport/encryption#encryption">add it to their Telegram Passport</a> at this point.</li> +<li>The user's app encrypts the data with your public key and sends it to the service.</li> +<li>You sign the user up for your service. Tada!</li> +</ul> +<p>See <a href="#as-a-user">As a user</a> to see how user client apps should send passport data to a service, through the MTProto API.</p> +<h3><a class="anchor" href="#as-a-bot" id="as-a-bot" name="as-a-bot"><i class="anchor-icon"></i></a>As a bot</h3> +<p>A simplified version of this process can be used using the bot API, for more info see the <a href="/passport">Passport Manual</a>.</p> +<p>Using the MTProto API, the process is pretty much the same, up until the actual API calls.</p> +<blockquote> +<p>Note that all binary fields are in raw binary format, unlike in the bot API where they are base64-encoded</p> +</blockquote> +<h4><a class="anchor" href="#setting-up-telegram-passport" id="setting-up-telegram-passport" name="setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting Up Telegram Passport</h4> +<p><a href="/passport#setting-up-telegram-passport">As per the bot API</a>.</p> +<h4><a class="anchor" href="#requesting-information" id="requesting-information" name="requesting-information"><i class="anchor-icon"></i></a>Requesting Information</h4> +<p><a href="/passport#requesting-information">As per the bot API</a>.</p> +<h4><a class="anchor" href="#receiving-information" id="receiving-information" name="receiving-information"><i class="anchor-icon"></i></a>Receiving information</h4> +<p>Schema:</p> +<pre><code><a href='/constructor/secureData'>secureData</a>#8aeabec3 data:<a href='/type/bytes'>bytes</a> data_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureData'>SecureData</a>; + +<a href='/constructor/securePlainPhone'>securePlainPhone</a>#7d6099dd phone:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; +<a href='/constructor/securePlainEmail'>securePlainEmail</a>#21ec5a5f email:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; + +<a href='/constructor/secureFile'>secureFile</a>#e0277a62 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureFile'>SecureFile</a>; + +<a href='/constructor/secureValueTypePersonalDetails'>secureValueTypePersonalDetails</a>#9d2a81e3 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePassport'>secureValueTypePassport</a>#3dac6a00 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeDriverLicense'>secureValueTypeDriverLicense</a>#6e425c4 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeIdentityCard'>secureValueTypeIdentityCard</a>#a0d0744b = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeInternalPassport'>secureValueTypeInternalPassport</a>#99a48f23 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeAddress'>secureValueTypeAddress</a>#cbe31e26 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeUtilityBill'>secureValueTypeUtilityBill</a>#fc36954e = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeBankStatement'>secureValueTypeBankStatement</a>#89137c0d = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeRentalAgreement'>secureValueTypeRentalAgreement</a>#8b883488 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePassportRegistration'>secureValueTypePassportRegistration</a>#99e3806a = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeTemporaryRegistration'>secureValueTypeTemporaryRegistration</a>#ea02ec33 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePhone'>secureValueTypePhone</a>#b320aadb = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeEmail'>secureValueTypeEmail</a>#8e3ca7ee = <a href='/type/SecureValueType'>SecureValueType</a>; + +<a href='/constructor/secureValue'>secureValue</a>#187fa0ca flags:<a href='/type/%23'>#</a> type:<a href='/type/SecureValueType'>SecureValueType</a> data:flags.0?<a href='/type/SecureData'>SecureData</a> front_side:flags.1?<a href='/type/SecureFile'>SecureFile</a> reverse_side:flags.2?<a href='/type/SecureFile'>SecureFile</a> selfie:flags.3?<a href='/type/SecureFile'>SecureFile</a> translation:flags.6?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> files:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> plain_data:flags.5?<a href='/type/SecurePlainData'>SecurePlainData</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureValue'>SecureValue</a>; + +<a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>; + +<a href='/constructor/messageActionSecureValuesSentMe'>messageActionSecureValuesSentMe</a>#1b287353 values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/MessageAction'>MessageAction</a>; +<a href='/constructor/messageService'>messageService</a>#2b085862 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updateNewMessage'>updateNewMessage</a>#1f2b0afd message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;</code></pre> +<p>When the user confirms your request by pressing the 'Authorize' button, the MTProto API sends an <a href="/constructor/updateNewMessage">updateNewMessage</a> from the user, with a <a href="/constructor/messageService">messageService</a> constructor, containing a <a href="/constructor/messageActionSecureValuesSentMe">messageActionSecureValuesSentMe</a> constructor that contains the encrypted Telegram Passport data.</p> +<h4><a class="anchor" href="#decrypting-data" id="decrypting-data" name="decrypting-data"><i class="anchor-icon"></i></a>Decrypting data</h4> +<pre><code><a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>; + +<a href='/constructor/messageActionSecureValuesSentMe'>messageActionSecureValuesSentMe</a>#1b287353 values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/MessageAction'>MessageAction</a>; </code></pre> +<p>To decrypt the received data, first, decrypt the credentials contained in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>.</p> +<ol> +<li> +<p>Decrypt the credentials secret ( <em>secret</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) using your <strong>private</strong> key (set OAEP padding option, e.g. <code>OPENSSL_PKCS1_OAEP_PADDING</code> in PHP)</p> +</li> +<li> +<p>Use this secret and the credentials hash ( <em>hash</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) to calculate <em>credentials_key</em> and <em>credentials_iv</em> as described below:</p> +<pre><code> credentials_secret_hash = SHA512( credentials_secret + credentials_hash ) + credentials_key = slice( credentials_secret_hash, 0, 32 ) + credentials_iv = slice( credentials_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Decrypt the credentials data ( <em>data</em> field in <a href="/constructor/secureCredentialsEncrypted">secureCredentialsEncrypted</a>) by AES256-CBC using these <em>credentials_key</em> and <em>credentials_iv</em>. <strong>IMPORTANT:</strong> At this step, make sure that the credentials hash is equal to <code>SHA256( credentials_data )</code></p> +</li> +<li> +<p>Credentials data is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of this padding (including this byte). Remove the padding to get the data.</p> +</li> +</ol> +<blockquote> +<p>Note that all hashes are raw binary data, not hexits</p> +</blockquote> +<h4><a class="anchor" href="#credentials" id="credentials" name="credentials"><i class="anchor-icon"></i></a>Credentials</h4> +<p>The credentials are a JSON-serialized object, structured exactly as in the <a href="/passport#credentials">bot API »</a>. +Since decryption credentials are E2E encrypted, apps have to store the decryption credentials as JSON and not TL payloads.</p> +<p>The credentials are used as described in the <a href="/passport#credentials">Passport Manual</a> to decrypt the files attached to the <a href="/constructor/secureValue">secureValue</a>. +In this case, the container for the E2E encrypted data is in TL, while the encrypted data itself is in JSON.</p> +<h5><a class="anchor" href="#securevalue" id="securevalue" name="securevalue"><i class="anchor-icon"></i></a><a href="/constructor/secureValue">secureValue</a></h5> +<pre><code><a href='/constructor/secureValue'>secureValue</a>#187fa0ca flags:<a href='/type/%23'>#</a> type:<a href='/type/SecureValueType'>SecureValueType</a> data:flags.0?<a href='/type/SecureData'>SecureData</a> front_side:flags.1?<a href='/type/SecureFile'>SecureFile</a> reverse_side:flags.2?<a href='/type/SecureFile'>SecureFile</a> selfie:flags.3?<a href='/type/SecureFile'>SecureFile</a> translation:flags.6?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> files:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureFile'>SecureFile</a>> plain_data:flags.5?<a href='/type/SecurePlainData'>SecurePlainData</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureValue'>SecureValue</a>; + +<a href='/constructor/messageActionSecureValuesSentMe'>messageActionSecureValuesSentMe</a>#1b287353 values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/MessageAction'>MessageAction</a>; </code></pre> +<p>The schema for the <a href="/constructor/inputSecureValue">secureValue</a> constructor defines the constructor that can be found in each field.</p> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>type</strong></td> +<td><a href="/type/SecureValueType">SecureValueType</a></td> +<td>Secure <a href="/passport">passport</a> value type</td> +</tr> +<tr> +<td><strong>data</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/SecureData">SecureData</a></td> +<td>Encrypted <a href="/passport">Telegram Passport</a> element data</td> +</tr> +<tr> +<td><strong>front_side</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/SecureFile">SecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the front side of the document</td> +</tr> +<tr> +<td><strong>reverse_side</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/SecureFile">SecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the reverse side of the document</td> +</tr> +<tr> +<td><strong>selfie</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/SecureFile">SecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with a selfie of the user holding the document</td> +</tr> +<tr> +<td><strong>translation</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/Vector%20t">Vector</a><<a href="/type/SecureFile">SecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with translated versions of the provided documents</td> +</tr> +<tr> +<td><strong>files</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/SecureFile">SecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with photos the of the documents</td> +</tr> +<tr> +<td><strong>plain_data</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/SecurePlainData">SecurePlainData</a></td> +<td>Plaintext verified <a href="/passport">passport</a> data</td> +</tr> +<tr> +<td><strong>hash</strong></td> +<td><a href="/type/bytes">bytes</a></td> +<td>Data hash</td> +</tr> +</tbody> +</table> +<p>Here's a list of possible <a href="/type/SecureValueType">SecureValueTypes</a>, and the parameters that can be set/requested when using each type.</p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Allowed fields</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/secureValueTypeEmail">secureValueTypeEmail</a></td> +<td><code>plain_data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeEmail">secureValueTypePhone</a></td> +<td><code>plain_data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePersonalDetails">secureValueTypePersonalDetails</a></td> +<td><code>data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassport">secureValueTypePassport</a></td> +<td><code>data</code>, <code>front_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a></td> +<td><code>data</code>, <code>front_side</code>, <code>reverse_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a></td> +<td><code>data</code>, <code>front_side</code>, <code>reverse_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></td> +<td><code>data</code>, <code>front_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeAddress">secureValueTypeAddress</a></td> +<td><code>data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeUtilityBill">secureValueTypeUtilityBill</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeBankStatement">secureValueTypeBankStatement</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeRentalAgreement">secureValueTypeRentalAgreement</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassportRegistration">secureValueTypePassportRegistration</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeTemporaryRegistration">secureValueTypeTemporaryRegistration</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +</tbody> +</table> +<h5><a class="anchor" href="#securedata" id="securedata" name="securedata"><i class="anchor-icon"></i></a><a href="/type/SecureData">SecureData</a></h5> +<pre><code><a href='/constructor/secureData'>secureData</a>#8aeabec3 data:<a href='/type/bytes'>bytes</a> data_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureData'>SecureData</a>;</code></pre> +<p>Data is an encrypted and padded JSON-serialized object of one of the specified JSON types, depending on the chosen <a href="/type/SecureValueType">type</a>.</p> +<table class="table"> +<thead> +<tr> +<th>Chosen type</th> +<th>JSON object</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/secureValueTypePersonalDetails">secureValueTypePersonalDetails</a></td> +<td><a href="/passport#personaldetails">PersonalDetails</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassport">secureValueTypePassport</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeAddress">secureValueTypeAddress</a></td> +<td><a href="/passport#residentialaddress">ResidentialAddress</a></td> +</tr> +</tbody> +</table> +<p><a href="/passport#datacredentials">DataCredentials</a> extracted <a href="#credentials">from the credentials</a> can then be used to decrypt encrypted data from the <em>data</em> field in <a href="/constructor/secureData">secureData</a>. +For more info on how to decrypt the <em>data</em> field, see the <a href="/passport#datacredentials">passport manual</a>.</p> +<h5><a class="anchor" href="#securefile" id="securefile" name="securefile"><i class="anchor-icon"></i></a><a href="/type/SecureFile">SecureFile</a></h5> +<pre><code><a href='/constructor/secureFile'>secureFile</a>#e0277a62 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureFile'>SecureFile</a>; + +<a href='/constructor/inputSecureFileLocation'>inputSecureFileLocation</a>#cbc7ee28 id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>; + +---functions--- + +<a href='/method/upload.getFile'>upload.getFile</a>#b15a9afc flags:<a href='/type/%23'>#</a> precise:flags.0?<a href='/constructor/true'>true</a> cdn_supported:flags.1?<a href='/constructor/true'>true</a> location:<a href='/type/InputFileLocation'>InputFileLocation</a> offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/upload.File'>upload.File</a>;</code></pre> +<p>Files (JPG format when decrypted, max. 10MB) are downloaded chunk by chunk as described in <a href="/api/files">files »</a>, except that instead of generating an <a href="/constructor/inputFile">inputFileLocation</a>, an <a href="/constructor/inputFileLocation">inputFileLocation</a> should be generated, instead.</p> +<ul> +<li>The <code>id</code> field is the <code>id</code> of the <a href="/constructor/secureFile">secureFile</a></li> +<li>The <code>access_hash</code> field is the <code>access_hash</code> of the <a href="/constructor/secureFile">secureFile</a></li> +</ul> +<p><a href="/passport#filecredentials">FileCredentials</a> extracted <a href="#credentials">from the credentials</a> can then be used to decrypt downloaded encrypted data. +For more info on how to decrypt passport files, see the <a href="/passport#filecredentials">passport manual</a>.</p> +<h5><a class="anchor" href="#secureplaindata" id="secureplaindata" name="secureplaindata"><i class="anchor-icon"></i></a><a href="/type/SecurePlainData">SecurePlainData</a></h5> +<pre><code><a href='/constructor/securePlainPhone'>securePlainPhone</a>#7d6099dd phone:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; +<a href='/constructor/securePlainEmail'>securePlainEmail</a>#21ec5a5f email:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>;</code></pre> +<p>The email/phone is passed in plaintext using the respective <a href="/type/SecurePlainData">SecurePlainData</a> constructor. +Emails and phone numbers sent using telegram passport are <em>already verified</em> as described in the <a href="/passport/encryption#secureplaindata">passport manual</a>.</p> +<h4><a class="anchor" href="#fixing-errors" id="fixing-errors" name="fixing-errors"><i class="anchor-icon"></i></a>Fixing errors</h4> +<pre><code><a href='/constructor/secureValueErrorData'>secureValueErrorData</a>#e8a40bd9 type:<a href='/type/SecureValueType'>SecureValueType</a> data_hash:<a href='/type/bytes'>bytes</a> field:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFrontSide'>secureValueErrorFrontSide</a>#be3dfa type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorReverseSide'>secureValueErrorReverseSide</a>#868a2aa5 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorSelfie'>secureValueErrorSelfie</a>#e537ced6 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFile'>secureValueErrorFile</a>#7a700873 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFiles'>secureValueErrorFiles</a>#666220e9 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueError'>secureValueError</a>#869d758f type:<a href='/type/SecureValueType'>SecureValueType</a> hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorTranslationFile'>secureValueErrorTranslationFile</a>#a1144770 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorTranslationFiles'>secureValueErrorTranslationFiles</a>#34636dd8 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; + +<a href='/constructor/inputUser'>inputUser</a>#f21158c6 user_id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputUser'>InputUser</a>; + + +---functions--- + +<a href='/method/users.setSecureValueErrors'>users.setSecureValueErrors</a>#90c894b5 id:<a href='/type/InputUser'>InputUser</a> errors:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueError'>SecureValueError</a>> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>If the data you received contains errors, the bot can use the <a href="/method/users.setSecureValueErrors">users.setSecureValueErrors</a> method to inform the user and <a href="#requesting-information">request information</a> again. The user will not be able to resend the data, until all errors are fixed.</p> +<p>Descriptions of the method parameters can be found in the method's <a href="/method/users.setSecureValueErrors">documentation page »</a>.</p> +<h3><a class="anchor" href="#as-a-user" id="as-a-user" name="as-a-user"><i class="anchor-icon"></i></a>As a user</h3> +<h4><a class="anchor" href="#receiving-requests" id="receiving-requests" name="receiving-requests"><i class="anchor-icon"></i></a>Receiving requests</h4> +<p>The process starts when your app receives an event from one of the <a href="/passport#sdk">SDKs</a>, or from a custom source.</p> +<h4><a class="anchor" href="#uri-format" id="uri-format" name="uri-format"><i class="anchor-icon"></i></a>URI format</h4> +<p>The SDKs trigger a passport authorization request by opening the following Telegram-specific URI:</p> +<pre><code>tg://resolve?params</code></pre> +<p>With the following query string parameters:</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Parameters</strong></td> +<td><strong>Type</strong></td> +<td><strong>Required</strong></td> +</tr> +<tr> +<td>domain</td> +<td>String</td> +<td>Yes</td> +</tr> +<tr> +<td>bot_id</td> +<td>Integer</td> +<td>Yes</td> +</tr> +<tr> +<td>scope</td> +<td><a href="#uripassportscope">UriPassportScope</a></td> +<td>Yes</td> +</tr> +<tr> +<td>public_key</td> +<td>String</td> +<td>Yes</td> +</tr> +<tr> +<td>nonce</td> +<td>String</td> +<td>Yes</td> +</tr> +<tr> +<td>callback_url</td> +<td>String</td> +<td>Optional</td> +</tr> +<tr> +<td>payload</td> +<td>String</td> +<td>Optional</td> +</tr> +</tbody> +</table> +<p>Example URI, generated by the <a href="/passport/example">Telegram Passport Example page</a>:</p> +<pre><code>tg://resolve?domain=telegrampassport&bot_id=543260180&scope=%7B%22v%22%3A1%2C%22d%22%3A%5B%7B%22_%22%3A%22pd%22%2C%22n%22%3A1%7D%2C%22ad%22%2C%22pn%22%2C%22em%22%2C%7B%22_%22%3A%5B%7B%22_%22%3A%22pp%22%2C%22s%22%3A1%2C%22t%22%3A1%7D%2C%22ip%22%2C%22dl%22%2C%22ic%22%5D%7D%2C%7B%22_%22%3A%5B%22ub%22%2C%22bs%22%2C%22ra%22%2C%22pr%22%2C%22tr%22%5D%7D%5D%7D&public_key=-----BEGIN%20PUBLIC%20KEY-----%0AMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv6m1zBF8lZOCqcxf8hnj%0AkvHwuWdU8s4rBWaxKXH%2FvDDUklcCS5uhSnmjhxWca9suubaG3lW4HxlCilkeJPVf%0Ajimg5Q8ZqWrR3OoOihEpcG9iJZTOEpsEk7VtEiabgacBG3Quv9JslTrDe95Fn801%0At9d21HXwgMrHeHpWDOn31Dr%2BwoEH%2BkwySUWa6L%2FZbnGwSNP7eeDTE7Amz1RMDk3t%0A8EWGq58u0IQatPcEH09aUQlKzk6MIiALkZ9ILBKCBk6d2WCokKnsdBctovNbxwSx%0AhP1qst1r%2BYc8iPBZozsDC0ZsC5jXCkcODI3OC0tkNtYzN2XKalW5R0DjDRUDmGhT%0AzQIDAQAB%0A-----END%20PUBLIC%20KEY-----%0A&nonce=b8e892dc2e0afe63424d101b964f1256_32858210_708614a4585b84872e&callback_url=https%3A%2F%2Fcore.telegram.org%2Fpassport%2Fexample%3Fpassport_ssid%3Db8e892dc2e0afe63424d101b964f1256_32858210_db259b427f200751ce&payload=b8e892dc2e0afe63424d101b964f1256_32858210_708614a4585b84872e</code></pre> +<h4><a class="anchor" href="#uripassportscope" id="uripassportscope" name="uripassportscope"><i class="anchor-icon"></i></a>UriPassportScope</h4> +<p>This object represents the data to be requested.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>d</td> +<td>Array of <a href="#uripassportscopeelement">UriPassportScopeElement</a></td> +<td>List of requested elements, each type may be used only once in the entire array of UriPassportScopeElement objects</td> +</tr> +<tr> +<td>v</td> +<td>Integer</td> +<td>Scope version, must be <em>1</em></td> +</tr> +</tbody> +</table> +<h5><a class="anchor" href="#uripassportscopeelement" id="uripassportscopeelement" name="uripassportscopeelement"><i class="anchor-icon"></i></a>UriPassportScopeElement</h5> +<p>This object represents a requested element, should be one of:</p> +<ul> +<li><a href="#uripassportscopeelementoneofseveral">UriPassportScopeElementOneOfSeveral</a> - use to request any one of the documents included in the scope.</li> +<li><a href="#uripassportscopeelementone">UriPassportScopeElementOne</a> – use to request one particular document.</li> +</ul> +<p>Passport document type identifiers are aliased with the following reduced type identifiers:</p> +<table class="table"> +<thead> +<tr> +<th><strong>Full</strong></th> +<th><strong>Alias</strong></th> +</tr> +</thead> +<tbody> +<tr> +<td><code>personal_details</code></td> +<td><code>pd</code></td> +</tr> +<tr> +<td><code>passport</code></td> +<td><code>pp</code></td> +</tr> +<tr> +<td><code>driver_license</code></td> +<td><code>dl</code></td> +</tr> +<tr> +<td><code>identity_card</code></td> +<td><code>ic</code></td> +</tr> +<tr> +<td><code>internal_passport</code></td> +<td><code>ip</code></td> +</tr> +<tr> +<td><code>id_document</code></td> +<td><code>idd</code></td> +</tr> +<tr> +<td><code>address</code></td> +<td><code>ad</code></td> +</tr> +<tr> +<td><code>utility_bill</code></td> +<td><code>ub</code></td> +</tr> +<tr> +<td><code>bank_statement</code></td> +<td><code>bs</code></td> +</tr> +<tr> +<td><code>rental_agreement</code></td> +<td><code>ra</code></td> +</tr> +<tr> +<td><code>passport_registration</code></td> +<td><code>pr</code></td> +</tr> +<tr> +<td><code>temporary_registration</code></td> +<td><code>tr</code></td> +</tr> +<tr> +<td><code>address_document</code></td> +<td><code>add</code></td> +</tr> +<tr> +<td><code>phone_number</code></td> +<td><code>pn</code></td> +</tr> +<tr> +<td><code>email</code></td> +<td><code>em</code></td> +</tr> +</tbody> +</table> +<p>You can use the special type "idd" as an alias for one of "pp", "dl", "ic" and the special type "add" as an alias for one of "ub", "bs", "ra". </p> +<h4><a class="anchor" href="#uripassportscopeelementoneofseveral" id="uripassportscopeelementoneofseveral" name="uripassportscopeelementoneofseveral"><i class="anchor-icon"></i></a>UriPassportScopeElementOneOfSeveral</h4> +<p>This object represents several elements one of which must be provided.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>_</td> +<td>Array of <a href="#uripassportscopeelementone">UriPassportScopeElementOne</a></td> +<td>List of elements one of which must be provided; must contain either several of “pp”, “dl”, “ic”, “ip” <strong>or</strong> several of “ub”, “bs”, “ra”, “pr”, “tr”</td> +</tr> +<tr> +<td>s</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document from this list that the user chooses to upload.</td> +</tr> +<tr> +<td>t</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a translation of the document from this list that the user chooses to upload. <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#uripassportscopeelementone" id="uripassportscopeelementone" name="uripassportscopeelementone"><i class="anchor-icon"></i></a>UriPassportScopeElementOne</h4> +<p>This object represents one particular element that must be provided. If no options are needed, <em>String</em> can be used instead of this object to specify the type of the element.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>_</td> +<td>String</td> +<td>Element type. One of "pd", "pp", "dl", "ic", "ip", "ad", "ub", "bs", "ra", "pr", "tr", "pn", "em"</td> +</tr> +<tr> +<td>s</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document as well. Available for "pp", "dl", "ic" and "ip"</td> +</tr> +<tr> +<td>t</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a translation of the document as well. Available for "pp", "dl", "ic", "ip", "ub", "bs", "ra", "pr" and "tr". <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td> +</tr> +<tr> +<td>n</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter to request the first, last and middle name of the user in the language of the user's country of residence. Available for "pd"</td> +</tr> +</tbody> +</table> +<p>You can also use the special type "idd" as an alias for one of "pp", "dl", "ic" and the special type "add" as an alias for one of "ub", "bs", "ra". </p> +<h4><a class="anchor" href="#setting-up-telegram-passport" id="setting-up-telegram-passport" name="setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting up Telegram Passport</h4> +<p>The next step for the client app is to request the user's 2FA passport, and configure Telegram Passport/fetch and decrypt remotely saved Telegram Passport parameters as described in the <a href="/passport/encryption">Encryption article »</a>.</p> +<h4><a class="anchor" href="#fetching-the-passport-form" id="fetching-the-passport-form" name="fetching-the-passport-form"><i class="anchor-icon"></i></a>Fetching the passport form</h4> +<pre><code><a href='/constructor/account.authorizationForm'>account.authorizationForm</a>#ad2e1cd8 flags:<a href='/type/%23'>#</a> required_types:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureRequiredType'>SecureRequiredType</a>> values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> errors:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueError'>SecureValueError</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> privacy_policy_url:flags.0?<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>; + +---functions--- + +<a href='/method/account.getAuthorizationForm'>account.getAuthorizationForm</a>#a929597a bot_id:<a href='/type/long'>long</a> scope:<a href='/type/string'>string</a> public_key:<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>;</code></pre> +<p>Then, the client app passes the bot ID, scope and public key from the <a href="#receiving-requests">passport authorization request</a> to the Telegram servers using the <a href="/method/account.getAuthorizationForm">account.getAuthorizationForm</a> method.</p> +<p>The response will be an <a href="/constructor/account.authorizationForm">account.authorizationForm</a> constructor, with info about the required document types, the URL of the service's privacy policy, as well as info about the bot to which the form should be sent. +If the form was already submitted at least once, the constructor will also contain a list of already submitted data, along with eventual errors. </p> +<p>The user should accept the privacy policy and proceed to fill in the required data, and the client should encrypt and upload it as described in the <a href="/passport/encryption">Encryption article »</a>.</p> +<h4><a class="anchor" href="#submitting-the-passport-form" id="submitting-the-passport-form" name="submitting-the-passport-form"><i class="anchor-icon"></i></a>Submitting the passport form</h4> +<pre><code><a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>; + +<a href='/constructor/secureValueHash'>secureValueHash</a>#ed1ecdb0 type:<a href='/type/SecureValueType'>SecureValueType</a> hash:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureValueHash'>SecureValueHash</a>; + +---functions--- + +<a href='/method/account.acceptAuthorization'>account.acceptAuthorization</a>#f3ed4c73 bot_id:<a href='/type/long'>long</a> scope:<a href='/type/string'>string</a> public_key:<a href='/type/string'>string</a> value_hashes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueHash'>SecureValueHash</a>> credentials:<a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Once the user finishes uploading the required documents and clicks on the submit button, the client calls <a href="/method/account.acceptAuthorization">account.acceptAuthorization</a>, submitting the documents to the bot associated to the service.</p> +<ul> +<li>As before, <code>bot_id</code>, <code>scope</code> and <code>public_key</code> are taken from the authorization request URI.</li> +<li><code>value_hashes</code> is used by the server to choose which document of which type to send to the bot: the <code>type</code> field should be set to the document type, and the <code>hash</code> field should be set to the <code>data_hash</code>/<code>file_hash</code> generated when <a href="/passport/encryption#encryption">uploading encrypting the data »</a>.</li> +<li><code>credentials</code> contains the encrypted credentials required by the service to decrypt the sent E2E encrypted secure values: it is generated as described in <a href="/passport/encryption#passport-credentials">Passport Credentials »</a>.</li> +</ul> +<p>Finally, the client opens the callback URL (if present).</p> +<h4><a class="anchor" href="#handling-invalid-forms" id="handling-invalid-forms" name="handling-invalid-forms"><i class="anchor-icon"></i></a>Handling invalid forms</h4> +<pre><code><a href='/constructor/secureValueErrorData'>secureValueErrorData</a>#e8a40bd9 type:<a href='/type/SecureValueType'>SecureValueType</a> data_hash:<a href='/type/bytes'>bytes</a> field:<a href='/type/string'>string</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFrontSide'>secureValueErrorFrontSide</a>#be3dfa type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorReverseSide'>secureValueErrorReverseSide</a>#868a2aa5 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorSelfie'>secureValueErrorSelfie</a>#e537ced6 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFile'>secureValueErrorFile</a>#7a700873 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorFiles'>secureValueErrorFiles</a>#666220e9 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueError'>secureValueError</a>#869d758f type:<a href='/type/SecureValueType'>SecureValueType</a> hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorTranslationFile'>secureValueErrorTranslationFile</a>#a1144770 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/bytes'>bytes</a> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; +<a href='/constructor/secureValueErrorTranslationFiles'>secureValueErrorTranslationFiles</a>#34636dd8 type:<a href='/type/SecureValueType'>SecureValueType</a> file_hash:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> text:<a href='/type/string'>string</a> = <a href='/type/SecureValueError'>SecureValueError</a>; + +<a href='/constructor/account.authorizationForm'>account.authorizationForm</a>#ad2e1cd8 flags:<a href='/type/%23'>#</a> required_types:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureRequiredType'>SecureRequiredType</a>> values:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>> errors:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueError'>SecureValueError</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> privacy_policy_url:flags.0?<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>; + +---functions--- + +<a href='/method/account.getAuthorizationForm'>account.getAuthorizationForm</a>#a929597a bot_id:<a href='/type/long'>long</a> scope:<a href='/type/string'>string</a> public_key:<a href='/type/string'>string</a> = <a href='/type/account.AuthorizationForm'>account.AuthorizationForm</a>;</code></pre> +<p>If any of the values of the submitted form are rejected by the service, the bot <a href="/api/passport#fixing-errors">calls the appropriate method to set information about errors</a>.</p> +<p>The user can find out about these errors directly from the service, or, if they decide to <a href="#receiving-requests">restart the process</a> and resend the corrected data, directly from the authorization form (<code>errors</code> field).</p></div> + +</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/payments.html b/data/corefork.telegram.org/api/payments.html new file mode 100644 index 0000000000..72e75765a8 --- /dev/null +++ b/data/corefork.telegram.org/api/payments.html @@ -0,0 +1,366 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Payments API</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="You can accept payments from Telegram users via Telegram Bots. +Note: This article is intended for MTProto API developers.…"> + <meta property="og:title" content="Payments API"> + <meta property="og:image" content=""> + <meta property="og:description" content="You can accept payments from Telegram users via Telegram Bots. +Note: This article is intended for MTProto API developers.…"> + <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?215" 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/payments" >Payments API</a></li></ul></div> + <h1 id="dev_page_title">Payments API</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>You can accept payments from Telegram users via <a href="/bots">Telegram Bots</a>.</p> +<blockquote> +<p>Note: This article is intended for MTProto API developers. If you're looking for a general overview of Telegram Payments, check out the <a href="https://telegram.org/blog/payments">Telegram blog</a> and the <a href="/bots/payments">bot API payment manual</a>.</p> +</blockquote> +<h3><a class="anchor" href="#introducing-payments" id="introducing-payments" name="introducing-payments"><i class="anchor-icon"></i></a>Introducing Payments</h3> +<p>Telegram bots can accept payments for goods and services from users. +For more info on how payments work, check out the <a href="https://telegram.org/blog/payments">Telegram Blog</a> and the <a href="/bots/payments">bot API payment manual</a>.</p> +<p>This page will elaborate on the actions required to work with payments using the <strong>MTProto API</strong>.</p> +<blockquote> +<p>A simplified version of the process is available only for bots using the <a href="/bots/payments">bot API</a>.</p> +</blockquote> +<p>The first step for bots is <a href="/bots/payments#the-payments-api">enable payments as described here »</a>.</p> +<p>Then, we work with payments as follows.</p> +<h3><a class="anchor" href="#1-create-invoice" id="1-create-invoice" name="1-create-invoice"><i class="anchor-icon"></i></a>1. Create Invoice</h3> +<pre><code><a href='/constructor/inputWebDocument'>inputWebDocument</a>#9bed434d url:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/InputWebDocument'>InputWebDocument</a>; + +<a href='/constructor/labeledPrice'>labeledPrice</a>#cb296bf8 label:<a href='/type/string'>string</a> amount:<a href='/type/long'>long</a> = <a href='/type/LabeledPrice'>LabeledPrice</a>; + +<a href='/constructor/invoice'>invoice</a>#cd886e0 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> max_tip_amount:flags.8?<a href='/type/long'>long</a> suggested_tip_amounts:flags.8?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/Invoice'>Invoice</a>; + +<a href='/constructor/inputMediaInvoice'>inputMediaInvoice</a>#d9799874 flags:<a href='/type/%23'>#</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/InputWebDocument'>InputWebDocument</a> invoice:<a href='/type/Invoice'>Invoice</a> payload:<a href='/type/bytes'>bytes</a> provider:<a href='/type/string'>string</a> provider_data:<a href='/type/DataJSON'>DataJSON</a> start_param:flags.1?<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>The user contacts the bot and requests to purchase something. +The bot forms an <a href="/constructor/inputMediaInvoice">inputMediaInvoice</a> with an <a href="/constructor/invoice">invoice</a> constructor with a description of the goods or service, amount to be paid, as well as requested shipping info. +The <code>provider</code> parameter of the <a href="/constructor/inputMediaInvoice">inputMediaInvoice</a> constructor is where you put the token value that <a href="/bots/payments#the-payments-api">you've obtained earlier via Botfather</a>. It is possible for one merchant bot to use several different tokens for different users or different goods and services.</p> +<p>Use the <a href="/method/messages.sendMedia">messages.sendMedia</a> method to send the <a href="/constructor/invoice">invoice</a>. +You can also attach an inline keyboard to the message using the <code>reply_markup</code> field: if provided, the first button must be a <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button. Otherwise, an inline keyboard will be generated automatically, with a <code>Pay 'total price'</code> <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> as only button.</p> +<p>An invoice message with a pay button can only be sent to a private chat with the user. Groups and channels are not supported.</p> +<h3><a class="anchor" href="#2-order-information" id="2-order-information" name="2-order-information"><i class="anchor-icon"></i></a>2. Order information</h3> +<h4><a class="anchor" href="#21-invoice-message" id="21-invoice-message" name="21-invoice-message"><i class="anchor-icon"></i></a>2.1 Invoice message</h4> +<pre><code><a href='/constructor/keyboardButtonBuy'>keyboardButtonBuy</a>#afd93fbb text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/keyboardButtonRow'>keyboardButtonRow</a>#77608b83 buttons:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButton'>KeyboardButton</a>> = <a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>; +<a href='/constructor/replyInlineMarkup'>replyInlineMarkup</a>#48a30254 rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; + +<a href='/constructor/webDocument'>webDocument</a>#1c570ed1 url:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/WebDocument'>WebDocument</a>; +<a href='/constructor/webDocumentNoProxy'>webDocumentNoProxy</a>#f9c8bcc6 url:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> attributes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/DocumentAttribute'>DocumentAttribute</a>> = <a href='/type/WebDocument'>WebDocument</a>; + +<a href='/constructor/messageMediaInvoice'>messageMediaInvoice</a>#84551347 flags:<a href='/type/%23'>#</a> shipping_address_requested:flags.1?<a href='/constructor/true'>true</a> test:flags.3?<a href='/constructor/true'>true</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/WebDocument'>WebDocument</a> receipt_msg_id:flags.2?<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> start_param:<a href='/type/string'>string</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updateNewMessage'>updateNewMessage</a>#1f2b0afd message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;</code></pre> +<p>The user receives an <a href="/constructor/updateNewMessage">updateNewMessage</a> constructor from the bot, containing a <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> constructor with basic info about the product.</p> +<p>The <a href="/constructor/message">message</a> will also have a <a href="/constructor/replyInlineMarkup">replyInlineMarkup</a> keyboard attached to it. +The the first button of the keyboard will always be a <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button.</p> +<h4><a class="anchor" href="#22-getting-invoice-info-about-the-product" id="22-getting-invoice-info-about-the-product" name="22-getting-invoice-info-about-the-product"><i class="anchor-icon"></i></a>2.2 Getting invoice info about the product</h4> +<pre><code><a href='/constructor/invoice'>invoice</a>#cd886e0 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> max_tip_amount:flags.8?<a href='/type/long'>long</a> suggested_tip_amounts:flags.8?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/Invoice'>Invoice</a>; + +<a href='/constructor/paymentRequestedInfo'>paymentRequestedInfo</a>#909c3f94 flags:<a href='/type/%23'>#</a> name:flags.0?<a href='/type/string'>string</a> phone:flags.1?<a href='/type/string'>string</a> email:flags.2?<a href='/type/string'>string</a> shipping_address:flags.3?<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a>; + +<a href='/constructor/paymentSavedCredentialsCard'>paymentSavedCredentialsCard</a>#cdc27a1f id:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> = <a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>; + +---functions--- + +<a href='/method/payments.getPaymentForm'>payments.getPaymentForm</a>#8a333c8d flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> theme_params:flags.0?<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<p>If the user clicks on the <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button, the client proceeds to call <a href="/method/payments.getPaymentForm">payments.getPaymentForm</a> with the message ID of the invoice preview message to get the <a href="/constructor/payments.paymentForm">payment form</a>.</p> +<p>The returned form will contain fields that should be passed to the payment provider along with the full <a href="/constructor/invoice">invoice</a>. +The payment form also contains info about previously saved payment credentials and order information (name, phone number, email, shipping address & so on).</p> +<p>The full <a href="/constructor/invoice">invoice</a> contains info about the information required for the order, the price and the currency, and whether this is a <code>test</code> order.</p> +<h4><a class="anchor" href="#23-verifying-information" id="23-verifying-information" name="23-verifying-information"><i class="anchor-icon"></i></a>2.3 Verifying information</h4> +<pre><code><a href='/constructor/invoice'>invoice</a>#cd886e0 flags:<a href='/type/%23'>#</a> test:flags.0?<a href='/constructor/true'>true</a> name_requested:flags.1?<a href='/constructor/true'>true</a> phone_requested:flags.2?<a href='/constructor/true'>true</a> email_requested:flags.3?<a href='/constructor/true'>true</a> shipping_address_requested:flags.4?<a href='/constructor/true'>true</a> flexible:flags.5?<a href='/constructor/true'>true</a> phone_to_provider:flags.6?<a href='/constructor/true'>true</a> email_to_provider:flags.7?<a href='/constructor/true'>true</a> currency:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> max_tip_amount:flags.8?<a href='/type/long'>long</a> suggested_tip_amounts:flags.8?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/Invoice'>Invoice</a>; + +<a href='/constructor/postAddress'>postAddress</a>#1e8caaeb street_line1:<a href='/type/string'>string</a> street_line2:<a href='/type/string'>string</a> city:<a href='/type/string'>string</a> state:<a href='/type/string'>string</a> country_iso2:<a href='/type/string'>string</a> post_code:<a href='/type/string'>string</a> = <a href='/type/PostAddress'>PostAddress</a>; + +<a href='/constructor/paymentRequestedInfo'>paymentRequestedInfo</a>#909c3f94 flags:<a href='/type/%23'>#</a> name:flags.0?<a href='/type/string'>string</a> phone:flags.1?<a href='/type/string'>string</a> email:flags.2?<a href='/type/string'>string</a> shipping_address:flags.3?<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a>; + +<a href='/constructor/payments.validatedRequestedInfo'>payments.validatedRequestedInfo</a>#d1451883 flags:<a href='/type/%23'>#</a> id:flags.0?<a href='/type/string'>string</a> shipping_options:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/ShippingOption'>ShippingOption</a>> = <a href='/type/payments.ValidatedRequestedInfo'>payments.ValidatedRequestedInfo</a>; + +---functions--- + +<a href='/method/payments.validateRequestedInfo'>payments.validateRequestedInfo</a>#db103170 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> info:<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> = <a href='/type/payments.ValidatedRequestedInfo'>payments.ValidatedRequestedInfo</a>;</code></pre> +<p>If any data at all is requested by the <a href="/constructor/invoice"><strong>invoice</strong></a> (<code>name_requested</code>, <code>phone_requested</code>, <code>email_requested</code>, <code>shipping_address_requested</code>), the user must call <a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a>, providing the required data (as usual, <code>msg_id</code> is the ID of the invoice message). +The user can choose to save order information for future use by setting the <code>save</code> flag. +Data can be autofilled as described in <a href="#2-3-1-autofill">autofill</a>.</p> +<p>If no errors are found in the submitted info, the <a href="/constructor/payments.ValidatedRequestedInfo">response</a> of the method will contain an <code>id</code> flag, to be used later to complete the payment.</p> +<p>If the <code>flexible</code> flag of the invoice is set, calling the <a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a> method will send a <a href="/constructor/updateBotShippingQuery">shipping query update</a> to the bot, to which the bot will reply with the available shipping options for the specified address <a href="#2-4-select-delivery-option">as described here »</a>. +The return value in this case will also contain a <code>shipping_options</code> field with the available shipping options.</p> +<p>If any errors are found in the submmitted data, a <a href="/constructor/updateServiceNotification">service notification</a> will be sent to the user, with a description of the error from the bot.</p> +<h4><a class="anchor" href="#231-autofill" id="231-autofill" name="231-autofill"><i class="anchor-icon"></i></a>2.3.1 Autofill</h4> +<pre><code><a href='/constructor/payments.savedInfo'>payments.savedInfo</a>#fb8fe43c flags:<a href='/type/%23'>#</a> has_saved_credentials:flags.1?<a href='/constructor/true'>true</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> = <a href='/type/payments.SavedInfo'>payments.SavedInfo</a>; + +---functions--- + +<a href='/method/payments.getSavedInfo'>payments.getSavedInfo</a>#227d824b = <a href='/type/payments.SavedInfo'>payments.SavedInfo</a>; +<a href='/method/payments.clearSavedInfo'>payments.clearSavedInfo</a>#d83d70c1 flags:<a href='/type/%23'>#</a> credentials:flags.0?<a href='/constructor/true'>true</a> info:flags.1?<a href='/constructor/true'>true</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>The requested fields can be autofilled with the info provided in the <code>saved_info</code> field of the <a href="/constructor/payments.paymentForm">payment form</a>, or with the info fetched manually using <a href="/method/payments.getSavedInfo">payments.getSavedInfo</a>.</p> +<p>Saved order information can also be cleared using <a href="/method/payments.clearSavedInfo">payments.clearSavedInfo</a>.</p> +<h4><a class="anchor" href="#24-select-delivery-option" id="24-select-delivery-option" name="24-select-delivery-option"><i class="anchor-icon"></i></a>2.4 Select delivery option</h4> +<pre><code><a href='/constructor/labeledPrice'>labeledPrice</a>#cb296bf8 label:<a href='/type/string'>string</a> amount:<a href='/type/long'>long</a> = <a href='/type/LabeledPrice'>LabeledPrice</a>; + +<a href='/constructor/shippingOption'>shippingOption</a>#b6213cdf id:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> prices:<a href='/type/Vector%20t'>Vector</a><<a href='/type/LabeledPrice'>LabeledPrice</a>> = <a href='/type/ShippingOption'>ShippingOption</a>; + +<a href='/constructor/updateBotShippingQuery'>updateBotShippingQuery</a>#b5aefd7d query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> payload:<a href='/type/bytes'>bytes</a> shipping_address:<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.setBotShippingResults'>messages.setBotShippingResults</a>#e5f672fa flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> error:flags.0?<a href='/type/string'>string</a> shipping_options:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/ShippingOption'>ShippingOption</a>> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>If a shipping address was requested and the bot included the parameter <code>flexible</code>, when the user <a href="#2-3-verifying-information">validates order information</a> the Telegram API will send an <a href="/constructor/updateBotShippingQuery">updateBotShippingQuery</a> to the bot. +The bot must respond using <a href="/method/messages.setBotShippingResults">messages.setBotShippingResults</a> either with a list of possible delivery options and the relevant delivery prices, or with an error (for example, if delivery to the specified address is not possible).</p> +<p>The returned shipping options or the shipping error will be returned to the user while <a href="#2-3-verifying-information">validating order information</a>.</p> +<h3><a class="anchor" href="#3-payment" id="3-payment" name="3-payment"><i class="anchor-icon"></i></a>3. Payment</h3> +<pre><code><a href='/constructor/inputPaymentCredentialsSaved'>inputPaymentCredentialsSaved</a>#c10eb2cf id:<a href='/type/string'>string</a> tmp_password:<a href='/type/bytes'>bytes</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentialsApplePay'>inputPaymentCredentialsApplePay</a>#aa1c39f payment_data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentialsGooglePay'>inputPaymentCredentialsGooglePay</a>#8ac32801 payment_token:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<h4><a class="anchor" href="#31-web-payment" id="31-web-payment" name="31-web-payment"><i class="anchor-icon"></i></a>3.1 Web payment</h4> +<pre><code><a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<p>Typically, payment takes place by opening the <code>url</code> in the specified <a href="/constructor/payments.paymentForm">payment form</a>, which leads to a payment form on the website of the payment gateway. +Once the user finishes entering their payment credentials, a <a href="/api/web-events"><code>payment_form_submit</code> web event</a> is generated by the payment gateway, containing <code>data</code> and <code>title</code> JSON fields.</p> +<p>The <code>title</code> is used by the client app to represent the payment credentials (typically a censored version of credit card information). +The <code>data</code> is used to generate an <a href="/constructor/inputPaymentCredentials">inputPaymentCredentials</a> constructor. +Eventually, you can set the <code>save</code> flag to save the credit card info for future use, only if <a href="/api/srp">2FA</a> is enabled.</p> +<p>Telegram <strong>does not</strong> have access to your card information. Credit card details will be handled only by the payment system.</p> +<h4><a class="anchor" href="#32-native-payment" id="32-native-payment" name="32-native-payment"><i class="anchor-icon"></i></a>3.2 Native payment</h4> +<pre><code><a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<p>Most telegram apps support working natively with the native APIs of some payment providers, without opening the website of the payment and receiving a JS event.</p> +<p>This is done using the JSON <code>native_params</code> parameters field of the <a href="/constructor/payments.paymentForm">payments.paymentForm</a> constructor, which contains an object, which can contain one or more of the following fields:</p> +<ul> +<li><code>publishable_key</code>: Stripe API publishable key</li> +<li><code>apple_pay_merchant_id</code>: Apple Pay merchant ID</li> +<li><code>android_pay_public_key</code>: Android Pay public key</li> +<li><code>android_pay_bgcolor</code>: Android Pay form background color</li> +<li><code>android_pay_inverse</code>: Whether to use the dark theme in the Android Pay form</li> +<li><code>need_country</code>: True, if the user country must be provided,</li> +<li><code>need_zip</code>: True, if the user ZIP/postal code must be provided,</li> +<li><code>need_cardholder_name</code>: True, if the cardholder name must be provided</li> +</ul> +<p>The payment gateway to use is decided based on the value of the <code>native_provider</code> field.</p> +<h5><a class="anchor" href="#321-stripe" id="321-stripe" name="321-stripe"><i class="anchor-icon"></i></a>3.2.1 Stripe</h5> +<pre><code><a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>;</code></pre> +<p>If the <code>native_provider</code> field is set and equal to <code>stripe</code>, the client can make use of the <a href="https://stripe.com/docs/api/tokens/object">native Stripe token APIs</a> with the <code>publishable_key</code> from the <code>native_params</code> to add a payment method to Stripe, and then use the token <code>type</code> and <code>id</code> to generate a JSON object:</p> +<pre><code>{"type":"token.type", "id":"token.id"}"</code></pre> +<p>The generated JSON object can then be passed to the <code>data</code> field of the <a href="/constructor/inputPaymentCredentials">inputPaymentCredentials</a>. +Eventually, you can set the <code>save</code> flag to save the credit card info for future use, only if <a href="/api/srp">2FA</a> is enabled.</p> +<p>Telegram <strong>does not</strong> have access to your card information. Credit card details will be handled only by the payment system.</p> +<p>Example implementation: <a href="https://github.com/DrKLO/Telegram">Telegram for Android</a>.</p> +<h4><a class="anchor" href="#33-apple-pay" id="33-apple-pay" name="33-apple-pay"><i class="anchor-icon"></i></a>3.3 Apple pay</h4> +<pre><code><a href='/constructor/inputPaymentCredentialsApplePay'>inputPaymentCredentialsApplePay</a>#aa1c39f payment_data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>;</code></pre> +<p>On iOS devices, Apple Pay can be used to generate payment data, which is then sent using the <a href="/constructor/inputPaymentCredentialsApplePay">inputPaymentCredentialsApplePay</a> constructor.</p> +<p>Example implementation: <a href="https://github.com/TelegramMessenger/Telegram-iOS/">Telegram for iOS</a>.</p> +<h4><a class="anchor" href="#34-android-pay" id="34-android-pay" name="34-android-pay"><i class="anchor-icon"></i></a>3.4 Android pay</h4> +<pre><code><a href='/constructor/inputPaymentCredentialsGooglePay'>inputPaymentCredentialsGooglePay</a>#8ac32801 payment_token:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>;</code></pre> +<p>On Android devices, Google Pay can be used to generate payment data, which is then sent using the <a href="/constructor/inputPaymentCredentialsApplePay">inputPaymentCredentialsGooglePay</a> constructor.</p> +<p>Example implementation: <a href="https://github.com/DrKLO/Telegram/blob/ff5735503e068a6f1cada09b977f633df7caf98d/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java">Telegram for Android</a>.</p> +<h4><a class="anchor" href="#35-using-saved-payment-credentials" id="35-using-saved-payment-credentials" name="35-using-saved-payment-credentials"><i class="anchor-icon"></i></a>3.5 Using saved payment credentials</h4> +<pre><code><a href='/constructor/inputPaymentCredentialsSaved'>inputPaymentCredentialsSaved</a>#c10eb2cf id:<a href='/type/string'>string</a> tmp_password:<a href='/type/bytes'>bytes</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/paymentSavedCredentialsCard'>paymentSavedCredentialsCard</a>#cdc27a1f id:<a href='/type/string'>string</a> title:<a href='/type/string'>string</a> = <a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a>; + +<a href='/constructor/payments.paymentForm'>payments.paymentForm</a>#1694761b flags:<a href='/type/%23'>#</a> can_save_credentials:flags.2?<a href='/constructor/true'>true</a> password_missing:flags.3?<a href='/constructor/true'>true</a> form_id:<a href='/type/long'>long</a> bot_id:<a href='/type/long'>long</a> invoice:<a href='/type/Invoice'>Invoice</a> provider_id:<a href='/type/long'>long</a> url:<a href='/type/string'>string</a> native_provider:flags.4?<a href='/type/string'>string</a> native_params:flags.4?<a href='/type/DataJSON'>DataJSON</a> saved_info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> saved_credentials:flags.1?<a href='/type/PaymentSavedCredentials'>PaymentSavedCredentials</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentForm'>payments.PaymentForm</a>; + +<a href='/constructor/account.tmpPassword'>account.tmpPassword</a>#db64fd34 tmp_password:<a href='/type/bytes'>bytes</a> valid_until:<a href='/type/int'>int</a> = <a href='/type/account.TmpPassword'>account.TmpPassword</a>; + +---functions--- + +<a href='/method/account.getTmpPassword'>account.getTmpPassword</a>#449e0b51 password:<a href='/type/InputCheckPasswordSRP'>InputCheckPasswordSRP</a> period:<a href='/type/int'>int</a> = <a href='/type/account.TmpPassword'>account.TmpPassword</a>;</code></pre> +<p>To reuse saved payment methods, the <code>saved_credentials</code> field of the <a href="/constructor/payments.paymentForm">payment form</a> is used. +The <code>title</code> of the <a href="/constructor/paymentSavedCredentialsCard">paymentSavedCredentialsCard</a> can be used to preview a censored version of credit card info. +The <code>id</code> field is provided by the payment provider directly to the Telegram servers when saving the payment method, and identifies the payment method. +Full credit card info <strong>is not</strong> saved on Telegram Servers, and cannot be fetched by the user.</p> +<p>In order to <strong>use</strong> the saved payment method, <a href="/api/srp">2FA</a> must be enabled: the user must verify their identity by entering their <a href="/api/srp">2FA</a> password, which is then used as described in the <a href="/api/srp">SRP docs</a> to generate SRP parameters which must be passed to <a href="/method/account.getTmpPassword">account.getTmpPassword</a>.</p> +<p>The generated temporary password can then be used to make payments using the saved credentials using the <a href="/constructor/inputPaymentCredentialsSaved">inputPaymentCredentialsSaved</a> constructor.</p> +<ul> +<li>The <code>id</code> field is the <a href="/constructor/paymentSavedCredentialsCard">paymentSavedCredentialsCard</a> <code>id</code>.</li> +<li>The <code>tmp_password</code> is the temporary payment password generated by the server, if the user provided a correct <a href="/api/srp">2FA password</a>.</li> +</ul> +<p>Example implementation: <a href="https://github.com/DrKLO/Telegram">Telegram for Android</a>.</p> +<h3><a class="anchor" href="#4-pre-checkout" id="4-pre-checkout" name="4-pre-checkout"><i class="anchor-icon"></i></a>4. Pre-Checkout</h3> +<pre><code><a href='/constructor/inputPaymentCredentialsSaved'>inputPaymentCredentialsSaved</a>#c10eb2cf id:<a href='/type/string'>string</a> tmp_password:<a href='/type/bytes'>bytes</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentials'>inputPaymentCredentials</a>#3417d728 flags:<a href='/type/%23'>#</a> save:flags.0?<a href='/constructor/true'>true</a> data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentialsApplePay'>inputPaymentCredentialsApplePay</a>#aa1c39f payment_data:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; +<a href='/constructor/inputPaymentCredentialsGooglePay'>inputPaymentCredentialsGooglePay</a>#8ac32801 payment_token:<a href='/type/DataJSON'>DataJSON</a> = <a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a>; + +<a href='/constructor/payments.paymentResult'>payments.paymentResult</a>#4e5f810d updates:<a href='/type/Updates'>Updates</a> = <a href='/type/payments.PaymentResult'>payments.PaymentResult</a>; +<a href='/constructor/payments.paymentVerificationNeeded'>payments.paymentVerificationNeeded</a>#d8411139 url:<a href='/type/string'>string</a> = <a href='/type/payments.PaymentResult'>payments.PaymentResult</a>; + +---functions--- + +<a href='/method/payments.sendPaymentForm'>payments.sendPaymentForm</a>#30c3bc9d flags:<a href='/type/%23'>#</a> form_id:<a href='/type/long'>long</a> peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> requested_info_id:flags.0?<a href='/type/string'>string</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> credentials:<a href='/type/InputPaymentCredentials'>InputPaymentCredentials</a> tip_amount:flags.2?<a href='/type/long'>long</a> = <a href='/type/payments.PaymentResult'>payments.PaymentResult</a>;</code></pre> +<p>After <a href="#2-3-verifying-information">verifying order information</a>, the final step for the client is to call <a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a>, with the following parameters:</p> +<ul> +<li>The <code>msg_id</code> is set to the ID of the invoice message</li> +<li><code>requested_info_id</code> is set to the <code>id</code> of the <a href="#2-3-verifying-information">verified order information</a>, if it was requested</li> +<li><code>shipping_option_id</code> is set to the <a href="#2-5-select-delivery-option">selected delivery option</a>, if shipping was requested.</li> +<li><code>credentials</code> are the payment credentials generated by the payment provider, required to complete the order.</li> +</ul> +<p>Payment method info can also be saved to the Telegram Servers and reused, by setting the <code>save</code> flag of <a href="/constructor/inputPaymentCredentials">inputPaymentCredentials</a> when sending the form. +This is only possible on accounts with <a href="/api/srp">2FA</a> enabled.</p> +<p>The bot then <a href="#4-1-receiving-pre-checkout-query">replies to the received precheckout query</a>, finally the user <a href="#5-checkout">proceeds to checkout</a>.</p> +<p>Please note that if the result of the method is a <a href="/constructor/payments.paymentVerificationNeeded">payments.paymentVerificationNeeded</a>, before <a href="#5-checkout">proceeding to checkout</a> the payment provider requires the user to verify his identity by opening the provided <code>url</code> and following instructions. +Once the user finishes working with the webpage, the client can <a href="#5-checkout">proceed to checkout</a>.</p> +<p>Eventual errors are returned in the form of RPC errors, with the description of the error by the bot contained in <a href="/constructor/updateServiceNotification">service updates</a>.</p> +<h4><a class="anchor" href="#41-receiving-pre-checkout-query" id="41-receiving-pre-checkout-query" name="41-receiving-pre-checkout-query"><i class="anchor-icon"></i></a>4.1 Receiving pre-checkout query</h4> +<pre><code><a href='/constructor/paymentRequestedInfo'>paymentRequestedInfo</a>#909c3f94 flags:<a href='/type/%23'>#</a> name:flags.0?<a href='/type/string'>string</a> phone:flags.1?<a href='/type/string'>string</a> email:flags.2?<a href='/type/string'>string</a> shipping_address:flags.3?<a href='/type/PostAddress'>PostAddress</a> = <a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a>; + +<a href='/constructor/updateBotPrecheckoutQuery'>updateBotPrecheckoutQuery</a>#8caa9a96 flags:<a href='/type/%23'>#</a> query_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> payload:<a href='/type/bytes'>bytes</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.setBotPrecheckoutResults'>messages.setBotPrecheckoutResults</a>#9c2dd95 flags:<a href='/type/%23'>#</a> success:flags.1?<a href='/constructor/true'>true</a> query_id:<a href='/type/long'>long</a> error:flags.0?<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>The user enters their payment information as described above and presses the final pay button. +At this moment the Telegram API sends an <a href="/constructor/updateBotPrecheckoutQuery">updateBotPrecheckoutQuery</a> constructor that contains all the available information about the order to the bot. +The bot must reply using <a href="/method/messages.setBotPrecheckoutResults">messages.setBotPrecheckoutResults</a> <strong>within 10 seconds</strong> after receiving this update or the transaction is canceled.</p> +<p>The bot may return an error if it can‘t process the order for any reason. We highly recommend specifying a reason for failure to complete the order in human readable form (e.g. "Sorry, we’re all out of rubber ducks! Would you be interested in a steel bear instead?"). Telegram will display this reason to the user.</p> +<h3><a class="anchor" href="#5-checkout" id="5-checkout" name="5-checkout"><i class="anchor-icon"></i></a>5. Checkout</h3> +<pre><code><a href='/constructor/keyboardButtonBuy'>keyboardButtonBuy</a>#afd93fbb text:<a href='/type/string'>string</a> = <a href='/type/KeyboardButton'>KeyboardButton</a>; + +<a href='/constructor/keyboardButtonRow'>keyboardButtonRow</a>#77608b83 buttons:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButton'>KeyboardButton</a>> = <a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>; +<a href='/constructor/replyInlineMarkup'>replyInlineMarkup</a>#48a30254 rows:<a href='/type/Vector%20t'>Vector</a><<a href='/type/KeyboardButtonRow'>KeyboardButtonRow</a>> = <a href='/type/ReplyMarkup'>ReplyMarkup</a>; + +<a href='/constructor/messageMediaInvoice'>messageMediaInvoice</a>#84551347 flags:<a href='/type/%23'>#</a> shipping_address_requested:flags.1?<a href='/constructor/true'>true</a> test:flags.3?<a href='/constructor/true'>true</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.0?<a href='/type/WebDocument'>WebDocument</a> receipt_msg_id:flags.2?<a href='/type/int'>int</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> start_param:<a href='/type/string'>string</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updateNewMessage'>updateNewMessage</a>#1f2b0afd message:<a href='/type/Message'>Message</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; + +<a href='/constructor/payments.paymentReceipt'>payments.paymentReceipt</a>#70c4fe03 flags:<a href='/type/%23'>#</a> date:<a href='/type/int'>int</a> bot_id:<a href='/type/long'>long</a> provider_id:<a href='/type/long'>long</a> title:<a href='/type/string'>string</a> description:<a href='/type/string'>string</a> photo:flags.2?<a href='/type/WebDocument'>WebDocument</a> invoice:<a href='/type/Invoice'>Invoice</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping:flags.1?<a href='/type/ShippingOption'>ShippingOption</a> tip_amount:flags.3?<a href='/type/long'>long</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> credentials_title:<a href='/type/string'>string</a> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/payments.PaymentReceipt'>payments.PaymentReceipt</a>; + +---functions--- + +<a href='/method/payments.getPaymentReceipt'>payments.getPaymentReceipt</a>#2478d1cc peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/payments.PaymentReceipt'>payments.PaymentReceipt</a>;</code></pre> +<p>In case the bot confirms the order, Telegram requests the payment provider to complete the transaction. If the payment information was entered correctly and the payment goes through, the Telegram API will modify the invoice message and send a service message as described below. Once your bot receives this message, it should proceed with delivering the goods or services purchased by the user.</p> +<p>If all is OK, the user receives a <a href="/constructor/payments.paymentResult">payments.paymentResult</a> in reply to the <a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a> query, containing info about the updated invoice message in the form of an <a href="/constructor/updateEditMessage">updateEditMessage</a>.</p> +<p>The invoice message will be updated as follows: the attached <a href="/constructor/messageMediaInvoice">messageMediaInvoice</a> will now have a <code>receipt_msg_id</code> field. +Clients should treat invoice messages with a <code>receipt_msg_id</code> field as receipt messages, <strong>locally</strong> modifying the label of the <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button to a localized version of the word <code>Receipt</code>. +From this point, clicking on the <code>Receipt</code> button should trigger a call to <a href="/method/payments.getPaymentReceipt">payments.getPaymentReceipt</a>, providing the <code>receipt_msg_id</code> to the <code>msg_id</code> field, which will return info about the transaction.</p> +<p>The payment will also generate one service message of type <a href="/constructor/messageActionPaymentSent">messageActionPaymentSent</a> or <a href="/constructor/messageActionPaymentSentMe">messageActionPaymentSentMe</a>, replying to the invoice. +For bots, the service message will be of type <a href="/constructor/messageActionPaymentSentMe">messageActionPaymentSentMe</a>, for users it will be a <a href="/constructor/messageActionPaymentSent">messageActionPaymentSent</a>.</p> +<pre><code><a href='/constructor/messageActionPaymentSentMe'>messageActionPaymentSentMe</a>#8f31b327 flags:<a href='/type/%23'>#</a> currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> payload:<a href='/type/bytes'>bytes</a> info:flags.0?<a href='/type/PaymentRequestedInfo'>PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href='/type/string'>string</a> charge:<a href='/type/PaymentCharge'>PaymentCharge</a> = <a href='/type/MessageAction'>MessageAction</a>; +<a href='/constructor/messageActionPaymentSent'>messageActionPaymentSent</a>#40699cd0 currency:<a href='/type/string'>string</a> total_amount:<a href='/type/long'>long</a> = <a href='/type/MessageAction'>MessageAction</a>;</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/pfs.html b/data/corefork.telegram.org/api/pfs.html new file mode 100644 index 0000000000..e6e26fd151 --- /dev/null +++ b/data/corefork.telegram.org/api/pfs.html @@ -0,0 +1,138 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Perfect Forward Secrecy</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Binding temporary authorization key to permanent ones."> + <meta property="og:title" content="Perfect Forward Secrecy"> + <meta property="og:image" content="a2b9f721d645a85533"> + <meta property="og:description" content="Binding temporary authorization key to permanent ones."> + <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?215" 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/pfs" >Perfect Forward Secrecy</a></li></ul></div> + <h1 id="dev_page_title">Perfect Forward Secrecy</h1> + + <div id="dev_page_content"><h5><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h5> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="/api/end-to-end/pfs">Perfect Forward Secrecy in Secret Chats</a></li> +<li><a href="/mtproto/security_guidelines">Security guidelines for developers</a></li> +</ul> +<p></div></p> +<blockquote> +<p><em>This article is about Perfect Forward Secrecy in cloud chats, see also <a href="/api/end-to-end/pfs">PFS in Secret Chats</a>.</em></p> +</blockquote> +<hr> +<p>Telegram supports Perfect Forward Secrecy (PFS).</p> +<p>To make this possible, the client generates a permanent authorization key using <strong>p_q_inner_data</strong> and a temporary key using <strong>p_q_inner_data_temp</strong>. (See <a href="/mtproto/auth_key">Creating an Authorization Key</a> for more info.) These 2 operations may be done in parallel and even using the same connection. The client must save an <strong>expires_at</strong> unix timestamp <code>expires_at = time + expires_in</code>.</p> +<p><strong>Important</strong>: in order to achieve PFS, the client must <strong>never</strong> use the permanent auth_key_id directly. Every message that is sent to MTProto, must be encrypted by a <strong>temp_auth_key_id</strong>, that was bound to the <strong>perm_auth_key_id</strong>.</p> +<p>An unbound <strong>temp_auth_key_id</strong> may only be used with the following methods:</p> +<ul> +<li><a href="/method/auth.bindTempAuthKey">auth.bindTempAuthKey</a></li> +<li><a href="/method/help.getConfig">help.getConfig</a></li> +<li><a href="/method/help.getNearestDc">help.getNearestDc</a></li> +</ul> +<p>In order to bind a temporary authorization key to the permanent key the client creates a <a href="/method/auth.bindTempAuthKey#binding-message-contents">special binding message</a> and executes the <a href="/method/auth.bindTempAuthKey">auth.bindTempAuthKey</a> method using <strong>temp_auth_key</strong>. Once <strong>auth.bindTempAuthKey</strong> has been executed successfully, the client may signUp / signIn using other auth.* methods and continue using the API as usual; the client must also <a href="/api/invoking#saving-client-info">rewrite client info</a> using <a href="/method/initConnection">initConnection</a> after each binding. Each permanent key may only be bound to <strong>one</strong> temporary key at a time, binding a new temporary key overwrites the previous one.</p> +<p>Once the temporary key expires, the client needs to generate a new temporary key using <strong>p_q_inner_data_temp</strong>. Then it needs to re-bind that new temporary key to the initial permanent key. A new key can also be generated in advance, so that the client has a new key ready by the time the old one has expired.</p> +<p>For additional security, the client can store the temporary authorization key in RAM only and never save it in persistent storage.</p> +<p>A temporary authorization key may expire at any moment before <strong>expires_at</strong>, since such keys are also stored only in the RAM on the server-side. Be prepared to handle resulting MTProto errors correctly (non-existent auth_key_id results in a 404 error).</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/pin.html b/data/corefork.telegram.org/api/pin.html new file mode 100644 index 0000000000..501034af11 --- /dev/null +++ b/data/corefork.telegram.org/api/pin.html @@ -0,0 +1,149 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Pinned messages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows pinning multiple messages on top of a specific chat."> + <meta property="og:title" content="Pinned messages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows pinning multiple messages on top of a specific chat."> + <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?215" 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/pin" >Pinned messages</a></li></ul></div> + <h1 id="dev_page_title">Pinned messages</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows pinning multiple messages on top of a specific chat. </p> +<pre><code><a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updatePinnedMessages'>updatePinnedMessages</a>#ed85eab5 flags:<a href='/type/%23'>#</a> pinned:flags.0?<a href='/constructor/true'>true</a> peer:<a href='/type/Peer'>Peer</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updatePinnedChannelMessages'>updatePinnedChannelMessages</a>#5bb98608 flags:<a href='/type/%23'>#</a> pinned:flags.0?<a href='/constructor/true'>true</a> channel_id:<a href='/type/long'>long</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.updatePinnedMessage'>messages.updatePinnedMessage</a>#d2aaf7ec flags:<a href='/type/%23'>#</a> silent:flags.0?<a href='/constructor/true'>true</a> unpin:flags.1?<a href='/constructor/true'>true</a> pm_oneside:flags.2?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/method/messages.unpinAllMessages'>messages.unpinAllMessages</a>#f025bc8b peer:<a href='/type/InputPeer'>InputPeer</a> = <a href='/type/messages.AffectedHistory'>messages.AffectedHistory</a>; + +<a href='/method/messages.getMessages'>messages.getMessages</a>#63c66506 id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputMessage'>InputMessage</a>> = <a href='/type/messages.Messages'>messages.Messages</a>; +<a href='/method/channels.getMessages'>channels.getMessages</a>#ad8c9a23 channel:<a href='/type/InputChannel'>InputChannel</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputMessage'>InputMessage</a>> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre> +<p>The <a href="/method/messages.updatePinnedMessage">messages.updatePinnedMessage</a> method can be used to pin or unpin a specific message in an arbitrary chat.<br> +The <code>unpin</code> flags specifies whether to unpin or pin the message, and <code>pm_oneside</code> specifies whether the message should only be pinned on the local side of a one-to-one chat. </p> +<p><a href="/method/messages.unpinAllMessages">messages.unpinAllMessages</a> can be used to unpin all messages in a chat. </p> +<p>When (un)pinning messages, a <a href="/constructor/updatePinnedMessages">updatePinnedMessages</a> or <a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a> update will be emitted, containing IDs of pinned or unpinned messages. </p> +<p>Pinned messages will also have the will also have the <code>pinned</code> flag of <a href="/constructor/message">message</a> set.</p> +<h3><a class="anchor" href="#getting-pinned-messages" id="getting-pinned-messages" name="getting-pinned-messages"><i class="anchor-icon"></i></a>Getting pinned messages</h3> +<pre><code><a href='/constructor/userFull'>userFull</a>#d697ff05 flags:<a href='/type/%23'>#</a> blocked:flags.0?<a href='/constructor/true'>true</a> phone_calls_available:flags.4?<a href='/constructor/true'>true</a> phone_calls_private:flags.5?<a href='/constructor/true'>true</a> can_pin_message:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.12?<a href='/constructor/true'>true</a> video_calls_available:flags.13?<a href='/constructor/true'>true</a> user:<a href='/type/User'>User</a> about:flags.1?<a href='/type/string'>string</a> settings:<a href='/type/PeerSettings'>PeerSettings</a> profile_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> bot_info:flags.3?<a href='/type/BotInfo'>BotInfo</a> pinned_msg_id:flags.6?<a href='/type/int'>int</a> common_chats_count:<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> ttl_period:flags.14?<a href='/type/int'>int</a> theme_emoticon:flags.15?<a href='/type/string'>string</a> = <a href='/type/UserFull'>UserFull</a>; +<a href='/constructor/chatFull'>chatFull</a>#4dbdc099 flags:<a href='/type/%23'>#</a> can_set_username:flags.7?<a href='/constructor/true'>true</a> has_scheduled:flags.8?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants:<a href='/type/ChatParticipants'>ChatParticipants</a> chat_photo:flags.2?<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.13?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> pinned_msg_id:flags.6?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> call:flags.12?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.14?<a href='/type/int'>int</a> groupcall_default_join_as:flags.15?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.16?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; +<a href='/constructor/channelFull'>channelFull</a>#e9b27a17 flags:<a href='/type/%23'>#</a> can_view_participants:flags.3?<a href='/constructor/true'>true</a> can_set_username:flags.6?<a href='/constructor/true'>true</a> can_set_stickers:flags.7?<a href='/constructor/true'>true</a> hidden_prehistory:flags.10?<a href='/constructor/true'>true</a> can_set_location:flags.16?<a href='/constructor/true'>true</a> has_scheduled:flags.19?<a href='/constructor/true'>true</a> can_view_stats:flags.20?<a href='/constructor/true'>true</a> blocked:flags.22?<a href='/constructor/true'>true</a> id:<a href='/type/long'>long</a> about:<a href='/type/string'>string</a> participants_count:flags.0?<a href='/type/int'>int</a> admins_count:flags.1?<a href='/type/int'>int</a> kicked_count:flags.2?<a href='/type/int'>int</a> banned_count:flags.2?<a href='/type/int'>int</a> online_count:flags.13?<a href='/type/int'>int</a> read_inbox_max_id:<a href='/type/int'>int</a> read_outbox_max_id:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> chat_photo:<a href='/type/Photo'>Photo</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> exported_invite:flags.23?<a href='/type/ExportedChatInvite'>ExportedChatInvite</a> bot_info:<a href='/type/Vector%20t'>Vector</a><<a href='/type/BotInfo'>BotInfo</a>> migrated_from_chat_id:flags.4?<a href='/type/long'>long</a> migrated_from_max_id:flags.4?<a href='/type/int'>int</a> pinned_msg_id:flags.5?<a href='/type/int'>int</a> stickerset:flags.8?<a href='/type/StickerSet'>StickerSet</a> available_min_id:flags.9?<a href='/type/int'>int</a> folder_id:flags.11?<a href='/type/int'>int</a> linked_chat_id:flags.14?<a href='/type/long'>long</a> location:flags.15?<a href='/type/ChannelLocation'>ChannelLocation</a> slowmode_seconds:flags.17?<a href='/type/int'>int</a> slowmode_next_send_date:flags.18?<a href='/type/int'>int</a> stats_dc:flags.12?<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> call:flags.21?<a href='/type/InputGroupCall'>InputGroupCall</a> ttl_period:flags.24?<a href='/type/int'>int</a> pending_suggestions:flags.25?<a href='/type/Vector%20t'>Vector</a><<a href='/type/string'>string</a>> groupcall_default_join_as:flags.26?<a href='/type/Peer'>Peer</a> theme_emoticon:flags.27?<a href='/type/string'>string</a> = <a href='/type/ChatFull'>ChatFull</a>; + +<a href='/constructor/inputMessagesFilterPinned'>inputMessagesFilterPinned</a>#1bb00451 = <a href='/type/MessagesFilter'>MessagesFilter</a>; + +---functions--- + +<a href='/method/messages.search'>messages.search</a>#a0fda762 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre> +<p>The <code>pinned_msg_id</code> of <a href="/constructor/userFull">userFull</a>, <a href="/constructor/chatFull">chatFull</a>, <a href="/constructor/channelFull">channelFull</a> contains the ID of only the latest pinned message.<br> +To obtain a full list, use <a href="/method/messages.search">messages.search</a> with <a href="/constructor/inputMessagesFilterPinned">inputMessagesFilterPinned</a> filter. </p></div> + +</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/poll.html b/data/corefork.telegram.org/api/poll.html new file mode 100644 index 0000000000..63d157426f --- /dev/null +++ b/data/corefork.telegram.org/api/poll.html @@ -0,0 +1,199 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Poll</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels."> + <meta property="og:title" content="Poll"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels."> + <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?215" 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/poll" >Poll</a></li></ul></div> + <h1 id="dev_page_title">Poll</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels.</p> +<h3><a class="anchor" href="#sending-a-poll" id="sending-a-poll" name="sending-a-poll"><i class="anchor-icon"></i></a>Sending a poll</h3> +<pre><code><a href='/constructor/pollAnswer'>pollAnswer</a>#6ca9c2e9 text:<a href='/type/string'>string</a> option:<a href='/type/bytes'>bytes</a> = <a href='/type/PollAnswer'>PollAnswer</a>; + +<a href='/constructor/poll'>poll</a>#86e18161 id:<a href='/type/long'>long</a> flags:<a href='/type/%23'>#</a> closed:flags.0?<a href='/constructor/true'>true</a> public_voters:flags.1?<a href='/constructor/true'>true</a> multiple_choice:flags.2?<a href='/constructor/true'>true</a> quiz:flags.3?<a href='/constructor/true'>true</a> question:<a href='/type/string'>string</a> answers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswer'>PollAnswer</a>> close_period:flags.4?<a href='/type/int'>int</a> close_date:flags.5?<a href='/type/int'>int</a> = <a href='/type/Poll'>Poll</a>; + +<a href='/constructor/inputMediaPoll'>inputMediaPoll</a>#f94e5f1 flags:<a href='/type/%23'>#</a> poll:<a href='/type/Poll'>Poll</a> correct_answers:flags.0?<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> solution:flags.1?<a href='/type/string'>string</a> solution_entities:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/InputMedia'>InputMedia</a>; + +---functions--- + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>To send a poll in a chat, call <a href="/method/messages.sendMedia">messages.sendMedia</a>, providing an <a href="/constructor/inputMediaPoll">inputMediaPoll</a>:</p> +<ul> +<li> +<p><code>poll</code> is the actual <a href="/constructor/poll">poll constructor</a>, containing:</p> +<ul> +<li><code>question</code> - The poll title, aka the poll's title</li> +<li><code>answers</code> - A vector of possible answers (2-10), each with a visible title <code>text</code> , and a unique <code>option</code> identifier (1-100 bytes)</li> +<li><code>closed</code> - Whether the poll is closed</li> +<li><code>public_voters</code> - Whether cast votes are publicly visible to all users (non-anonymous poll) </li> +<li><code>multiple_choice</code> - Whether multiple options can be chosen as answer</li> +<li><code>quiz</code> - Whether this is a quiz with correct answer IDs specified in <code>inputMediaPoll.correct_answers</code></li> +<li><code>close_period</code> - Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with <code>close_date</code> .</li> +<li><code>close_date</code> - Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future; can't be used together with <code>close_period</code> . <br> +These last two parameters are exactly the same, except that one uses absolute, the other relative unixtime.</li> +</ul> +</li> +<li> +<p><code>correct_answers</code> - For quizes, option ID of the only correct answer</p> +</li> +<li> +<p><code>solution</code> - Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds</p> +</li> +<li> +<p><code>solution_entities</code> - <a href="/api/entities">Styled text message entities</a> for the <code>solution</code> explanation</p> +</li> +</ul> +<p>In order to prematurely close the poll, preventing further votes, use <a href="/method/messages.editMessage">messages.editMessage</a>, setting the <code>poll.closed</code> flag to true. </p> +<h3><a class="anchor" href="#voting-in-polls" id="voting-in-polls" name="voting-in-polls"><i class="anchor-icon"></i></a>Voting in polls</h3> +<pre><code><a href='/constructor/pollAnswerVoters'>pollAnswerVoters</a>#3b6ddad2 flags:<a href='/type/%23'>#</a> chosen:flags.0?<a href='/constructor/true'>true</a> correct:flags.1?<a href='/constructor/true'>true</a> option:<a href='/type/bytes'>bytes</a> voters:<a href='/type/int'>int</a> = <a href='/type/PollAnswerVoters'>PollAnswerVoters</a>; + +<a href='/constructor/pollResults'>pollResults</a>#dcb82ea3 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> results:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswerVoters'>PollAnswerVoters</a>> total_voters:flags.2?<a href='/type/int'>int</a> recent_voters:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> solution:flags.4?<a href='/type/string'>string</a> solution_entities:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/PollResults'>PollResults</a>; + +<a href='/constructor/poll'>poll</a>#86e18161 id:<a href='/type/long'>long</a> flags:<a href='/type/%23'>#</a> closed:flags.0?<a href='/constructor/true'>true</a> public_voters:flags.1?<a href='/constructor/true'>true</a> multiple_choice:flags.2?<a href='/constructor/true'>true</a> quiz:flags.3?<a href='/constructor/true'>true</a> question:<a href='/type/string'>string</a> answers:<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswer'>PollAnswer</a>> close_period:flags.4?<a href='/type/int'>int</a> close_date:flags.5?<a href='/type/int'>int</a> = <a href='/type/Poll'>Poll</a>; + +<a href='/constructor/messageMediaPoll'>messageMediaPoll</a>#4bd6e798 poll:<a href='/type/Poll'>Poll</a> results:<a href='/type/PollResults'>PollResults</a> = <a href='/type/MessageMedia'>MessageMedia</a>; + +<a href='/constructor/updateMessagePoll'>updateMessagePoll</a>#aca1657b flags:<a href='/type/%23'>#</a> poll_id:<a href='/type/long'>long</a> poll:flags.0?<a href='/type/Poll'>Poll</a> results:<a href='/type/PollResults'>PollResults</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.sendVote'>messages.sendVote</a>#10ea6184 peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>When receiving a <a href="/constructor/message">message</a> with a <a href="/constructor/messageMediaPoll">messageMediaPoll</a>, users can vote in it using <a href="/method/messages.sendVote">messages.sendVote</a>, specifying the chosen <code>option</code> identifiers. </p> +<p>The method will return an <a href="/constructor/updateMessagePoll">updateMessagePoll</a>, containing an updated <a href="/constructor/pollResults">pollResults</a> constructor, with the <code>chosen</code> flag set on the options we chose, and the <code>correct</code> flag set on the correct answers. </p> +<h3><a class="anchor" href="#getting-poll-votes" id="getting-poll-votes" name="getting-poll-votes"><i class="anchor-icon"></i></a>Getting poll votes</h3> +<pre><code><a href='/constructor/pollAnswerVoters'>pollAnswerVoters</a>#3b6ddad2 flags:<a href='/type/%23'>#</a> chosen:flags.0?<a href='/constructor/true'>true</a> correct:flags.1?<a href='/constructor/true'>true</a> option:<a href='/type/bytes'>bytes</a> voters:<a href='/type/int'>int</a> = <a href='/type/PollAnswerVoters'>PollAnswerVoters</a>; + +<a href='/constructor/pollResults'>pollResults</a>#dcb82ea3 flags:<a href='/type/%23'>#</a> min:flags.0?<a href='/constructor/true'>true</a> results:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/PollAnswerVoters'>PollAnswerVoters</a>> total_voters:flags.2?<a href='/type/int'>int</a> recent_voters:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> solution:flags.4?<a href='/type/string'>string</a> solution_entities:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> = <a href='/type/PollResults'>PollResults</a>; + +<a href='/constructor/updateMessagePoll'>updateMessagePoll</a>#aca1657b flags:<a href='/type/%23'>#</a> poll_id:<a href='/type/long'>long</a> poll:flags.0?<a href='/type/Poll'>Poll</a> results:<a href='/type/PollResults'>PollResults</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getPollResults'>messages.getPollResults</a>#73bb643b peer:<a href='/type/InputPeer'>InputPeer</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Regularly, if new users have voted in polls available to the user, they will receive an <a href="/constructor/updateMessagePoll">updateMessagePoll</a>, with updated <a href="/constructor/pollResults">pollResults</a>. </p> +<p>The same constructor can also be fetched manually using <a href="/method/messages.getPollResults">messages.getPollResults</a>.</p> +<h3><a class="anchor" href="#getting-poll-voters-in-non-anonymous-polls" id="getting-poll-voters-in-non-anonymous-polls" name="getting-poll-voters-in-non-anonymous-polls"><i class="anchor-icon"></i></a>Getting poll voters in non-anonymous polls</h3> +<pre><code><a href='/constructor/messageUserVote'>messageUserVote</a>#34d247b4 user_id:<a href='/type/long'>long</a> option:<a href='/type/bytes'>bytes</a> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>; +<a href='/constructor/messageUserVoteInputOption'>messageUserVoteInputOption</a>#3ca5b0ec user_id:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>; +<a href='/constructor/messageUserVoteMultiple'>messageUserVoteMultiple</a>#8a65e557 user_id:<a href='/type/long'>long</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> date:<a href='/type/int'>int</a> = <a href='/type/MessageUserVote'>MessageUserVote</a>; + +<a href='/constructor/messages.votesList'>messages.votesList</a>#823f649 flags:<a href='/type/%23'>#</a> count:<a href='/type/int'>int</a> votes:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageUserVote'>MessageUserVote</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> next_offset:flags.0?<a href='/type/string'>string</a> = <a href='/type/messages.VotesList'>messages.VotesList</a>; + +<a href='/constructor/updateMessagePollVote'>updateMessagePollVote</a>#106395c9 poll_id:<a href='/type/long'>long</a> user_id:<a href='/type/long'>long</a> options:<a href='/type/Vector%20t'>Vector</a><<a href='/type/bytes'>bytes</a>> qts:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getPollVotes'>messages.getPollVotes</a>#b86e380e flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> option:flags.0?<a href='/type/bytes'>bytes</a> offset:flags.1?<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/messages.VotesList'>messages.VotesList</a>; </code></pre> +<p><a href="/method/messages.getPollVotes">messages.getPollVotes</a> can be used to get poll results for non-anonymous polls, to see how each user voted for a poll option.<br> +Bots will also receive an <a href="/constructor/updateMessagePollVote">updateMessagePollVote</a> every time a user their answer in a non-anonymous poll. Bots receive new votes only in polls that were sent by the bot itself.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/push-updates.html b/data/corefork.telegram.org/api/push-updates.html new file mode 100644 index 0000000000..4e96c82bd4 --- /dev/null +++ b/data/corefork.telegram.org/api/push-updates.html @@ -0,0 +1,1009 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Handling PUSH-notifications</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to subscribe to and handle PUSH notifications "> + <meta property="og:title" content="Handling PUSH-notifications"> + <meta property="og:image" content="f171b7d56879c20c22"> + <meta property="og:description" content="How to subscribe to and handle PUSH notifications "> + <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?215" 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/push-updates" >Handling PUSH-notifications</a></li></ul></div> + <h1 id="dev_page_title">Handling PUSH-notifications</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<h3><a class="anchor" href="#configuring-the-application" id="configuring-the-application" name="configuring-the-application"><i class="anchor-icon"></i></a>Configuring the application</h3> +<p>To be able to send APNS notifications to Apple servers or GCM notifications to Google servers, application certificates (APNS) or an application key (GCM) must be specified in the <a href="/myapp">application settings</a>.</p> +<h3><a class="anchor" href="#subscribing-to-notifications" id="subscribing-to-notifications" name="subscribing-to-notifications"><i class="anchor-icon"></i></a>Subscribing to notifications</h3> +<p>To subscribe to notifications, the client must invoke the <a href="/method/account.registerDevice">account.registerDevice</a> query, passing in <strong>token_type</strong> and <strong>token</strong> as parameters that identify the current device. It is useful to repeat this query at least once every 24 hours or when restarting the application. Use <a href="/method/account.unregisterDevice">account.unregisterDevice</a> to unsubscribe.</p> +<p>The following modes are supported:</p> +<ul> +<li><code>1</code> - APNS (device token for apple push)</li> +<li><code>2</code> - FCM (firebase token for google firebase)</li> +<li><code>3</code> - MPNS (channel URI for microsoft push)</li> +<li><code>4</code> - Deprecated: Simple push (endpoint for firefox's simple push API)</li> +<li><code>5</code> - Ubuntu phone (token for ubuntu push)</li> +<li><code>6</code> - Blackberry (token for blackberry push)</li> +<li><code>7</code> - MTProto separate session</li> +<li><code>8</code> - WNS (windows push)</li> +<li><code>9</code> - APNS VoIP (token for apple push VoIP)</li> +<li><code>10</code> - Web push (web push, see below)</li> +<li><code>11</code> - MPNS VoIP (token for microsoft push VoIP)</li> +<li><code>12</code> - Tizen (token for tizen push)</li> +</ul> +<p>For <code>10</code> web push, the token must be a JSON-encoded object with the following keys:</p> +<ul> +<li><code>endpoint</code>: Absolute URL exposed by the push service where the application server can send push messages</li> +<li><code>keys</code>: P-256 elliptic curve Diffie-Hellman parameters in the following object<ul> +<li><code>p256dh</code>: Base64url-encoded P-256 elliptic curve Diffie-Hellman public key</li> +<li><code>auth</code>: Base64url-encoded authentication secret</li> +</ul> +</li> +</ul> +<h3><a class="anchor" href="#notification-encryption" id="notification-encryption" name="notification-encryption"><i class="anchor-icon"></i></a>Notification encryption</h3> +<p>For FCM and APNS VoIP, an optional encryption key used to encrypt push notifications can be passed to <a href="/method/account.registerDevice">account.registerDevice</a> (<code>secret</code>). This key (<code>auth_key</code>) is used to encrypt the payloads using <a href="/mtproto/description">MTProto v2</a>.</p> +<p>The FCM payload will be a JSON payload, containing a <code>p</code> field with the base64-encoded encrypted <a href="/mtproto/description">MTProto payload</a>. After decryption, the result will be a JSON object, prefixed by a 32-bit little-endian integer with the length of the JSON payload. As usual, make sure to follow all security checks as described in the <a href="/mtproto/description#important-checks">MTProto docs</a>.</p> +<p><a href="https://github.com/DrKLO/Telegram/blob/ff5735503e068a6f1cada09b977f633df7caf98d/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java#L563">Example implementation</a>.</p> +<p>As mentioned <a href="#subscribing-to-notifications">above</a>, payloads can also be encrypted using <a href="https://tools.ietf.org/html/rfc8291">P-256 Elliptic Curve Diffie-Hellman when using web push</a>.</p> +<h3><a class="anchor" href="#notification-structure" id="notification-structure" name="notification-structure"><i class="anchor-icon"></i></a>Notification structure</h3> +<p>An (<a href="#notification-encryption">optionally encrypted</a>) notification is provided as a JSON object in the following format:</p> +<pre><code>{ + "data": { + "loc_key": "CHAT_MESSAGE_CONTACT", + "loc_args": ["John Doe", "My magical group", "Contact Exchange"], + "user_id": 14124122, + "custom": { + "chat_id": 241233, + "msg_id": 123 + }, + "sound": "sound1.mp3", + } +}</code></pre> +<p>Each notification has several parameters that describe it.</p> +<h4><a class="anchor" href="#notification-type" id="notification-type" name="notification-type"><i class="anchor-icon"></i></a>Notification type</h4> +<p><strong>data.loc_key</strong> - A string literal in the form <code>/[A-Z_0-9]+/</code>, which summarizes the notification. For example, <code>CHAT_MESSAGE_TEXT</code>.</p> +<h4><a class="anchor" href="#notification-text-arguments" id="notification-text-arguments" name="notification-text-arguments"><i class="anchor-icon"></i></a>Notification text arguments</h4> +<p><strong>data.loc_args</strong> - A list or arguments which, when inserted into a template, produce a readable notification.</p> +<h4><a class="anchor" href="#custom-parameters" id="custom-parameters" name="custom-parameters"><i class="anchor-icon"></i></a>Custom parameters</h4> +<p><strong>data.custom</strong> - Parameters which are be passed into the application when a notification is opened.</p> +<h4><a class="anchor" href="#sound" id="sound" name="sound"><i class="anchor-icon"></i></a>Sound</h4> +<p><strong>data.sound</strong> - The name of an audio file to be played.</p> +<h4><a class="anchor" href="#user-id" id="user-id" name="user-id"><i class="anchor-icon"></i></a>User id</h4> +<p><strong>data.user_id</strong> - ID of the account to which the PUSH notification should be delivered, in case of clients with multiple accounts active and running.</p> +<h3><a class="anchor" href="#processing-notifications" id="processing-notifications" name="processing-notifications"><i class="anchor-icon"></i></a>Processing notifications</h3> +<p>In principle, <strong>data.loc_key</strong>, <strong>data.custom</strong>, and an Internet connection are sufficient to generate a notification. Obviously, if possible, when generating a visual notification you need not use all of the transmitted data and may rely on the information already stored on the client. But if a user or a chat is not cached locally, the values passed in loc_args may also be used. <strong>data.user_id</strong> is the ID of the account to which the PUSH notification should be delivered, in case of clients with multiple accounts active and running.</p> +<h3><a class="anchor" href="#service-notifications" id="service-notifications" name="service-notifications"><i class="anchor-icon"></i></a>Service notifications</h3> +<p>The following notifications can be used to update app settings.</p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Extra custom arguments</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>DC_UPDATE</td> +<td><strong>dc</strong> - number of the data-center<br><strong>addr</strong> - server address with port number in the format <code>111.112.113.114:443</code></td> +<td>In case the client gets this notification, it is necessary to add the received server address to the list of possible addresses. In case the address of the first DC was passed (<code>dc=1</code>), it is recommended to call it immediately using <a href="/method/help.getConfig">help.getConfig</a> to update dc-configuration.</td> +</tr> +<tr> +<td>MESSAGE_DELETED</td> +<td><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>messages</strong>: Comma-separated IDs of messages that were deleted</td> +<td>Messages were deleted, remove multiple notifications for this chat</td> +</tr> +<tr> +<td>READ_HISTORY</td> +<td><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>max_id</strong>: Maximum ID of read messages</td> +<td>Message history was read, remove multiple notifications for this chat</td> +</tr> +<tr> +<td>GEO_LIVE_PENDING</td> +<td> </td> +<td>Any of the live locations currently being shared should be updated</td> +</tr> +<tr> +<td>SESSION_REVOKE</td> +<td> </td> +<td>Logout and remove DB for specified session by <strong>data.user_id</strong>, only apply if coming from an <a href="#notification-encryption">MTProto-encrypted payload</a></td> +</tr> +<tr> +<td>MESSAGE_MUTED</td> +<td> </td> +<td>Sent rarely, every 10th message in chats or once per 15 sec in PM, to update badge or download messages</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#possible-notifications" id="possible-notifications" name="possible-notifications"><i class="anchor-icon"></i></a>Possible Notifications</h3> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Template example</th> +<th>Arguments</th> +<th>Extra custom arguments</th> +</tr> +</thead> +<tbody> +<tr> +<td>AUTH_REGION</td> +<td>New login from unrecognized device {1}, location: {2}</td> +<td>1. Device name<br>2. Location</td> +<td> </td> +</tr> +<tr> +<td>AUTH_UNKNOWN</td> +<td>New login from unrecognized device {1}</td> +<td>1. Device name</td> +<td> </td> +</tr> +<tr> +<td>CHANNEL_MESSAGES</td> +<td>{1} posted an album</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_AUDIO</td> +<td>{1} posted a voice message</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_CONTACT</td> +<td>{1} posted a contact {2}</td> +<td>1. Message author<br>2. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_DOC</td> +<td>{1} posted a file</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_DOCS</td> +<td>{1} posted {2} files</td> +<td>1. Channel name<br>2. Number of documents that were posted</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_FWDS</td> +<td>{1} posted {2} forwarded messages</td> +<td>1. Message author<br>2. Number of forwarded messages</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GAME</td> +<td>{1} invited you to play {2}</td> +<td>1. Message author<br>2. Game name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GAME_SCORE</td> +<td>{1} scored {3} in game {2}</td> +<td>1. User<br>2. Game name<br>3. Score</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GEO</td> +<td>{1} posted a location</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GEOLIVE</td> +<td>{1} posted a live location</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_GIF</td> +<td>{1} posted a GIF</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_NOTEXT</td> +<td>{1} posted a message</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_PHOTO</td> +<td>{1} posted a photo</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_PHOTOS</td> +<td>{1} posted {2} photos</td> +<td>1. Channel name<br>2. Number of photos that was sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_PLAYLIST</td> +<td>{1} posted {2} music files</td> +<td>1. Channel name<br>2. Number of audio files that were posted</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_POLL</td> +<td>{1} posted a poll {2}</td> +<td>1. Channel name<br>2. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_QUIZ</td> +<td>{1} posted a quiz {2}</td> +<td>1. Channel name<br>2. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_ROUND</td> +<td>{1} posted a video message</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_STICKER</td> +<td>{1} posted a {2} sticker</td> +<td>1. Channel name<br>2. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_TEXT</td> +<td>{1}: {2}</td> +<td>1. Channel name<br>2. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_VIDEO</td> +<td>{1} posted a video</td> +<td>1. Channel name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHANNEL_MESSAGE_VIDEOS</td> +<td>{1} posted {2} videos</td> +<td>1. Channel name<br>2. Number of videos that were posted</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>channel_id</strong>: <a href="/api/channel">Channel/supergroup</a> identifier (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_ADD_MEMBER</td> +<td>{1} invited {3} to the group {2}</td> +<td>1. Message author<br>2. Chat name<br>3. New participant name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_ADD_YOU</td> +<td>{1} invited you to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_CREATED</td> +<td>{1} invited you to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_DELETE_MEMBER</td> +<td>{1} removed {3} from the group {2}</td> +<td>1. Message author<br>2. Chat name<br>3. Dropped participant name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_DELETE_YOU</td> +<td>{1} removed you from the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_JOINED</td> +<td>{1} joined the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_LEFT</td> +<td>{1} left the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_MESSAGES</td> +<td>{1} sent an album to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>chat_from_id</strong>: Message author identifier<br><strong>chat_id</strong>: chat identifier<br><strong>mention</strong>: Whether the user was mentioned in the message</td> +</tr> +<tr> +<td>CHAT_MESSAGE_AUDIO</td> +<td>{1} sent a voice message to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_CONTACT</td> +<td>{1} shared a contact {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_DOC</td> +<td>{1} sent a file to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_DOCS</td> +<td>{1} sent {3} files to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of documents that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_FWDS</td> +<td>{1} forwarded {3} messages to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of messages that were forwarded</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GAME</td> +<td>{1} invited the group {2} to play {3}</td> +<td>1. User name<br>2. Group name<br>3. Game name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GAME_SCORE</td> +<td>{1} scored {4} in game {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Game name<br>4. Score</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GEO</td> +<td>{1} sent a location to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GEOLIVE</td> +<td>{1} shared a live location with the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_GIF</td> +<td>{1} sent a GIF to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_INVOICE</td> +<td>{1} sent an invoice to the group {2} for {3}</td> +<td>1. User name<br>2. Group name<br>3. Product name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_NOTEXT</td> +<td>{1} sent a message to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_PHOTO</td> +<td>{1} sent a photo to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_PHOTOS</td> +<td>{1} sent {3} photos to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of photos that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_PLAYLIST</td> +<td>{1} sent {3} music files to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of audio files that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_POLL</td> +<td>{1} sent a poll {3} to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_QUIZ</td> +<td>{1} sent a quiz {3} to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_ROUND</td> +<td>{1} sent a video message to the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_STICKER</td> +<td>{1} sent a {3} sticker to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_TEXT</td> +<td>{1} @ {2}: {3}</td> +<td>1. Message author<br>2. Chat name<br>3. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_VIDEO</td> +<td>{1} sent a video to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>CHAT_MESSAGE_VIDEOS</td> +<td>{1} sent {3} videos to the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Number of videos that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>chat_id</strong>: <a href="/api/channel">Chat</a> identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>CHAT_PHOTO_EDITED</td> +<td>{1} changed the group photo for {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_from_id</strong>: Message author identifier<br><strong>chat_id</strong>: chat identifier<br><strong>msg_id</strong>: ID of the message</td> +</tr> +<tr> +<td>CHAT_RETURNED</td> +<td>{1} returned to the group {2}</td> +<td>1. Message author<br>2. Chat name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_TITLE_EDITED</td> +<td>{1} renamed the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>chat_id</strong>: chat identifier</td> +</tr> +<tr> +<td>CHAT_VOICECHAT_END</td> +<td>{1} ended a voice chat in the group {2}</td> +<td>1. User name<br>2. Chat name</td> +<td> </td> +</tr> +<tr> +<td>CHAT_VOICECHAT_INVITE</td> +<td>{1} invited {3} to a voice chat in the group {2}</td> +<td>1. User name<br>2. Chat name<br>3. Invited users</td> +<td> </td> +</tr> +<tr> +<td>CHAT_VOICECHAT_INVITE_YOU</td> +<td>{1} invited you to a voice chat in the group {2}</td> +<td>1. User name<br>2. Chat name</td> +<td> </td> +</tr> +<tr> +<td>CHAT_VOICECHAT_START</td> +<td>{1} started a voice chat in the group {2}</td> +<td>1. User name<br>2. Chat name</td> +<td> </td> +</tr> +<tr> +<td>CONTACT_JOINED</td> +<td>{1} joined Telegram!</td> +<td>1. Contact name</td> +<td><strong>contact_id</strong>: contact identifier</td> +</tr> +<tr> +<td>ENCRYPTED_MESSAGE</td> +<td>You have a new message</td> +<td> </td> +<td><strong>encryption_id</strong>: secret chat identifier<br><strong>random_id</strong>: message identifier</td> +</tr> +<tr> +<td>ENCRYPTION_ACCEPT</td> +<td>You have a new message</td> +<td> </td> +<td><strong>encryption_id</strong>: secret chat identifier</td> +</tr> +<tr> +<td>ENCRYPTION_REQUEST</td> +<td>You have a new message</td> +<td> </td> +<td><strong>encryption_id</strong>: secret chat identifier</td> +</tr> +<tr> +<td>LOCKED_MESSAGE</td> +<td>You have a new message</td> +<td> </td> +<td> </td> +</tr> +<tr> +<td>MESSAGES</td> +<td>{1} sent you an album</td> +<td>1. User name</td> +<td><strong>from_id</strong>: author identifier</td> +</tr> +<tr> +<td>MESSAGE_ANNOUNCEMENT</td> +<td>{1}</td> +<td>1. Announcement</td> +<td><strong>announcement</strong>: Announcement: roughly equivalent to a message received from the service notifications (Telegram Notifications, id <code>777000</code>) user, but must be delivered via push notifications, without contacting the API.</td> +</tr> +<tr> +<td>MESSAGE_AUDIO</td> +<td>{1} sent you a voice message</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_CONTACT</td> +<td>{1} shared a contact {2} with you</td> +<td>1. User name<br>2. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_DOC</td> +<td>{1} sent you a file</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_DOCS</td> +<td>{1} sent you {2} files</td> +<td>1. User name<br>2. Number of documents that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>from_id</strong>: Author identifier (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>MESSAGE_FWDS</td> +<td>{1} forwarded you {2} messages</td> +<td>1. User name<br>2. Number of messages that were forwarded</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>from_id</strong>: Author identifier (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>MESSAGE_GAME</td> +<td>{1} invited you to play {2}</td> +<td>1. User name<br>2. Game name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_GAME_SCORE</td> +<td>{1} scored {3} in game {2}</td> +<td>1. User name<br>2. Game name<br>3. Score</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_GEO</td> +<td>{1} sent you a location</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_GEOLIVE</td> +<td>{1} sent you a live location</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_GIF</td> +<td>{1} sent you a GIF</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_INVOICE</td> +<td>{1} sent you an invoice for {2}</td> +<td>1. User name<br>2. Product</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_NOTEXT</td> +<td>{1} sent you a message</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_PHOTO</td> +<td>{1} sent you a photo</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_PHOTOS</td> +<td>{1} sent you {2} photos</td> +<td>1. User name<br>2. Number of photos that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>from_id</strong>: Author identifier (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>MESSAGE_PHOTO_SECRET</td> +<td>{1} sent you a self-destructing photo</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_PLAYLIST</td> +<td>{1} sent you {2} music files</td> +<td>1. User name<br>2. Number of audio files that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_POLL</td> +<td>{1} sent you a poll {2}</td> +<td>1. User name<br>2. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_QUIZ</td> +<td>{1} sent you a quiz {2}</td> +<td>1. User name<br>2. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_ROUND</td> +<td>{1} sent you a video message</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_SCREENSHOT</td> +<td>{1} took a screenshot</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_STICKER</td> +<td>{1} sent you a {2} sticker</td> +<td>1. User name<br>2. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_TEXT</td> +<td>{1}: {2}</td> +<td>1. Message author<br>2. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_VIDEO</td> +<td>{1} sent you a video</td> +<td>1. Message author</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>MESSAGE_VIDEOS</td> +<td>{1} sent you {2} videos</td> +<td>1. User name<br>2. Number of videos that were sent</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media (related to the first message)<br><strong>chat_from_id</strong>: Groups only, message author identifier (related to the first message)<br><strong>edit_date</strong>: When was the message last edited (related to the first message)<br><strong>from_id</strong>: Author identifier (related to the first message)<br><strong>mention</strong>: Whether the user was mentioned in the message (related to the first message)<br><strong>msg_id</strong>: ID of the message (related to the first message)<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued) (related to the first message)</td> +</tr> +<tr> +<td>MESSAGE_VIDEO_SECRET</td> +<td>{1} sent you a self-destructing video</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>scheduled</strong>: Whether this is a scheduled message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PHONE_CALL_MISSED</td> +<td>You missed a call from {1}</td> +<td>1. User name</td> +<td> </td> +</tr> +<tr> +<td>PHONE_CALL_REQUEST</td> +<td>{1} is calling you!</td> +<td>1. User name</td> +<td><strong>call_ah</strong>: Call access hash<br><strong>call_id</strong>: Call ID</td> +</tr> +<tr> +<td>PINNED_AUDIO</td> +<td>{1} pinned a voice message</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_AUDIO</td> +<td>{1} pinned a voice message in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_CONTACT</td> +<td>{1} pinned a contact {2}</td> +<td>1. User name<br>2. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_CONTACT</td> +<td>{1} pinned a contact {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Contact name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_DOC</td> +<td>{1} pinned a file</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_DOC</td> +<td>{1} pinned a file in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GAME</td> +<td>{1} pinned a game</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GAME</td> +<td>{1} pinned a game in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GAME_SCORE</td> +<td>{1} pinned a game score</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GAME_SCORE</td> +<td>{1} pinned a game score in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GEO</td> +<td>{1} pinned a map</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GEO</td> +<td>{1} pinned a map in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GEOLIVE</td> +<td>{1} pinned a live location</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GEOLIVE</td> +<td>{1} pinned a live location in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GIF</td> +<td>{1} pinned a GIF</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_GIF</td> +<td>{1} pinned a GIF in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_INVOICE</td> +<td>{1} pinned an invoice</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_INVOICE</td> +<td>{1} pinned an invoice in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_NOTEXT</td> +<td>{1} pinned a message</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_NOTEXT</td> +<td>{1} pinned a message in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_PHOTO</td> +<td>{1} pinned a photo</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_PHOTO</td> +<td>{1} pinned a photo in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_POLL</td> +<td>{1} pinned a poll {2}</td> +<td>1. User name<br>2. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_POLL</td> +<td>{1} pinned a poll {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Poll name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_QUIZ</td> +<td>{1} pinned a quiz {2}</td> +<td>1. User name<br>2. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_QUIZ</td> +<td>{1} pinned a quiz {3} in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Quiz name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_ROUND</td> +<td>{1} pinned a video message</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_ROUND</td> +<td>{1} pinned a video message in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_STICKER</td> +<td>{1} pinned a {2} sticker</td> +<td>1. User name<br>2. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_STICKER</td> +<td>{1} pinned a {3} sticker in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Sticker emoji</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_TEXT</td> +<td>{1} pinned "{2}"</td> +<td>1. User name<br>2. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_TEXT</td> +<td>{1} pinned "{3}" in the group {2}</td> +<td>1. User name<br>2. Group name<br>3. Message body</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_VIDEO</td> +<td>{1} pinned a video</td> +<td>1. User name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</td> +</tr> +<tr> +<td>PINNED_VIDEO</td> +<td>{1} pinned a video in the group {2}</td> +<td>1. User name<br>2. Group name</td> +<td><strong>attachb64</strong>: Base64-encoded version of the attached media<br><strong>channel_id</strong>: For <a href="/api/channel">channels and supergroups</a>, <a href="/api/channel">Channel/supergroup</a> identifier<br><strong>chat_from_id</strong>: Groups only, message author identifier<br><strong>chat_id</strong>: For <a href="/api/channel">chats</a>, <a href="/api/channel">Chat</a> identifier<br><strong>edit_date</strong>: When was the message last edited<br><strong>from_id</strong>: For PMs, Author identifier<br><strong>mention</strong>: Whether the user was mentioned in the message<br><strong>msg_id</strong>: ID of the message<br><strong>silent</strong>: Whether the message was posted silently (no notification should be issued)</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/qr-login.html b/data/corefork.telegram.org/api/qr-login.html new file mode 100644 index 0000000000..1371a834c2 --- /dev/null +++ b/data/corefork.telegram.org/api/qr-login.html @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Login via QR code</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="QR code login flow"> + <meta property="og:title" content="Login via QR code"> + <meta property="og:image" content=""> + <meta property="og:description" content="QR code login flow"> + <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?215" 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/qr-login" >Login via QR code</a></li></ul></div> + <h1 id="dev_page_title">Login via QR code</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><a href="https://en.wikipedia.org/wiki/QR_code">QR code</a> login flow.</p> +<p>Related TL schema:</p> +<pre><code><a href='/constructor/auth.loginToken'>auth.loginToken</a>#629f1980 expires:<a href='/type/int'>int</a> token:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>; +<a href='/constructor/auth.loginTokenMigrateTo'>auth.loginTokenMigrateTo</a>#68e9916 dc_id:<a href='/type/int'>int</a> token:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>; +<a href='/constructor/auth.loginTokenSuccess'>auth.loginTokenSuccess</a>#390d5c5e authorization:<a href='/type/auth.Authorization'>auth.Authorization</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>; + +<a href='/constructor/updateLoginToken'>updateLoginToken</a>#564fe691 = <a href='/type/Update'>Update</a>; + +<a href='/constructor/authorization'>authorization</a>#ad01d61d flags:<a href='/type/%23'>#</a> current:flags.0?<a href='/constructor/true'>true</a> official_app:flags.1?<a href='/constructor/true'>true</a> password_pending:flags.2?<a href='/constructor/true'>true</a> hash:<a href='/type/long'>long</a> device_model:<a href='/type/string'>string</a> platform:<a href='/type/string'>string</a> system_version:<a href='/type/string'>string</a> api_id:<a href='/type/int'>int</a> app_name:<a href='/type/string'>string</a> app_version:<a href='/type/string'>string</a> date_created:<a href='/type/int'>int</a> date_active:<a href='/type/int'>int</a> ip:<a href='/type/string'>string</a> country:<a href='/type/string'>string</a> region:<a href='/type/string'>string</a> = <a href='/type/Authorization'>Authorization</a>; + +---functions--- + +<a href='/method/auth.exportLoginToken'>auth.exportLoginToken</a>#b7e085fe api_id:<a href='/type/int'>int</a> api_hash:<a href='/type/string'>string</a> except_ids:<a href='/type/Vector%20t'>Vector</a><<a href='/type/long'>long</a>> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>; +<a href='/method/auth.acceptLoginToken'>auth.acceptLoginToken</a>#e894ad4d token:<a href='/type/bytes'>bytes</a> = <a href='/type/Authorization'>Authorization</a>; +<a href='/method/auth.importLoginToken'>auth.importLoginToken</a>#95ac5ce4 token:<a href='/type/bytes'>bytes</a> = <a href='/type/auth.LoginToken'>auth.LoginToken</a>;</code></pre> +<h3><a class="anchor" href="#exporting-a-login-token" id="exporting-a-login-token" name="exporting-a-login-token"><i class="anchor-icon"></i></a>Exporting a login token</h3> +<p>First of all, <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> must be called by the app that wants to log in to an existing Telegram account.<br> +The method will return an <a href="/constructor/auth.loginToken">auth.loginToken</a> constructor, containing a binary login <code>token</code> and an expiry date (usually 30 seconds). </p> +<p>The login <code>token</code> must be encoded using <a href="https://tools.ietf.org/html/rfc4648#section-5">base64url</a>, embedded in a <code>tg://login?token=base64encodedtoken</code> URL and shown in the form of a <a href="https://en.wikipedia.org/wiki/QR_code">QR code</a> to the user.<br> +After the expiration of the current QR code, the <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> method must be recalled and a new QR code must be generated automatically.</p> +<h3><a class="anchor" href="#accepting-a-login-token" id="accepting-a-login-token" name="accepting-a-login-token"><i class="anchor-icon"></i></a>Accepting a login token</h3> +<p>In order to log in, the QR code must be scanned and accepted by an already logged-in Telegram app using <a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</a>.<br> +The token must be extracted from the <code>tg://login</code> URI and <a href="https://tools.ietf.org/html/rfc4648#section-5">base64url-decoded</a> before using it in the method.</p> +<p>Possible <a href="/api/errors">errors</a> returned by the method are: </p> +<ul> +<li>400 - <code>AUTH_TOKEN_INVALID</code>, an invalid authorization token was provided</li> +<li>400 - <code>AUTH_TOKEN_EXPIRED</code>, the provided authorization token has expired and the updated QR-code must be re-scanned</li> +<li>400 - <code>AUTH_TOKEN_ALREADY_ACCEPTED</code>, the authorization token was already used</li> +</ul> +<p>The method will return an <a href="/constructor/authorization">authorization</a> object, containing info about the app and session that we just authorized.</p> +<h3><a class="anchor" href="#confirming-importing-the-login-token" id="confirming-importing-the-login-token" name="confirming-importing-the-login-token"><i class="anchor-icon"></i></a>Confirming (importing) the login token</h3> +<p>After the logged-in app calls <a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</a> and accepts the login token, the app that is trying to login will receive an <a href="/constructor/updateLoginToken">updateLoginToken</a> update, which should trigger a <strong>second</strong> call to the <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> method. </p> +<p>This second call should then return an <a href="/constructor/auth.loginTokenSuccess">auth.loginTokenSuccess</a> constructor, indicating <strong>successful login</strong>, essentially allowing further authorized interaction with the API.</p> +<p>If, however, there is a DC mismatch between the two apps, <a href="/constructor/auth.loginTokenMigrateTo">auth.loginTokenMigrateTo</a> is returned instead, to which the app that is trying to login should respond by calling <a href="/method/auth.importLoginToken">auth.importLoginToken</a> with the specified <code>token</code>, to the specified DC. </p> +<p>This call should then finally return a <a href="/constructor/auth.loginTokenSuccess">auth.loginTokenSuccess</a> constructor.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/recent-actions.html b/data/corefork.telegram.org/api/recent-actions.html new file mode 100644 index 0000000000..f3ca80fe01 --- /dev/null +++ b/data/corefork.telegram.org/api/recent-actions.html @@ -0,0 +1,154 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Admin log</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Both supergroups and channels offer a so-called [admin log](https://telegram.org/blog/admin-revolution), a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more."> + <meta property="og:title" content="Admin log"> + <meta property="og:image" content=""> + <meta property="og:description" content="Both supergroups and channels offer a so-called [admin log](https://telegram.org/blog/admin-revolution), a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more."> + <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?215" 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/recent-actions" >Admin log</a></li></ul></div> + <h1 id="dev_page_title">Admin log</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Both supergroups and channels offer a so-called <a href="https://telegram.org/blog/admin-revolution">admin log</a>, a log of recent relevant supergroup and channel actions, like the modification of group/channel settings or information on behalf of an admin, user kicks and bans, and more. </p> +<pre><code><a href='/constructor/channelAdminLogEventActionChangeTitle'>channelAdminLogEventActionChangeTitle</a>#e6dfb825 prev_value:<a href='/type/string'>string</a> new_value:<a href='/type/string'>string</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeAbout'>channelAdminLogEventActionChangeAbout</a>#55188a2e prev_value:<a href='/type/string'>string</a> new_value:<a href='/type/string'>string</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeUsername'>channelAdminLogEventActionChangeUsername</a>#6a4afc38 prev_value:<a href='/type/string'>string</a> new_value:<a href='/type/string'>string</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangePhoto'>channelAdminLogEventActionChangePhoto</a>#434bd2af prev_photo:<a href='/type/Photo'>Photo</a> new_photo:<a href='/type/Photo'>Photo</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionToggleInvites'>channelAdminLogEventActionToggleInvites</a>#1b7907ae new_value:<a href='/type/Bool'>Bool</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionToggleSignatures'>channelAdminLogEventActionToggleSignatures</a>#26ae0971 new_value:<a href='/type/Bool'>Bool</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionUpdatePinned'>channelAdminLogEventActionUpdatePinned</a>#e9e82c18 message:<a href='/type/Message'>Message</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionEditMessage'>channelAdminLogEventActionEditMessage</a>#709b2405 prev_message:<a href='/type/Message'>Message</a> new_message:<a href='/type/Message'>Message</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionDeleteMessage'>channelAdminLogEventActionDeleteMessage</a>#42e047bb message:<a href='/type/Message'>Message</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantJoin'>channelAdminLogEventActionParticipantJoin</a>#183040d3 = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantLeave'>channelAdminLogEventActionParticipantLeave</a>#f89777f2 = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantInvite'>channelAdminLogEventActionParticipantInvite</a>#e31c34d8 participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantToggleBan'>channelAdminLogEventActionParticipantToggleBan</a>#e6d83d7e prev_participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> new_participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionParticipantToggleAdmin'>channelAdminLogEventActionParticipantToggleAdmin</a>#d5676710 prev_participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> new_participant:<a href='/type/ChannelParticipant'>ChannelParticipant</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeStickerSet'>channelAdminLogEventActionChangeStickerSet</a>#b1c3caa7 prev_stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> new_stickerset:<a href='/type/InputStickerSet'>InputStickerSet</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionTogglePreHistoryHidden'>channelAdminLogEventActionTogglePreHistoryHidden</a>#5f5c95f1 new_value:<a href='/type/Bool'>Bool</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionDefaultBannedRights'>channelAdminLogEventActionDefaultBannedRights</a>#2df5fc0a prev_banned_rights:<a href='/type/ChatBannedRights'>ChatBannedRights</a> new_banned_rights:<a href='/type/ChatBannedRights'>ChatBannedRights</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionStopPoll'>channelAdminLogEventActionStopPoll</a>#8f079643 message:<a href='/type/Message'>Message</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeLinkedChat'>channelAdminLogEventActionChangeLinkedChat</a>#50c7ac8 prev_value:<a href='/type/long'>long</a> new_value:<a href='/type/long'>long</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionChangeLocation'>channelAdminLogEventActionChangeLocation</a>#e6b76ae prev_value:<a href='/type/ChannelLocation'>ChannelLocation</a> new_value:<a href='/type/ChannelLocation'>ChannelLocation</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; +<a href='/constructor/channelAdminLogEventActionToggleSlowMode'>channelAdminLogEventActionToggleSlowMode</a>#53909779 prev_value:<a href='/type/int'>int</a> new_value:<a href='/type/int'>int</a> = <a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a>; + +<a href='/constructor/channelAdminLogEvent'>channelAdminLogEvent</a>#1fad68cd id:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> action:<a href='/type/ChannelAdminLogEventAction'>ChannelAdminLogEventAction</a> = <a href='/type/ChannelAdminLogEvent'>ChannelAdminLogEvent</a>; + +<a href='/constructor/channels.adminLogResults'>channels.adminLogResults</a>#ed8af74d events:<a href='/type/Vector%20t'>Vector</a><<a href='/type/ChannelAdminLogEvent'>ChannelAdminLogEvent</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/channels.AdminLogResults'>channels.AdminLogResults</a>; + +<a href='/constructor/channelAdminLogEventsFilter'>channelAdminLogEventsFilter</a>#ea107ae4 flags:<a href='/type/%23'>#</a> join:flags.0?<a href='/constructor/true'>true</a> leave:flags.1?<a href='/constructor/true'>true</a> invite:flags.2?<a href='/constructor/true'>true</a> ban:flags.3?<a href='/constructor/true'>true</a> unban:flags.4?<a href='/constructor/true'>true</a> kick:flags.5?<a href='/constructor/true'>true</a> unkick:flags.6?<a href='/constructor/true'>true</a> promote:flags.7?<a href='/constructor/true'>true</a> demote:flags.8?<a href='/constructor/true'>true</a> info:flags.9?<a href='/constructor/true'>true</a> settings:flags.10?<a href='/constructor/true'>true</a> pinned:flags.11?<a href='/constructor/true'>true</a> edit:flags.12?<a href='/constructor/true'>true</a> delete:flags.13?<a href='/constructor/true'>true</a> group_call:flags.14?<a href='/constructor/true'>true</a> invites:flags.15?<a href='/constructor/true'>true</a> = <a href='/type/ChannelAdminLogEventsFilter'>ChannelAdminLogEventsFilter</a>; + +---functions--- + +<a href='/method/channels.getAdminLog'>channels.getAdminLog</a>#33ddf480 flags:<a href='/type/%23'>#</a> channel:<a href='/type/InputChannel'>InputChannel</a> q:<a href='/type/string'>string</a> events_filter:flags.0?<a href='/type/ChannelAdminLogEventsFilter'>ChannelAdminLogEventsFilter</a> admins:flags.1?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputUser'>InputUser</a>> max_id:<a href='/type/long'>long</a> min_id:<a href='/type/long'>long</a> limit:<a href='/type/int'>int</a> = <a href='/type/channels.AdminLogResults'>channels.AdminLogResults</a>;</code></pre> +<p><a href="/method/channels.getAdminLog">channels.getAdminLog</a> can be used to list recent admin activity.<br> +A <a href="/constructor/channelAdminLogEventsFilter">channelAdminLogEventsFilter</a> can be used to filter out actions of a certain type, and the <code>admins</code> field can be used to show only actions by certain admins.<br> +<code>q</code> can also be used to filter only logs matching a query string. </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/rights.html b/data/corefork.telegram.org/api/rights.html new file mode 100644 index 0000000000..603681a672 --- /dev/null +++ b/data/corefork.telegram.org/api/rights.html @@ -0,0 +1,133 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Admin, banned, default rights</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups."> + <meta property="og:title" content="Admin, banned, default rights"> + <meta property="og:image" content="d82fcde297bd0276c3"> + <meta property="og:description" content="How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups."> + <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?215" 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/rights" >Admin, banned, default rights</a></li></ul></div> + <h1 id="dev_page_title">Admin, banned, default rights</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><a href="/api/channel">Channels and supergroups</a> allow setting <a href="https://telegram.org/blog/permissions-groups-undo">granular permissions</a> both for admins and specific users. +<a href="/api/channel">Channels, supergroups and legacy groups</a> also allow setting global granular permissions for users.</p> +<p>They can be modified as follows:</p> +<h3><a class="anchor" href="#admin-rights" id="admin-rights" name="admin-rights"><i class="anchor-icon"></i></a>Admin rights</h3> +<p><a href="/method/channels.editAdmin">channels.editAdmin</a> can be used to modify the admin rights of a user in a channel or supergroup. +<a href="/api/channel">Legacy groups</a> do not allow setting granular admin permissions, <a href="/method/messages.editChatAdmin">messages.editChatAdmin</a> has to be used, instead.</p> +<p>Permissions are defined by the <a href="/constructor/chatAdminRights">chatAdminRights</a> constructor, some admin rights can only be used for channels, others both for channels and supergroups (see the constructor page).</p> +<h3><a class="anchor" href="#banned-rights" id="banned-rights" name="banned-rights"><i class="anchor-icon"></i></a>Banned rights</h3> +<p><a href="/method/channels.editBanned">channels.editBanned</a> can be used to modify the rights of a user in a channel or supergroup, to ban/kick a user from the group, or restrict the user from doing certain things. +<a href="/api/channel">Legacy groups</a> do not allow setting granular user permissions for single users, single users can only be removed from groups using <a href="/method/messages.deleteChatUser">messages.deleteChatUser</a>: however, setting <a href="#default-rights">global granular permissions with legacy groups is supported</a>.</p> +<p>Permissions are defined by the <a href="/constructor/chatBannedRights">chatBannedRights</a> constructor, for more info see the constructor page.</p> +<h3><a class="anchor" href="#default-rights" id="default-rights" name="default-rights"><i class="anchor-icon"></i></a>Default rights</h3> +<p><a href="/method/messages.editChatDefaultBannedRights">messages.editChatDefaultBannedRights</a> can be used to modify the rights of <strong>all</strong> users in a channel, supergroup or legacy group, to restrict them from doing certain things.</p> +<p>Permissions are defined by the <a href="/constructor/chatBannedRights">chatBannedRights</a> constructor: all flags can be used except for <code>view_messages</code>, for more info see the constructor page.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/scheduled-messages.html b/data/corefork.telegram.org/api/scheduled-messages.html new file mode 100644 index 0000000000..7cb326abe1 --- /dev/null +++ b/data/corefork.telegram.org/api/scheduled-messages.html @@ -0,0 +1,156 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Scheduled messages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows scheduling messages"> + <meta property="og:title" content="Scheduled messages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows scheduling messages"> + <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?215" 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/scheduled-messages" >Scheduled messages</a></li></ul></div> + <h1 id="dev_page_title">Scheduled messages</h1> + + <div id="dev_page_content"><p>Telegram allows scheduling messages.</p> +<pre><code><a href='/constructor/message'>message</a>#85d6cbe2 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> post:flags.14?<a href='/constructor/true'>true</a> from_scheduled:flags.18?<a href='/constructor/true'>true</a> legacy:flags.19?<a href='/constructor/true'>true</a> edit_hide:flags.21?<a href='/constructor/true'>true</a> pinned:flags.24?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:flags.8?<a href='/type/Peer'>Peer</a> peer_id:<a href='/type/Peer'>Peer</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> reply_markup:flags.6?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> views:flags.10?<a href='/type/int'>int</a> forwards:flags.10?<a href='/type/int'>int</a> replies:flags.23?<a href='/type/MessageReplies'>MessageReplies</a> edit_date:flags.15?<a href='/type/int'>int</a> post_author:flags.16?<a href='/type/string'>string</a> grouped_id:flags.17?<a href='/type/long'>long</a> restriction_reason:flags.22?<a href='/type/Vector%20t'>Vector</a><<a href='/type/RestrictionReason'>RestrictionReason</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Message'>Message</a>; + +<a href='/constructor/updateNewScheduledMessage'>updateNewScheduledMessage</a>#39a51dfb message:<a href='/type/Message'>Message</a> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updateDeleteScheduledMessages'>updateDeleteScheduledMessages</a>#90866cee peer:<a href='/type/Peer'>Peer</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.sendMessage'>messages.sendMessage</a>#520c3870 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/messages.sendMedia'>messages.sendMedia</a>#3491eba9 flags:<a href='/type/%23'>#</a> silent:flags.5?<a href='/constructor/true'>true</a> background:flags.6?<a href='/constructor/true'>true</a> clear_draft:flags.7?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> reply_to_msg_id:flags.0?<a href='/type/int'>int</a> media:<a href='/type/InputMedia'>InputMedia</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.10?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>To schedule a message, simply provide a future unixtime in the <code>schedule_date</code> flag of <a href="/method/messages.sendMessage">messages.sendMessage</a> or <a href="/method/messages.sendMedia">messages.sendMedia</a>. </p> +<p>The specified message or media will be added to a server-side schedule queue for the current chat, and will be automatically sent at the specified time.<br> +The method call generates the following updates:</p> +<ul> +<li>Immediately, an <a href="/constructor/updateNewScheduledMessage">updateNewScheduledMessage</a>, with ID equal to the ID of the message in the schedule queue for the current chat (each PM, chat, supergroup and channel has its own schedule queue and ID sequence).</li> +<li>At <code>schedule_date</code>, an <a href="/constructor/updateNewMessage">updateNewMessage</a> or <a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> with the <code>from_scheduled</code> flag set, indicating to the sender that the specified scheduled message was sent. </li> +<li>At <code>schedule_date</code>, an <a href="/constructor/updateDeleteScheduledMessages">updateDeleteScheduledMessages</a>, indicating that the message was flushed from the schedule queue.</li> +</ul> +<p>If the <code>schedule_date</code> is less than 10 seconds in the future, the message will be sent immediately, generating a normal <a href="/constructor/updateNewMessage">updateNewMessage</a>/<a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> . </p> +<h3><a class="anchor" href="#manipulating-the-schedule-queue" id="manipulating-the-schedule-queue" name="manipulating-the-schedule-queue"><i class="anchor-icon"></i></a>Manipulating the schedule queue</h3> +<pre><code><a href='/constructor/updateNewScheduledMessage'>updateNewScheduledMessage</a>#39a51dfb message:<a href='/type/Message'>Message</a> = <a href='/type/Update'>Update</a>; +<a href='/constructor/updateDeleteScheduledMessages'>updateDeleteScheduledMessages</a>#90866cee peer:<a href='/type/Peer'>Peer</a> messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Update'>Update</a>; + +---functions--- + +<a href='/method/messages.getScheduledHistory'>messages.getScheduledHistory</a>#f516760b peer:<a href='/type/InputPeer'>InputPeer</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>; +<a href='/method/messages.getScheduledMessages'>messages.getScheduledMessages</a>#bdbb0464 peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/messages.Messages'>messages.Messages</a>; +<a href='/method/messages.sendScheduledMessages'>messages.sendScheduledMessages</a>#bd38850a peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Updates'>Updates</a>; +<a href='/method/messages.deleteScheduledMessages'>messages.deleteScheduledMessages</a>#59ae2b16 peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/Vector%20t'>Vector</a><<a href='/type/int'>int</a>> = <a href='/type/Updates'>Updates</a>; + +<a href='/method/messages.editMessage'>messages.editMessage</a>#48f71778 flags:<a href='/type/%23'>#</a> no_webpage:flags.1?<a href='/constructor/true'>true</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> message:flags.11?<a href='/type/string'>string</a> media:flags.14?<a href='/type/InputMedia'>InputMedia</a> reply_markup:flags.2?<a href='/type/ReplyMarkup'>ReplyMarkup</a> entities:flags.3?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> schedule_date:flags.15?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p>Clients can manually edit the schedule queue of a certain chat, providing the scheduled message ID obtained from <a href="/constructor/updateNewScheduledMessage">updateNewScheduledMessage</a>. </p> +<ul> +<li><a href="/method/messages.getScheduledHistory">messages.getScheduledHistory</a> obtains all messages in the schedule queue for the specified chat</li> +<li><a href="/method/messages.getScheduledMessages">messages.getScheduledMessages</a> obtains information about specific messages in the schedule queue for the specified chat</li> +<li><a href="/method/messages.sendScheduledMessages">messages.sendScheduledMessages</a> flushes messages from the schedule queue, sending them immediately</li> +<li><a href="/method/messages.deleteScheduledMessages">messages.deleteScheduledMessages</a> deletes messages from the schedule queue, without sending them</li> +<li><a href="/method/messages.editMessage">messages.editMessage</a> can be used to modify the scheduled date of a specific message in a schedule queue. </li> +</ul> +<p>Modifying scheduled messages will generate an <a href="/constructor/updateNewScheduledMessage">updateNewScheduledMessage</a> with the same ID, and updated information.<br> +Deleting scheduled messages will generate an <a href="/constructor/updateDeleteScheduledMessages">updateDeleteScheduledMessages</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/search.html b/data/corefork.telegram.org/api/search.html new file mode 100644 index 0000000000..017d38c3db --- /dev/null +++ b/data/corefork.telegram.org/api/search.html @@ -0,0 +1,179 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Search</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram allows applying detailed message filters while looking for messages in chats."> + <meta property="og:title" content="Search"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram allows applying detailed message filters while looking for messages in chats."> + <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?215" 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/search" >Search</a></li></ul></div> + <h1 id="dev_page_title">Search</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram allows applying detailed message filters while looking for messages in chats.</p> +<h3><a class="anchor" href="#search-filters" id="search-filters" name="search-filters"><i class="anchor-icon"></i></a>Search filters</h3> +<pre><code><a href='/constructor/inputMessagesFilterEmpty'>inputMessagesFilterEmpty</a>#57e2f66c = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterPhotos'>inputMessagesFilterPhotos</a>#9609a51c = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterVideo'>inputMessagesFilterVideo</a>#9fc00e65 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterPhotoVideo'>inputMessagesFilterPhotoVideo</a>#56e9f0e4 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterDocument'>inputMessagesFilterDocument</a>#9eddf188 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterUrl'>inputMessagesFilterUrl</a>#7ef0dd87 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterGif'>inputMessagesFilterGif</a>#ffc86587 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterVoice'>inputMessagesFilterVoice</a>#50f5c392 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterMusic'>inputMessagesFilterMusic</a>#3751b49e = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterChatPhotos'>inputMessagesFilterChatPhotos</a>#3a20ecb8 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterPhoneCalls'>inputMessagesFilterPhoneCalls</a>#80c99768 flags:<a href='/type/%23'>#</a> missed:flags.0?<a href='/constructor/true'>true</a> = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterRoundVoice'>inputMessagesFilterRoundVoice</a>#7a7c17a4 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterRoundVideo'>inputMessagesFilterRoundVideo</a>#b549da53 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterMyMentions'>inputMessagesFilterMyMentions</a>#c1f8e69a = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterGeo'>inputMessagesFilterGeo</a>#e7026d0d = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterContacts'>inputMessagesFilterContacts</a>#e062db83 = <a href='/type/MessagesFilter'>MessagesFilter</a>; +<a href='/constructor/inputMessagesFilterPinned'>inputMessagesFilterPinned</a>#1bb00451 = <a href='/type/MessagesFilter'>MessagesFilter</a>; + +<a href='/constructor/messages.messages'>messages.messages</a>#8c718e87 messages:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Message'>Message</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <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?<a href='/constructor/true'>true</a> 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><<a href='/type/Message'>Message</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <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?<a href='/constructor/true'>true</a> 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><<a href='/type/Message'>Message</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <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.search'>messages.search</a>#a0fda762 flags:<a href='/type/%23'>#</a> peer:<a href='/type/InputPeer'>InputPeer</a> q:<a href='/type/string'>string</a> from_id:flags.0?<a href='/type/InputPeer'>InputPeer</a> top_msg_id:flags.1?<a href='/type/int'>int</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_id:<a href='/type/int'>int</a> add_offset:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> min_id:<a href='/type/int'>int</a> hash:<a href='/type/long'>long</a> = <a href='/type/messages.Messages'>messages.Messages</a>; + +<a href='/method/messages.searchGlobal'>messages.searchGlobal</a>#4bc6589a flags:<a href='/type/%23'>#</a> folder_id:flags.0?<a href='/type/int'>int</a> q:<a href='/type/string'>string</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset_rate:<a href='/type/int'>int</a> offset_peer:<a href='/type/InputPeer'>InputPeer</a> offset_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/messages.Messages'>messages.Messages</a>;</code></pre> +<p>When using <a href="/method/messages.search">messages.search</a> or <a href="/method/messages.searchGlobal">messages.searchGlobal</a>, a certain message filter may be applied.<br> +This allows the server to filter messages based on a text query, and even on their type, and this feature is often used by graphical clients to implement features like the chat gallery, chat profile pictures and more. +Available filters:</p> +<ul> +<li><a href="/constructor/inputMessagesFilterPhotos">inputMessagesFilterPhotos</a> - Returns only photos, used for implementing the chat photo gallery, and when scrolling left or right while viewing a photo</li> +<li><a href="/constructor/inputMessagesFilterVideo">inputMessagesFilterVideo</a> - Returns only videos, used for implementing the chat video gallery, and when scrolling left or right while viewing a video</li> +<li><a href="/constructor/inputMessagesFilterPhotoVideo">inputMessagesFilterPhotoVideo</a> - Return only videos and photos, used for implementing the chat media gallery</li> +<li><a href="/constructor/inputMessagesFilterDocument">inputMessagesFilterDocument</a> - Return only videos and photos, used for implementing the chat document gallery</li> +<li><a href="/constructor/inputMessagesFilterUrl">inputMessagesFilterUrl</a> - Return only messages with links, used for implementing the chat link gallery</li> +<li><a href="/constructor/inputMessagesFilterGif">inputMessagesFilterGif</a> - Return only GIFs, used for implementing the chat GIF gallery</li> +<li><a href="/constructor/inputMessagesFilterVoice">inputMessagesFilterVoice</a> - Return only voice messages, used for implementing the chat voice message gallery, and to consecutively play voice messages in a chat</li> +<li><a href="/constructor/inputMessagesFilterMusic">inputMessagesFilterMusic</a> - Return only music files, used for implementing the chat music gallery</li> +<li><a href="/constructor/inputMessagesFilterChatPhotos">inputMessagesFilterChatPhotos</a> - Return only chat photos, used to allow scrolling through the profile picture history of a group</li> +<li><a href="/constructor/inputMessagesFilterPhoneCalls">inputMessagesFilterPhoneCalls</a> - Return only phone calls, used with <a href="/method/messages.searchGlobal">messages.searchGlobal</a> to implement the call tab, with the phone call history</li> +<li><a href="/constructor/inputMessagesFilterRoundVoice">inputMessagesFilterRoundVoice</a> - Return only round videos and voice messages, used to consecutively play round videos and voice messages in a chat</li> +<li><a href="/constructor/inputMessagesFilterRoundVideo">inputMessagesFilterRoundVideo</a> - Return only round videos, used to consecutively play round videos in a chat</li> +<li><a href="/constructor/inputMessagesFilterMyMentions">inputMessagesFilterMyMentions</a> - Return only messages mentioning me, can be used to display the <a href="/api/mentions">mention history</a> or, combined with another filter or query, return only messages that satisfy a certain criteria, and contain a mention.</li> +<li><a href="/constructor/inputMessagesFilterGeo">inputMessagesFilterGeo</a> - Return only geolocations, is used to fetch all recent valid <a href="/api/live-location">geolocations or live locations</a> sent in a group, to display them all in a single map</li> +<li><a href="/constructor/inputMessagesFilterContacts">inputMessagesFilterContacts</a> - Return only contacts</li> +<li><a href="/constructor/inputMessagesFilterPinned">inputMessagesFilterPinned</a> - Returns only <a href="/api/pin">pinned messages</a>, used for implementing the pinned message list</li> +</ul> +<p>The returned <a href="/type/messages.Messages">messages.Messages</a> constructors contain parameters for <a href="/api/offsets">pagination</a>, the messages themselves and two <code>offset_id_offset</code>/<code>count</code> parameters that can be used to display a <code>progress/total</code> counter like <code>photo 134 of 200</code>.<br> +For example, when displaying the chat photo gallery, we could display a <code>photo ${offset_id_offset} of ${count}</code> indicator on top.</p> +<h4><a class="anchor" href="#search-counters" id="search-counters" name="search-counters"><i class="anchor-icon"></i></a>Search counters</h4> +<pre><code><a href='/constructor/messages.searchCounter'>messages.searchCounter</a>#e844ebff flags:<a href='/type/%23'>#</a> inexact:flags.1?<a href='/constructor/true'>true</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> count:<a href='/type/int'>int</a> = <a href='/type/messages.SearchCounter'>messages.SearchCounter</a>; + +---functions--- + +<a href='/method/messages.getSearchCounters'>messages.getSearchCounters</a>#732eef00 peer:<a href='/type/InputPeer'>InputPeer</a> filters:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessagesFilter'>MessagesFilter</a>> = <a href='/type/Vector%20t'>Vector</a><<a href='/type/messages.SearchCounter'>messages.SearchCounter</a>>;</code></pre> +<p>Chat counters with filters can also be returned without fetching the actual messages, as seen in the schema above.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/srp.html b/data/corefork.telegram.org/api/srp.html new file mode 100644 index 0000000000..94f2217ee9 --- /dev/null +++ b/data/corefork.telegram.org/api/srp.html @@ -0,0 +1,307 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Two-factor authentication</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to login to a user's account if they have enabled 2FA, how to change password."> + <meta property="og:title" content="Two-factor authentication"> + <meta property="og:image" content="566f538655672c95c6"> + <meta property="og:description" content="How to login to a user's account if they have enabled 2FA, how to change 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?215" 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/srp" >Two-factor authentication</a></li></ul></div> + <h1 id="dev_page_title">Two-factor authentication</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram uses the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">Secure Remote Password protocol</a> version 6a to implement 2FA.</p> +<p>Example impementation: <a href="https://github.com/tdlib/td/blob/56163c2460a65afc4db2c57ece576b8c38ea194b/td/telegram/PasswordManager.cpp">tdlib</a>.</p> +<h3><a class="anchor" href="#checking-the-password-with-srp" id="checking-the-password-with-srp" name="checking-the-password-with-srp"><i class="anchor-icon"></i></a>Checking the password with SRP</h3> +<p>To login to an account protected by a 2FA password or to perform some other actions (like changing channel owner), you will need to verify the user's knowledge of the current 2FA account password.</p> +<p>To do this, first the client needs to obtain SRP parameters and the KDF algorithm to use to check the validity of the password via <a href="https://core.telegram.org/method/account.getPassword">account.getPassword</a> method. For now, only the <a href="/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow">passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</a> algorithm is supported, so we'll only explain that.</p> +<p>Then, after the user provides a password, the client should generate an <a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a> object using SRP and a specific KDF algorithm as shown below and pass it to appropriate method (e.g. <a href="/method/auth.checkPassword">auth.checkPassword</a> in case of authorization).</p> +<p>This extension of the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a> uses the password-based <a href="https://en.wikipedia.org/wiki/PBKDF2">PBKDF2</a> with 100000 iterations using sha512 (<code>PBKDF2HMACSHA512iter100000</code>). +PBKDF2 is used to additionally rehash the <code>x</code> parameter, obtained using a method similar to the one described in <a href="https://tools.ietf.org/html/rfc2945#section-3">RFC 2945</a> (<code>H(s | H ( I | password | I) | s)</code> instead of <code>H(s | H ( I | ":" | password)</code>) (see below).</p> +<p>Here, <code>|</code> denotes concatenation and <code>+</code> denotes the arithmetical operator <code>+</code>. +In all cases where concatenation of numbers passed to hashing functions is done, the numbers must be used in big-endian form, padded to 2048 bits; all maths is modulo <code>p</code>. +Instead of <code>I</code>, <code>salt1</code> will be used (see <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a>). +Instead of <code>s</code>, <code>salt2</code> will be used (see <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">SRP protocol</a>).</p> +<p>The main hashing function <code>H</code> is sha256:</p> +<ul> +<li><code>H(data) := sha256(data)</code></li> +</ul> +<p>The salting hashing function <code>SH</code> is defined as follows:</p> +<ul> +<li><code>SH(data, salt) := H(salt | data | salt)</code></li> +</ul> +<p>The primary password hashing function is defined as follows:</p> +<ul> +<li><code>PH1(password, salt1, salt2) := SH(SH(password, salt1), salt2)</code></li> +</ul> +<p>The secondary password hashing function is defined as follows:</p> +<ul> +<li><code>PH2(password, salt1, salt2) := SH(pbkdf2(sha512, PH1(password, salt1, salt2), salt1, 100000), salt2)</code></li> +</ul> +<p>Client-side, the following parameters are extracted from the <a href="/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow">passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</a> object, contained in the <a href="/constructor/account.password">account.password</a> object.</p> +<ul> +<li> +<p><code>g := algo.g</code></p> +</li> +<li> +<p><code>p := algo.p</code> +The client is expected to check whether <strong>p</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that <code>2^2047 < p < 2^2048</code>), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> -- namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as to avoid repeating lengthy computations in future. This cache might be shared with one used for <a href="/mtproto/auth_key">Authorization Key generation</a>.</p> +<p>If the client has an inadequate random number generator, it makes sense to use the <strong>secure_random</strong> of account.password as additional seed.</p> +</li> +<li> +<p><code>password := (user-provided password)</code></p> +</li> +<li> +<p><code>salt1 := algo.salt1</code></p> +</li> +<li> +<p><code>salt2 := algo.salt2</code></p> +</li> +<li> +<p><code>g_b := srp_B</code> +<code>srp_B</code> and <code>srp_id</code> are extracted from the <a href="/constructor/account.password">account.password</a> object.</p> +</li> +</ul> +<p>The <code>k</code> parameter is generated, both on client and server:</p> +<ul> +<li><code>k := H(p | g)</code></li> +</ul> +<p>The shared param <code>u</code> is generated: the client does this, and the server does the same with the <code>g_a</code> we will send him later (see below)</p> +<ul> +<li><code>u := H(g_a | g_b)</code></li> +</ul> +<p>The final parameters are generated client-side only:</p> +<ul> +<li><code>x := PH2(password, salt1, salt2)</code></li> +<li><code>v := pow(g, x) mod p</code></li> +</ul> +<p>The server already has <code>v</code>, from when we set the password.</p> +<p>A final shared param is generated, for commodity:</p> +<ul> +<li><code>k_v := (k * v) mod p</code></li> +</ul> +<p>Finally, the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Protocol">key exchange process</a> starts on both parties.</p> +<p>The client computes a 2048-bit number <strong>a</strong> (using sufficient entropy or the server’s <strong>random</strong>; see above) and generates:</p> +<ul> +<li><code>g_a := pow(g, a) mod p</code>.</li> +</ul> +<p>The server computes a 2048-bit number <strong>b</strong> using sufficient entropy and generates the <code>g_b</code> parameter that was sent to us (see above).</p> +<ul> +<li><code>g_b := (k_v + (pow(g, b) mod p)) mod p</code></li> +</ul> +<p>Finally, the <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Protocol">SRP session keys</a> are generated:</p> +<p>Client side: </p> +<ul> +<li><code>t := (g_b - k_v) mod p</code> (positive modulo, if the result is negative increment by <code>p</code>) </li> +<li><code>s_a := pow(t, a + u * x) mod p</code></li> +<li><code>k_a := H(s_a)</code></li> +</ul> +<p>Server side: </p> +<ul> +<li><code>s_b := pow(g_a * (pow(v, u) mod p), b) mod p</code></li> +<li><code>k_b := H(s_b)</code></li> +</ul> +<p>Since:</p> +<ul> +<li><code>g_b := (k_v + (pow(g, b) mod p)) mod p</code></li> +<li><code>t := (g_b - k_v) mod p</code></li> +<li><code>t := ((k_v + (pow(g, b) mod p)) - k_v) mod p</code></li> +<li><code>t := pow(g, b) mod p</code></li> +<li><code>s_a := pow(t, a + u * x) mod p</code></li> +<li><code>s_a := pow(pow(g, b) mod p, a + u * x) mod p</code></li> +</ul> +<p>And:</p> +<ul> +<li> +<p><code>g_a := pow(g, a) mod p</code></p> +</li> +<li> +<p><code>v := pow(g, x) mod p</code></p> +</li> +<li> +<p><code>s_b := pow(g_a * (pow(v, u) mod p), b) mod p</code></p> +</li> +<li> +<p><code>s_b := pow((pow(g, a) mod p) * (pow(pow(g, x) mod p, u) mod p), b) mod p</code></p> +</li> +<li> +<p><code>s_b := pow(pow(g, a + x * u) mod p, b) mod p</code></p> +</li> +<li> +<p><code>s_b := pow(pow(g, b) mod p, a + u * x) mod p</code></p> +</li> +<li> +<p><code>s_a := pow(pow(g, b) mod p, a + u * x) mod p</code></p> +</li> +</ul> +<p>This means:</p> +<ul> +<li><code>s_b === s_a</code></li> +<li><code>k_b === k_a</code></li> +</ul> +<p><strong>Finally, as per SRP</strong>:</p> +<ul> +<li><code>M1 := H(H(p) xor H(g) | H(salt1) | H(salt2) | g_a | g_b | k_a)</code></li> +</ul> +<p><code>M1</code> is passed to <a href="/constructor/inputCheckPasswordSRP">inputCheckPasswordSRP</a>, along with <code>g_a</code> (as <code>A</code> parameter) and the <code>srp_id</code>, extracted from the <a href="/constructor/account.password">account.password</a> object.</p> +<p>The server then computes:</p> +<ul> +<li><code>M2 := H(H(p) xor H(g) | H(salt1) | H(salt2) | g_a | g_b | k_b)</code></li> +</ul> +<p>Since we said that:</p> +<ul> +<li><code>s_b === s_a</code></li> +<li><code>k_b === k_a</code></li> +</ul> +<p>This means, if everything was done correctly,</p> +<ul> +<li><code>M1 === M2</code></li> +</ul> +<p>If the password isn't correct, <a href="/method/auth.checkPassword#possible-errors">400 PASSWORD_HASH_INVALID</a> will be returned.</p> +<h3><a class="anchor" href="#setting-a-new-2fa-password" id="setting-a-new-2fa-password" name="setting-a-new-2fa-password"><i class="anchor-icon"></i></a>Setting a new 2FA password</h3> +<p>To set a new 2FA password use the <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> method.<br> +If a password is already set, generate an InputCheckPasswordSRP object as per <a href="#checking-the-password-with-srp">checking passwords with SRP</a>, and insert it in the <code>password</code> field of the <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> method.<br> +To remove the current password, pass an empty <code>new_password_hash</code> in the <a href="/type/account.PasswordInputSettings">account.PasswordInputSettings</a> object.</p> +<p>To set a new password, use the SRP parameters and the KDF algorithm obtained using <a href="https://core.telegram.org/method/account.getPassword">account.getPassword</a> when generating the <code>password</code> field. +Then generate a new <code>new_password_hash</code> using the KDF algorithm specified in the <code>new_settings</code>, just append 32 sufficiently random bytes to the <code>salt1</code>, first. +Proceed as for <a href="#checking-the-password-with-srp">checking passwords with SRP</a>, just stop at the generation of the <code>v</code> parameter, and use it as <code>new_password_hash</code>:</p> +<ul> +<li><code>v := pow(g, x) mod p</code></li> +</ul> +<p>As usual in big endian form, padded to 2048 bits.</p> +<h4><a class="anchor" href="#email-verification" id="email-verification" name="email-verification"><i class="anchor-icon"></i></a>Email verification</h4> +<p>When setting up two-factor authorization, it is recommended to set up a <strong>recovery email</strong>, to allow recovery of the password through the user's email address, in case they forget it.</p> +<p>To set up a recovery email, it must first be verified. +This can be done directly when setting the new password using <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a> by setting the email parameter and flag in the <a href="/constructor/account.passwordInputSettings">account.passwordInputSettings</a> constructor. +If the email isn't verified, an <a href="/method/account.updatePasswordSettings#possible-errors">EMAIL_UNCONFIRMED_X 400 error</a> will be returned, where X is the length of the verification code that was just sent to the email. +Use <a href="/method/account.confirmPasswordEmail">account.confirmPasswordEmail</a> to enter the received verification code and enable the recovery email. +Use <a href="/method/account.resendPasswordEmail">account.resendPasswordEmail</a> to resend the verification code. +Use <a href="/method/account.cancelPasswordEmail">account.cancelPasswordEmail</a> to cancel the verification code.</p> +<p>To get the current recovery email, use <a href="/method/account.getPasswordSettings">account.getPasswordSettings</a>.</p> +<h4><a class="anchor" href="#email-recovery" id="email-recovery" name="email-recovery"><i class="anchor-icon"></i></a>Email recovery</h4> +<p>In order to recover a forgotten 2FA password, an email must be sent to the <a href="#email-verification">previously specified address</a> using the <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a> method.<br> +Use <a href="/method/auth.checkRecoveryPassword">auth.checkRecoveryPassword</a> to make sure that the user provided a valid code.<br> +Then use <a href="/method/auth.recoverPassword">auth.recoverPassword</a> with the received code to delete the current 2FA password, to set a new one follow <a href="/api/srp">these instructions</a>.</p> +<h4><a class="anchor" href="#password-reset" id="password-reset" name="password-reset"><i class="anchor-icon"></i></a>Password reset</h4> +<pre><code><a href='/constructor/account.resetPasswordFailedWait'>account.resetPasswordFailedWait</a>#e3779861 retry_date:<a href='/type/int'>int</a> = <a href='/type/account.ResetPasswordResult'>account.ResetPasswordResult</a>; +<a href='/constructor/account.resetPasswordRequestedWait'>account.resetPasswordRequestedWait</a>#e9effc7d until_date:<a href='/type/int'>int</a> = <a href='/type/account.ResetPasswordResult'>account.ResetPasswordResult</a>; +<a href='/constructor/account.resetPasswordOk'>account.resetPasswordOk</a>#e926d63e = <a href='/type/account.ResetPasswordResult'>account.ResetPasswordResult</a>; + +---functions--- + +<a href='/method/account.resetPassword'>account.resetPassword</a>#9308ce1b = <a href='/type/account.ResetPasswordResult'>account.ResetPasswordResult</a>; +<a href='/method/account.declinePasswordReset'>account.declinePasswordReset</a>#4c9409f6 = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>If the user is already logged in and has forgotten their 2FA password, <a href="/method/account.resetPassword">account.resetPassword</a> can be used to initiate a password reset.<br> +On success, the call will initially return a <a href="/constructor/account.resetPasswordRequestedWait">account.resetPasswordRequestedWait</a> constructor and start a 7-day server-side timer, during which the user can abort the reset process using a button sent by the Telegram service account or directly in-UI using <a href="/method/account.declinePasswordReset">account.declinePasswordReset</a>. </p> +<p>When the time comes, <a href="/method/account.resetPassword">account.resetPassword</a> is invoked once more, returning a <a href="/constructor/account.resetPasswordOk">account.resetPasswordOk</a> to indicate that the password was successfully reset. </p> +<p>If the user recently requested a password reset that was canceled, <a href="/constructor/account.resetPasswordFailedWait">account.resetPasswordFailedWait</a> will be returned by the initial <a href="/method/account.resetPassword">account.resetPassword</a> call, and they must wait until the specified date before requesting another reset. </p> +<p>Note that if the user already knows their 2FA password and simply wants to disable 2FA, <a href="#setting-a-new-2fa-password">the same process used to enable the password must also be used to disable it »</a>.</p> +<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3> +<h4><a class="anchor" href="#srp-design" id="srp-design" name="srp-design"><i class="anchor-icon"></i></a><a href="http://srp.stanford.edu/design.html">SRP design</a></h4></div> + +</div> + + </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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/stats.html b/data/corefork.telegram.org/api/stats.html new file mode 100644 index 0000000000..52dda65ee3 --- /dev/null +++ b/data/corefork.telegram.org/api/stats.html @@ -0,0 +1,297 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Channel statistics</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram offers detailed channel statistics for channels and supergroups."> + <meta property="og:title" content="Channel statistics"> + <meta property="og:image" content=""> + <meta property="og:description" content="Telegram offers detailed channel statistics for channels and supergroups."> + <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?215" 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/stats" >Channel statistics</a></li></ul></div> + <h1 id="dev_page_title">Channel statistics</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram offers detailed channel statistics for channels and supergroups. </p> +<h3><a class="anchor" href="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a>Channel statistics</h3> +<p>Schema:</p> +<pre><code><a href='/constructor/statsDateRangeDays'>statsDateRangeDays</a>#b637edaf min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> = <a href='/type/StatsDateRangeDays'>StatsDateRangeDays</a>; + +<a href='/constructor/statsAbsValueAndPrev'>statsAbsValueAndPrev</a>#cb43acde current:<a href='/type/double'>double</a> previous:<a href='/type/double'>double</a> = <a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a>; + +<a href='/constructor/statsPercentValue'>statsPercentValue</a>#cbce2fe0 part:<a href='/type/double'>double</a> total:<a href='/type/double'>double</a> = <a href='/type/StatsPercentValue'>StatsPercentValue</a>; + +<a href='/constructor/statsGraphAsync'>statsGraphAsync</a>#4a27eb2d token:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraphError'>statsGraphError</a>#bedc9822 error:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraph'>statsGraph</a>#8ea464b6 flags:<a href='/type/%23'>#</a> json:<a href='/type/DataJSON'>DataJSON</a> zoom_token:flags.0?<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; + +<a href='/constructor/messageInteractionCounters'>messageInteractionCounters</a>#ad4fc9bd msg_id:<a href='/type/int'>int</a> views:<a href='/type/int'>int</a> forwards:<a href='/type/int'>int</a> = <a href='/type/MessageInteractionCounters'>MessageInteractionCounters</a>; + +<a href='/constructor/stats.broadcastStats'>stats.broadcastStats</a>#bdf78394 period:<a href='/type/StatsDateRangeDays'>StatsDateRangeDays</a> followers:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> views_per_post:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> shares_per_post:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> enabled_notifications:<a href='/type/StatsPercentValue'>StatsPercentValue</a> growth_graph:<a href='/type/StatsGraph'>StatsGraph</a> followers_graph:<a href='/type/StatsGraph'>StatsGraph</a> mute_graph:<a href='/type/StatsGraph'>StatsGraph</a> top_hours_graph:<a href='/type/StatsGraph'>StatsGraph</a> interactions_graph:<a href='/type/StatsGraph'>StatsGraph</a> iv_interactions_graph:<a href='/type/StatsGraph'>StatsGraph</a> views_by_source_graph:<a href='/type/StatsGraph'>StatsGraph</a> new_followers_by_source_graph:<a href='/type/StatsGraph'>StatsGraph</a> languages_graph:<a href='/type/StatsGraph'>StatsGraph</a> recent_message_interactions:<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageInteractionCounters'>MessageInteractionCounters</a>> = <a href='/type/stats.BroadcastStats'>stats.BroadcastStats</a>; + +---functions--- + +<a href='/method/stats.getBroadcastStats'>stats.getBroadcastStats</a>#ab42441a flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> channel:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/stats.BroadcastStats'>stats.BroadcastStats</a>; +<a href='/method/stats.loadAsyncGraph'>stats.loadAsyncGraph</a>#621d5fa0 flags:<a href='/type/%23'>#</a> token:<a href='/type/string'>string</a> x:flags.0?<a href='/type/long'>long</a> = <a href='/type/StatsGraph'>StatsGraph</a>;</code></pre> +<p>Administrators of <a href="/api/channel">channels</a> of a certain size (the exact limit is a server-side config, returned in the <code>can_view_stats</code> flag of <a href="/constructor/channelFull">channelFull</a>) can call <a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a> to get detailed channel statistics.<br> +The returned <a href="/constructor/stats.broadcastStats">stats.broadcastStats</a> contains multiple statistics: </p> +<ul> +<li>Period-related statistics: a pair of values, one at the beginning and one at the end of the period in consideration (<code>period</code>). <br> The <code>period</code> typically depends on channel activity.<ul> +<li>Absolute follower count (<code>followers</code>)</li> +<li><code>total_viewcount/postcount</code>, for posts posted during the period in consideration (<code>views_per_post</code>).<br> +Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>). </li> +<li><code>total_sharecount/postcount</code>, for posts posted during the period in consideration (<code>shares_per_post</code>).<br> +Note that in this case, <code>current</code> refers to the <code>period</code> in consideration (<code>min_date</code> till <code>max_date</code>), and <code>prev</code> refers to the previous period (<code>(min_date - (max_date - min_date))</code> till <code>min_date</code>).</li> +</ul> +</li> +<li>Percentage statistics<ul> +<li>Percentage of subscribers with enabled notifications (<code>enabled_notifications</code>)</li> +</ul> +</li> +<li>Graphs: <a href="#graph-visualization">graphs are described below »</a>. </li> +</ul> +<h3><a class="anchor" href="#supergroup-statistics" id="supergroup-statistics" name="supergroup-statistics"><i class="anchor-icon"></i></a>Supergroup statistics</h3> +<p>Schema:</p> +<pre><code><a href='/constructor/statsGroupTopPoster'>statsGroupTopPoster</a>#9d04af9b user_id:<a href='/type/long'>long</a> messages:<a href='/type/int'>int</a> avg_chars:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopPoster'>StatsGroupTopPoster</a>; +<a href='/constructor/statsGroupTopInviter'>statsGroupTopInviter</a>#535f779d user_id:<a href='/type/long'>long</a> invitations:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopInviter'>StatsGroupTopInviter</a>; +<a href='/constructor/statsGroupTopAdmin'>statsGroupTopAdmin</a>#d7584c87 user_id:<a href='/type/long'>long</a> deleted:<a href='/type/int'>int</a> kicked:<a href='/type/int'>int</a> banned:<a href='/type/int'>int</a> = <a href='/type/StatsGroupTopAdmin'>StatsGroupTopAdmin</a>; + +<a href='/constructor/stats.megagroupStats'>stats.megagroupStats</a>#ef7ff916 period:<a href='/type/StatsDateRangeDays'>StatsDateRangeDays</a> members:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> messages:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> viewers:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> posters:<a href='/type/StatsAbsValueAndPrev'>StatsAbsValueAndPrev</a> growth_graph:<a href='/type/StatsGraph'>StatsGraph</a> members_graph:<a href='/type/StatsGraph'>StatsGraph</a> new_members_by_source_graph:<a href='/type/StatsGraph'>StatsGraph</a> languages_graph:<a href='/type/StatsGraph'>StatsGraph</a> messages_graph:<a href='/type/StatsGraph'>StatsGraph</a> actions_graph:<a href='/type/StatsGraph'>StatsGraph</a> top_hours_graph:<a href='/type/StatsGraph'>StatsGraph</a> weekdays_graph:<a href='/type/StatsGraph'>StatsGraph</a> top_posters:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StatsGroupTopPoster'>StatsGroupTopPoster</a>> top_admins:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StatsGroupTopAdmin'>StatsGroupTopAdmin</a>> top_inviters:<a href='/type/Vector%20t'>Vector</a><<a href='/type/StatsGroupTopInviter'>StatsGroupTopInviter</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/stats.MegagroupStats'>stats.MegagroupStats</a>; + +---functions--- + +<a href='/method/stats.getMegagroupStats'>stats.getMegagroupStats</a>#dcdf8607 flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> channel:<a href='/type/InputChannel'>InputChannel</a> = <a href='/type/stats.MegagroupStats'>stats.MegagroupStats</a>;</code></pre> +<p>Administrators of <a href="/api/channel">supergroups</a> of a certain size (the exact limit is a server-side config, returned in the <code>can_view_stats</code> flag of <a href="/constructor/channelFull">channelFull</a>) can call <a href="/method/stats.getMegagroupStats">stats.getMegagroupStats</a> to get detailed supergroup statistics.<br> +The returned <a href="/constructor/stats.broadcastStats">stats.broadcastStats</a> contains multiple statistics, see the <a href="/constructor/stats.broadcastStats">constructor page for more info »</a>. </p> +<h3><a class="anchor" href="#message-statistics" id="message-statistics" name="message-statistics"><i class="anchor-icon"></i></a>Message statistics</h3> +<pre><code><a href='/constructor/stats.messageStats'>stats.messageStats</a>#8999f295 views_graph:<a href='/type/StatsGraph'>StatsGraph</a> = <a href='/type/stats.MessageStats'>stats.MessageStats</a>; + +---functions--- + +<a href='/method/stats.getMessageStats'>stats.getMessageStats</a>#b6e0a3f5 flags:<a href='/type/%23'>#</a> dark:flags.0?<a href='/constructor/true'>true</a> channel:<a href='/type/InputChannel'>InputChannel</a> msg_id:<a href='/type/int'>int</a> = <a href='/type/stats.MessageStats'>stats.MessageStats</a>;</code></pre> +<p>Administrators of <a href="/api/channel">channels</a> of a certain size (the exact limit is a server-side config, returned in the <code>can_view_stats</code> flag of <a href="/constructor/channelFull">channelFull</a>) can call <a href="/method/stats.getMessageStats">stats.getMessageStats</a> to get statistics of a specific message.<br> +The returned <a href="/constructor/stats.messageStats">stats.messageStats</a> contains the view graph of the message. </p> +<h2><a class="anchor" href="#graph-visualization" id="graph-visualization" name="graph-visualization"><i class="anchor-icon"></i></a>Graph visualization</h2> +<p>There are four available visualizations for graph types:</p> +<ul> +<li><a href="#line-graph">Line graph</a></li> +<li><a href="#step-graph">Step graph</a></li> +<li><a href="#bar-graph">Bar graph</a></li> +<li><a href="#area-graph">Area graph</a></li> +</ul> +<p>Graph modifiers (see <a href="#graph-examples">various graphs</a> for examples): </p> +<ul> +<li><code>y_scaled</code> - Indicates that each of the two (!) lines in a step graph must be visualized on its own scale, with two different tick axes on the left and right parts of the graph</li> +<li><code>percentage</code> - Indicates whether value percentages should be shown in labels</li> +<li><code>stacked</code> - Depending on the graph type, indicates stacking of multiple columns in the same graph</li> +</ul> +<h3><a class="anchor" href="#graph-syntax" id="graph-syntax" name="graph-syntax"><i class="anchor-icon"></i></a>Graph syntax</h3> +<pre><code><a href='/constructor/statsGraphAsync'>statsGraphAsync</a>#4a27eb2d token:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraphError'>statsGraphError</a>#bedc9822 error:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraph'>statsGraph</a>#8ea464b6 flags:<a href='/type/%23'>#</a> json:<a href='/type/DataJSON'>DataJSON</a> zoom_token:flags.0?<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; + +<a href='/constructor/dataJSON'>dataJSON</a>#7d748d04 data:<a href='/type/string'>string</a> = <a href='/type/DataJSON'>DataJSON</a>; + +---functions--- + +<a href='/method/stats.loadAsyncGraph'>stats.loadAsyncGraph</a>#621d5fa0 flags:<a href='/type/%23'>#</a> token:<a href='/type/string'>string</a> x:flags.0?<a href='/type/long'>long</a> = <a href='/type/StatsGraph'>StatsGraph</a>;</code></pre> +<p>Certain graphs are not directly sent in the <a href="/constructor/stats.broadcastStats">stats.broadcastStats</a> constructor to reduce server load: instead, those graphs will be sent as a <a href="/constructor/statsGraphAsync">statsGraphAsync</a> constructor, and should be fetched separately using <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a>. </p> +<p>After obtaining the full <a href="/constructor/statsGraph">statsGraph</a> constructor, clients should parse the JSON graph object in the <code>json</code> field.</p> +<p>Object structure: </p> +<table class="table"> +<thead> +<tr> +<th>Key</th> +<th>Graph title</th> +</tr> +</thead> +<tbody> +<tr> +<td>columns</td> +<td>Array of all data column arrays in the chart. Each column array has its <strong>label</strong> at position 0, followed by values.</td> +</tr> +<tr> +<td>types</td> +<td><a href="#graphs">Graphs types</a> for each of the column arrays (object, <code>"label": "type"</code>): <br>- <code>line</code> - <a href="#line-graph">line graph</a> <br>- <code>area</code> - <a href="#area-graph">area graph</a> <br>- <code>step</code> - <a href="#step-graph">step graph</a> <br>- <code>bar</code> - <a href="#bar-graph">bar graph</a> <br>- <code>x</code> - x axis values for each of the charts at the corresponding positions, UNIX timestamps in milliseconds.</td> +</tr> +<tr> +<td>colors</td> +<td>Color for each type (object, <code>"label": "colorKey#AAAAAA"</code>; see <a href="#chart-colors">chart colors</a>).</td> +</tr> +<tr> +<td>names</td> +<td>Localized name for each variable (object, <code>"label": "Name"</code>)</td> +</tr> +<tr> +<td>subchart</td> +<td>Object indicating the default zoom range for the graph, this is object's structure: <br>- <code>show</code> - Whether to use the specified zoom range (boolean) <br>- <code>defaultZoom</code> - An array with two <code>x</code> values, indicating the two ends of the default zoom range</td> +</tr> +<tr> +<td>y_scaled</td> +<td>Indicates that each of the two (!) lines in a step graph must be visualized on its own scale, with two different tick axes on the left and right parts of the graph (boolean, see <a href="#graph-examples">various graphs</a> for examples)</td> +</tr> +<tr> +<td>percentage</td> +<td>Indicates whether value percentages should be shown in labels (boolean, see <a href="#graph-examples">various graphs</a> for examples)</td> +</tr> +<tr> +<td>stacked</td> +<td>Depending on the graph type, indicates stacking of multiple columns in the same graph (boolean, see <a href="#graph-examples">various graphs</a> for examples)</td> +</tr> +</tbody> +</table> +<!-- | hidden | Array of columns that should not be visualized in the final graph | --> +<p>The following chart restrictions apply:</p> +<ul> +<li>Up to 50 columns on one graph must be supported.</li> +<li>Chart types are always the same for every column in the graph.</li> +<li>The <code>bar</code> chart type and <code>stacked</code> option are always used together.</li> +<li><code>percentage</code> is always used with the <code>area</code> graph.<!-- * Graphs with every chart type _should_ be able to zoom into the same chart type with the same columns (names and types). --> +<!-- * `y_scaled` is only used with exactly 2 `line` columns --> +</li> +</ul> +<h3><a class="anchor" href="#chart-zooming" id="chart-zooming" name="chart-zooming"><i class="anchor-icon"></i></a>Chart zooming</h3> +<pre><code><a href='/constructor/statsGraphError'>statsGraphError</a>#bedc9822 error:<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; +<a href='/constructor/statsGraph'>statsGraph</a>#8ea464b6 flags:<a href='/type/%23'>#</a> json:<a href='/type/DataJSON'>DataJSON</a> zoom_token:flags.0?<a href='/type/string'>string</a> = <a href='/type/StatsGraph'>StatsGraph</a>; + +<a href='/constructor/dataJSON'>dataJSON</a>#7d748d04 data:<a href='/type/string'>string</a> = <a href='/type/DataJSON'>DataJSON</a>; + +---functions--- + +<a href='/method/stats.loadAsyncGraph'>stats.loadAsyncGraph</a>#621d5fa0 flags:<a href='/type/%23'>#</a> token:<a href='/type/string'>string</a> x:flags.0?<a href='/type/long'>long</a> = <a href='/type/StatsGraph'>StatsGraph</a>;</code></pre> +<p>Graphs that support zooming will contain a <code>zoom_token</code> in the <a href="/constructor/statsGraph">statsGraph</a> constructor.<br> +Said token should be then used as <code>token</code> in a new <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a> call triggered when the user clicks on the label, related to a certain x axis in the graph (see <a href="#graph-examples">graph examples</a>).<br> +The <code>x</code> coordinate of the label should be provided to the <code>x</code> parameter; the method will then return (if available) a more detailed subgraph.<br> +If not enough data is available, a localized <a href="/constructor/statsGraphError">statsGraphError</a> will be returned. </p> +<p>Typical zoom <em>visualization</em> rules: </p> +<ul> +<li>Any <code>percentage</code> graph (even if a <code>zoom_token</code> is not available) => <a href="#piechart">piechart</a></li> +<li><a href="#line-graph">line graph</a> => <a href="#line-graph">line graph</a></li> +<li><a href="#step-graph">step graph</a> => <a href="#step-graph">step graph</a></li> +<li><a href="#bar-graph">bar graph</a> => <a href="#bar-graph">bar graph</a></li> +<li><a href="#area-graph">area graph</a> => <a href="#area-graph">area graph</a></li> +</ul> +<h3><a class="anchor" href="#chart-colors" id="chart-colors" name="chart-colors"><i class="anchor-icon"></i></a>Chart colors</h3> +<p>Chart colors can be provided as a color key, followed by the primary color value in hex format: </p> +<pre><code>red#e05356</code></pre> +<p>The color key can be one of <code>red</code>, <code>lightblue</code>, <code>lightgreen</code>, <code>golden</code>, <code>green</code>, <code>orange</code>, <code>blue</code>, <code>indigo</code>.<br> +Apps can choose to use a color value specified by the currently loaded theme: for example, the <a href="https://github.com/DrKLO/Telegram/blob/dceccae0b74576d092fb3b2accaffded2c0b5f63/TMessagesProj/src/main/java/org/telegram/ui/Charts/data/ChartData.java#L81">android app</a> uses <code>statisticChartLine_*</code> themekeys for each of the color keys, check out the <a href="https://github.com/DrKLO/Telegram/tree/master/TMessagesProj/src/main/assets">assets directory</a> for a bunch of default themes with various colors for channel statistics. </p> +<p>However, the server may also choose to return just a plain color value in hex format: </p> +<pre><code>#e05356</code></pre> +<p>In this case, the <code>dark</code> flag of the <a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a> method can be used to choose the palette of returned colors.</p> +<h2><a class="anchor" href="#graph-examples" id="graph-examples" name="graph-examples"><i class="anchor-icon"></i></a>Graph examples</h2> +<h3><a class="anchor" href="#line-graph" id="line-graph" name="line-graph"><i class="anchor-icon"></i></a>Line graph</h3> +<p>Simple single line graph</p> +<h3><a class="anchor" href="#step-graph" id="step-graph" name="step-graph"><i class="anchor-icon"></i></a>Step graph</h3> +<p>Step graph, always "stacked" (to indicate multiple lines)</p> +<h3><a class="anchor" href="#bar-graph" id="bar-graph" name="bar-graph"><i class="anchor-icon"></i></a>Bar graph</h3> +<p>Bar graph with multiple lines, always "stacked" (to indicate actual stacked bars, biggest bars first)</p> +<h3><a class="anchor" href="#area-graph" id="area-graph" name="area-graph"><i class="anchor-icon"></i></a>Area graph</h3> +<p>Mixed bar/line graph, always "stacked" (to indicate actual stacked bars, biggest bars first)</p> +<h3><a class="anchor" href="#piechart" id="piechart" name="piechart"><i class="anchor-icon"></i></a>Piechart</h3> +<p>Piechart, typically obtained only when zooming into percentage graphs</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/top-rating.html b/data/corefork.telegram.org/api/top-rating.html new file mode 100644 index 0000000000..2ac9ea8ff4 --- /dev/null +++ b/data/corefork.telegram.org/api/top-rating.html @@ -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?215" 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><<a href='/type/TopPeer'>TopPeer</a>> = <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><<a href='/type/TopPeerCategoryPeers'>TopPeerCategoryPeers</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> = <a href='/type/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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/updates.html b/data/corefork.telegram.org/api/updates.html new file mode 100644 index 0000000000..46c6067ad9 --- /dev/null +++ b/data/corefork.telegram.org/api/updates.html @@ -0,0 +1,226 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Working with Updates</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How to subscribe to updates and handle them properly."> + <meta property="og:title" content="Working with Updates"> + <meta property="og:image" content="9c2ddd579d3d7cedba"> + <meta property="og:description" content="How to subscribe to updates and handle them properly."> + <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?215" 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/updates" >Working with Updates</a></li></ul></div> + <h1 id="dev_page_title">Working with Updates</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>When a client is being actively used, events will occur that affect the current user and that they must learn about as soon as possible, e.g. when a new message is received. To eliminate the need for the client itself to periodically download these events, there is an update delivery mechanism in which the server sends the user notifications over one of its available connections with the client.</p> +<h3><a class="anchor" href="#subscribing-to-updates" id="subscribing-to-updates" name="subscribing-to-updates"><i class="anchor-icon"></i></a>Subscribing to Updates</h3> +<p>Update events are sent to an authorized user into the last active connection (except for connections needed for downloading / uploading files).</p> +<p>So to start receiving updates the client needs to init connection and call API method, e.g. to <a href="#fetching-state">fetch current state</a>.</p> +<h3><a class="anchor" href="#event-sequences" id="event-sequences" name="event-sequences"><i class="anchor-icon"></i></a>Event sequences</h3> +<p>All events are received from the socket as a sequence of TL-serialized <a href="/type/Updates">Updates</a> objects, which might be optionally gzip-compressed in the same way as <a href="/api/invoking#uncompressing-data">responses to queries</a>.</p> +<p>Each <a href="/type/Updates">Updates</a> object may contain single or multiple <a href="/type/Update">Update</a> objects, representing different events happening.</p> +<p>In order to apply all updates in precise order and to guarantee that no update is missed or applied twice there is <code>seq</code> attribute in <a href="/type/Updates">Updates</a> constructors, and <code>pts</code> (with <code>pts_count</code>) or <code>qts</code> attributes in <a href="/type/Update">Update</a> constructors. The client must use those attributes values in combination with locally stored state to correctly apply incoming updates.</p> +<p>When a gap in updates sequence occurs, it must be filled via calling one of the API methods. <a href="#recovering-gaps">More below »</a></p> +<h3><a class="anchor" href="#updates-sequence" id="updates-sequence" name="updates-sequence"><i class="anchor-icon"></i></a><a href="/type/Updates">Updates</a> sequence</h3> +<p>As said earlier, each payload with updates has a TL-type <a href="/type/Updates">Updates</a>. It can be seen from the schema below that this type has several constructors.</p> +<pre><code><a href='/constructor/updatesTooLong'>updatesTooLong</a>#e317af7e = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateShort'>updateShort</a>#78d4dec1 update:<a href='/type/Update'>Update</a> date:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateShortMessage'>updateShortMessage</a>#313bc7f8 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> user_id:<a href='/type/long'>long</a> message:<a href='/type/string'>string</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateShortChatMessage'>updateShortChatMessage</a>#4d6deea5 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> mentioned:flags.4?<a href='/constructor/true'>true</a> media_unread:flags.5?<a href='/constructor/true'>true</a> silent:flags.13?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/long'>long</a> chat_id:<a href='/type/long'>long</a> message:<a href='/type/string'>string</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> fwd_from:flags.2?<a href='/type/MessageFwdHeader'>MessageFwdHeader</a> via_bot_id:flags.11?<a href='/type/long'>long</a> reply_to:flags.3?<a href='/type/MessageReplyHeader'>MessageReplyHeader</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updateShortSentMessage'>updateShortSentMessage</a>#9015e101 flags:<a href='/type/%23'>#</a> out:flags.1?<a href='/constructor/true'>true</a> id:<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> pts_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> media:flags.9?<a href='/type/MessageMedia'>MessageMedia</a> entities:flags.7?<a href='/type/Vector%20t'>Vector</a><<a href='/type/MessageEntity'>MessageEntity</a>> ttl_period:flags.25?<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updatesCombined'>updatesCombined</a>#725b04c3 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq_start:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>; +<a href='/constructor/updates'>updates</a>#74ae4240 updates:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Update'>Update</a>> users:<a href='/type/Vector%20t'>Vector</a><<a href='/type/User'>User</a>> chats:<a href='/type/Vector%20t'>Vector</a><<a href='/type/Chat'>Chat</a>> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/Updates'>Updates</a>;</code></pre> +<p><a href="/constructor/updatesTooLong">updatesTooLong</a> indicates that there are too many events pending to be pushed to the client, so one needs to <a href="#recovering-gaps">fetch them manually</a>.</p> +<p>Events inside <a href="/constructor/updateShort">updateShort</a> constructors, normally, have lower priority and are broadcast to a large number of users, i.e. one of the chat participants started entering text in a big conversation (<a href="/constructor/updateChatUserTyping">updateChatUserTyping</a>).</p> +<p>The <a href="/constructor/updateShortMessage">updateShortMessage</a>, <a href="/constructor/updateShortMessage">updateShortSentMessage</a> and <a href="/constructor/updateShortChatMessage">updateShortChatMessage</a> constructors are redundant but help significantly reduce the transmitted message size for 90% of the updates. They should be transformed to <a href="/constructor/updateShort">updateShort</a> upon receiving.</p> +<p>Two remaining constructors <a href="/constructor/updates">updates</a> and <a href="/constructor/updatesCombined">updatesCombined</a> are part of the Updates sequence. Both of them have <code>seq</code> attribute, which indicates the remote Updates state after the generation of the Updates, and <code>seq_start</code> indicates the remote Updates state after the <em>first</em> of the Updates in the packet is generated. For <a href="/constructor/updates">updates</a>, <code>seq_start</code> attribute is omitted, because it is assumed that it is always equal to <code>seq</code>.</p> +<h3><a class="anchor" href="#message-related-event-sequences" id="message-related-event-sequences" name="message-related-event-sequences"><i class="anchor-icon"></i></a>Message-related event sequences</h3> +<p>Each <em>event</em> related to a message box (message created, message edited, message deleted, etc) is identified by a unique autoincremented <em>pts</em>, or <em>qts</em> in case of secret chat updates, certain bot updates, etc.</p> +<p>Each message box can be considered as some server-side DB table that stores messages and events associated with them. +All boxes are completely independent, and each pts sequence is tied to just one box (see below).</p> +<p><a href="/type/Update">Update</a> object may contain info about <em>multiple events</em> (for example, <a href="/constructor/updateDeleteMessages">updateDeleteMessages</a>). +That's why all single updates might have <em>pts_count</em> parameter indicating the <em>number of events</em> contained in the received <em>update</em> (with some exceptions, in this case, the <em>pts_count</em> is considered to be <code>0</code>).</p> +<p>Each <a href="/api/channel">channel and supergroup</a> has its message box and <em>its event sequence</em> as a result; private chats and legacy groups of one user have another <em>common event sequence</em>. +Secret chats, certain bot events and other kinds of updates have yet another <em>common secondary event sequence</em>.</p> +<p>To recap, the client has to take care of the integrity of the following sequences to properly handle updates:</p> +<ul> +<li>Updates sequence (seq)<ul> +<li>Common message box sequence (pts)</li> +<li>Secondary event sequence (qts)</li> +<li>Channel message box sequence 1 (pts)</li> +<li>Channel message box sequence 2 (pts)</li> +<li>Channel message box sequence 3 (pts)</li> +<li>and so on...</li> +</ul> +</li> +</ul> +<h3><a class="anchor" href="#fetching-state" id="fetching-state" name="fetching-state"><i class="anchor-icon"></i></a>Fetching state</h3> +<p>The <em>common</em> update state is represented by the <a href="/type/updates.State">updates.State</a> constructor. +When the user logs in for the first time, call to <a href="/method/updates.getState">updates.getState</a> has to be made to store the latest update state (which will not be the absolute initial state, just the latest state at the current time). +The common update state can also be fetched from <a href="/constructor/updates.differenceTooLong">updates.differenceTooLong</a>.</p> +<p>The <em>channel update state</em> is represented simply by the <em>pts</em> of the event sequence: when first logging in, the initial channel state can be obtained from the <a href="/constructor/dialog">dialog</a> constructor when fetching dialogs, from <a href="/constructor/channelFull">the full channel info</a>, or it can be received <a href="https://core.telegram.org/constructor/updateChannelTooLong">as an updateChannelTooLong update</a>.</p> +<p>The <em>secondary update state</em> is represented by the <em>qts</em> of the secret event sequence, it is contained in the <a href="/type/updates.State">updates.State</a> of the <em>common update state</em>.</p> +<p>The <em>Updates sequence state</em> is represented by the <em>date</em> and <em>seq</em> of the <em>Updates sequence</em>, it is contained in the <a href="/type/updates.State">updates.State</a> of the <em>common</em> update state.</p> +<h3><a class="anchor" href="#update-handling" id="update-handling" name="update-handling"><i class="anchor-icon"></i></a>Update handling</h3> +<p>Update handling in Telegram clients consists of receiving events, making sure there were no gaps and no events were missed based on the locally stored state of the correspondent event sequence, and then updating the locally stored state based on the parameters received.</p> +<p>When the client receives payload with serialized updates, first of all, it needs to walk through all of the nested <a href="/type/Update">Update</a> objects and check if they belong to any of message box sequences (have <code>pts</code> or <code>qts</code> parameters). Those updates need to be handled separately according to corresponding local state and new <code>pts</code>/<code>qts</code> values. <a href="#pts-checking-and-applying">Details below »</a></p> +<p>After message box updates are handled, if there are any other updates remaining the client needs to handle them with respect to <code>seq</code>. <a href="#seq-checking-and-applying">Details below »</a></p> +<h4><a class="anchor" href="#pts-checking-and-applying" id="pts-checking-and-applying" name="pts-checking-and-applying"><i class="anchor-icon"></i></a><code>pts</code>: checking and applying</h4> +<p>Here, <code>local_pts</code> will be the local state, <code>pts</code> will be the remote state, <code>pts_count</code> will be the number of events in the update.</p> +<p>If <code>local_pts + pts_count === pts</code>, the update can be applied. +If <code>local_pts + pts_count > pts</code>, the update was already applied, and must be ignored. +If <code>local_pts + pts_count < pts</code>, there's an update gap that must be <a href="#recovering-gaps">filled</a>.</p> +<p>For example, let's assume the client has the following local state for the channel <code>123456789</code>:</p> +<pre><code>local_pts = 131</code></pre> +<p>Now let's assume an <a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> from channel <code>123456789</code> is received with <code>pts = 132</code> and <code>pts_count=1</code>. +Since <code>local_pts + pts_count === pts</code>, the total number of events since the last stored state is, in fact, equal to <code>pts_count</code>: this means the update can be safely accepted and the remote <code>pts</code> applied:</p> +<pre><code>local_pts = 132</code></pre> +<p>Since:</p> +<ul> +<li><code>pts</code> indicates the server state <strong>after</strong> the new channel message events are generated</li> +<li><code>pts_count</code> indicates the number of events in the new channel update</li> +<li>The server state <strong>before the new channel message event was generated</strong> has to be: <code>pts_before = pts - pts_count = 131</code>, which is, in fact, equal to our local state.</li> +</ul> +<p>Now let's assume an <a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a> from channel <code>123456789</code> is received with <code>pts = 132</code> and <code>pts_count=1</code>. +Since <code>local_pts + pts_count > pts</code> (<code>133 > 132</code>), the update is skipped because we've already handled this update (in fact, our current <code>local_pts</code> was set by this same update, and it was resent twice due to network issues or other issues).</p> +<p>Now let's assume an <a href="/constructor/updateDeleteChannelMessages">updateDeleteChannelMessages</a> from channel <code>123456789</code> is received with <code>pts = 140</code> and <code>pts_count=5</code>. +Since <code>local_pts + pts_count < pts</code> (<code>137 < 140</code>), this means that updates were missed, and the gap must be recovered.</p> +<h5><a class="anchor" href="#secret-chats--bots" id="secret-chats--bots" name="secret-chats--bots"><i class="anchor-icon"></i></a>Secret chats & bots</h5> +<p>The whole process is very similar for secret chats and certain bot updates, but there is <code>qts</code> instead of <code>pts</code>, and events are never grouped, so it's assumed that <code>qts_count</code> is always equal to 1.</p> +<h4><a class="anchor" href="#seq-checking-and-applying" id="seq-checking-and-applying" name="seq-checking-and-applying"><i class="anchor-icon"></i></a><code>seq</code>: checking and applying</h4> +<p>On top level when handling received <a href="/constructor/updates">updates</a> and <a href="/constructor/updatesCombined">updatesCombined</a> there are three possible cases: +If <code>local_seq + 1 === seq_start</code>, the updates can be applied. +If <code>local_seq + 1 > seq_start</code>, the updates were already applied, and must be ignored. +If <code>local_seq + 1 < seq_start</code>, there's an updates gap that must be <a href="#recovering-gaps">filled</a> (updates.getDifference must be used as with common and secret event sequences).</p> +<p>If the updates were applied, local <em>Updates state</em> must be updated with <code>seq</code> and <code>date</code> from the constructor.</p> +<p>For all the other <a href="/type/Updates">Updates</a> type constructors there is no need to check <code>seq</code> or change a local state.</p> +<h3><a class="anchor" href="#recovering-gaps" id="recovering-gaps" name="recovering-gaps"><i class="anchor-icon"></i></a>Recovering gaps</h3> +<p>To do this, <a href="/method/updates.getDifference">updates.getDifference</a> (common/secret state) or <a href="/method/updates.getChannelDifference">updates.getChannelDifference</a> (channel state) with the respective local states must be called. +These methods should also be called on startup, to fetch new updates (preferably with some flags to reduce server load, see the method's docs). +Manually obtaining updates is also required in the following situations:</p> +<ul> +<li>Loss of sync: a gap was found in <strong>seq</strong> / <strong>pts</strong> / <strong>qts</strong> (as described above). It may be useful to wait up to 0.5 seconds in this situation and abort the sync in case a new update arrives, that fills the gap.</li> +<li>Session loss on the server: the client receives a <a href="https://core.telegram.org/mtproto/service_messages#new-session-creation-notification">new session created notification</a>. This can be caused by garbage collection on the MTProto server or a server reboot.</li> +<li>Incorrect update: the client cannot deserialize the received data.</li> +<li>Incomplete update: the client is missing data about a chat/user from one of the shortened constructors, such as <a href="/constructor/updateShortChatMessage">updateShortChatMessage</a>, etc.</li> +<li>Long period without updates: no updates for 15 minutes or longer.</li> +<li>The server requests the client to fetch the difference using <a href="/constructor/updateChannelTooLong">updateChannelTooLong</a> or <a href="/constructor/updatesTooLong">updatesTooLong</a>.</li> +</ul> +<p>When calling <a href="/method/updates.getDifference">updates.getDifference</a> if the <a href="/constructor/updates.differenceSlice">updates.differenceSlice</a> constructor is returned in response, the full difference was too large to be received in one request. The intermediate status, <strong>intermediate_state</strong>, must be saved on the client and the query must be repeated, using the intermediate status as the current status.</p> +<p>To fetch the updates difference of a channel, <a href="/method/updates.getChannelDifference">updates.getChannelDifference</a> is used. +If the difference is too large to be received in one request, the <code>final</code> flag of the result is <strong>not</strong> set (see <a href="/type/updates.ChannelDifference">docs</a>). +The intermediate status, represented by the <strong>pts</strong>, must be saved on the client and the query must be repeated, using the intermediate status as the current status.</p> +<p>For perfomance reasons and for better user experience, client can set maximum gap size to be filled: <code>pts_total_limit</code> parameter of <a href="/method/updates.getDifference">updates.getDifference</a> and <code>limit</code> parameter for <a href="/method/updates.getChannelDifference">updates.getChannelDifference</a> can be used.</p> +<p>If the gap is too large and there are too many updates to fetch, a <code>*TooLong</code> constructor will be returned. In this case, the client must <a href="#fetching-state">re-fetch the state</a>, re-start fetching updates from that state and follow the instructions that can be found <a href="/constructor/updates.channelDifferenceTooLong">here</a>.</p> +<p>It is recommended to use limit <code>10-100</code> for channels and <code>1000-10000</code> otherwise.</p> +<h3><a class="anchor" href="#example-implementations" id="example-implementations" name="example-implementations"><i class="anchor-icon"></i></a>Example implementations</h3> +<p>Implementations also have to take care to postpone updates received via the socket while filling gaps in the event and Update sequences, as well as avoid filling gaps in the same sequence.</p> +<p>Example implementations: <a href="https://github.com/tdlib/td">tdlib</a>, <a href="https://github.com/danog/MadelineProto">MadelineProto</a>. </p> +<p>An interesting and easy way this can be implemented, instead of using various locks, is by running background loops, like in <a href="https://docs.madelineproto.xyz/docs/UPDATES_INTERNAL.html">MadelineProto »</a>.</p> +<h3><a class="anchor" href="#push-notifications-about-updates" id="push-notifications-about-updates" name="push-notifications-about-updates"><i class="anchor-icon"></i></a><a href="/api/push-updates">PUSH Notifications about Updates</a></h3> +<p>If a client does not have an active connection at the time of an event, <a href="/api/push-updates">PUSH Notifications</a> will also be useful.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/url-authorization.html b/data/corefork.telegram.org/api/url-authorization.html new file mode 100644 index 0000000000..365eb87458 --- /dev/null +++ b/data/corefork.telegram.org/api/url-authorization.html @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Seamless Telegram Login</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Handle Seamless Telegram Login URL authorization requests."> + <meta property="og:title" content="Seamless Telegram Login"> + <meta property="og:image" content="faa06a44f2ab0cf059"> + <meta property="og:description" content="Handle Seamless Telegram Login URL authorization requests."> + <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?215" 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/url-authorization" >Seamless Telegram Login</a></li></ul></div> + <h1 id="dev_page_title">Seamless Telegram Login</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Bots or Telegram websites may <a href="/bots/api#loginurl">ask users to login to a certain website via Telegram</a> when clicking on certain links or URL buttons in inline keyboards.</p> +<h3><a class="anchor" href="#bot-url-authorization" id="bot-url-authorization" name="bot-url-authorization"><i class="anchor-icon"></i></a>Bot URL authorization</h3> +<p>When the user clicks on <a href="/constructor/keyboardButtonUrlAuth">keyboardButtonUrlAuth</a>, <a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a> should be called, providing the <code>button_id</code> of the button and the ID and peer of the container message. +The returned <a href="/constructor/urlAuthResultRequest">urlAuthResultRequest</a> object will contain more details about the authorization request:</p> +<ul> +<li>The <code>domain</code> parameter will contain the domain name of the website on which the user will log in (example: <em>comments.app</em>).</li> +<li>The <code>bot</code> parameter will contain info about the bot which will be used for user authorization (example: <em>DiscussBot</em>).</li> +<li>The <code>request_write_access</code> will be set if the bot would like to send messages to the user.</li> +</ul> +<p>The info should be shown in a prompt:</p> +<div><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></div> +<p>If the user agrees to login to the URL, <a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a> should be called (eventually setting the <code>write_allowed</code> if the permission was requested and the user consented). +The result will be a <a href="/constructor/urlAuthResultAccepted">urlAuthResultAccepted</a> with the final URL to open, which will include a query string with the requested info and a hash that <a href="/widgets/login#receiving-authorization-data">must be verified upon receival by the service</a>.</p> +<p><a href="/constructor/urlAuthResultDefault">urlAuthResultDefault</a> could also be returned, instead, in which case the <code>url</code> of the <a href="/constructor/keyboardButtonUrlAuth">keyboardButtonUrlAuth</a> must be opened, instead. +The same must be done if the user opens the link while refusing the authorization request.</p> +<h3><a class="anchor" href="#link-url-authorization" id="link-url-authorization" name="link-url-authorization"><i class="anchor-icon"></i></a>Link URL authorization</h3> +<p>Telegram supports automatic authorization on certain websites upon opening an HTTP URL in-app, upon clicking a link in a message or clicking on a <a href="/constructor/keyboardButtonUrl">keyboardButtonUrl</a>.</p> +<h4><a class="anchor" href="#automatic-authorization" id="automatic-authorization" name="automatic-authorization"><i class="anchor-icon"></i></a>Automatic authorization</h4> +<p>Clients should automatically authenticate users when opening official Telegram websites, listed in the <code>url_auth_domains</code> key of the <a href="/api/config#client-configuration">client configuration object »</a>. </p> +<p>Upon clicking a link, the URL must be modified by appending the <code>autologin_token</code> from the <a href="/api/config#client-configuration">client configuration object »</a> to the <a href="https://datatracker.ietf.org/doc/html/rfc3986#section-3.4">query string</a>, like so: </p> +<p>Original URL: <code>https://somedomain.telegram.org/path?query=string#fragment=value</code><br> +Modified URL: <code>https://somedomain.telegram.org/path?query=string&autologin_token=$autologin_token#fragment=value</code> </p> +<p>Make sure that the used <code>autologin_token</code> is no more than <code>10000</code> seconds old, if it is older it must be refetched before use as described in the <a href="/api/config#client-configuration">client configuration section »</a>. </p> +<h4><a class="anchor" href="#manual-authorization" id="manual-authorization" name="manual-authorization"><i class="anchor-icon"></i></a>Manual authorization</h4> +<p>Clients should show a confirmation prompt similar to the one used <a href="#bot-url-authorization">for bots</a>, to authenticate users when opening certain Telegram websites, listed in the <code>url_auth_domains</code> key of the <a href="/api/config#client-configuration">client configuration object »</a>. </p> +<p><a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a> should be called, providing only the original <code>url</code>. +The returned <a href="/constructor/urlAuthResultRequest">urlAuthResultRequest</a> object will contain more details about the authorization request:</p> +<ul> +<li>The <code>domain</code> parameter will contain the domain name of the website on which the user will log in (example: <em>comments.app</em>).</li> +<li>The <code>request_write_access</code> will be set if the website would like to send messages to the user.</li> +</ul> +<p>The info should be shown in a prompt. </p> +<p>If the user agrees to login to the URL, <a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a> should be called (eventually setting the <code>write_allowed</code> if the permission was requested and the user consented). +The result will be a <a href="/constructor/urlAuthResultAccepted">urlAuthResultAccepted</a> with the final URL to open. </p> +<p><a href="/constructor/urlAuthResultDefault">urlAuthResultDefault</a> could also be returned, instead, in which case the original URL must be opened, instead. +The same must be done if the user opens the link while refusing the authorization request.</p> +<h3><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h3> +<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/api/web-events.html b/data/corefork.telegram.org/api/web-events.html new file mode 100644 index 0000000000..ffe0ed4019 --- /dev/null +++ b/data/corefork.telegram.org/api/web-events.html @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Web events</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="How telegram apps interact with webpages"> + <meta property="og:title" content="Web events"> + <meta property="og:image" content=""> + <meta property="og:description" content="How telegram apps interact with webpages"> + <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?215" 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/web-events" >Web events</a></li></ul></div> + <h1 id="dev_page_title">Web events</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>When interacting with HTML5 games and the websites of payment gateways, Telegram apps should expose APIs to allow receiving data and events from the websites.</p> +<h3><a class="anchor" name="event-apis" href="#event-apis"><i class="anchor-icon"></i></a>Event APIs</h3> +<p>Games and payment gateways can generate events that are meant to be received by the Telegram apps.<br>Typically events are generated by using the <code>postEvent</code> method of the <a href="https://github.com/TelegramMessenger/GamingCommunication/blob/master/games.js">GamingCommunication library</a>.<br>The <code>postEvent</code> function will try sending the event to the Telegram app in a number of different ways.</p> +<h4><a class="anchor" name="webviewproxy" href="#webviewproxy"><i class="anchor-icon"></i></a>WebviewProxy</h4> +<p>In mobile apps, the event receiver API should be typically exposed as a <code>window.TelegramWebviewProxy</code> object with a <code>postEvent</code> method.</p> +<pre><code>window.TelegramWebviewProxy.postEvent(eventType, eventData)</code></pre> +<h4><a class="anchor" name="window-external" href="#window-external"><i class="anchor-icon"></i></a>window.external</h4> +<p>Alternatively, a <code>window.external.notify</code> method can be exposed, accepting a string JSON payload with the event type and payload:</p> +<pre><code>window.external.notify(JSON.stringify({eventType: eventType, eventData: eventData}));</code></pre> +<h4><a class="anchor" name="postmessage-api" href="#postmessage-api"><i class="anchor-icon"></i></a>postMessage API</h4> +<p>Finally, web MTProto clients that need to open a game or process a payment in an iframe can use the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage">postMessage API</a> to receive events from iframes.<br>The <a href="https://github.com/TelegramMessenger/GamingCommunication/blob/master/games.js">GamingCommunication library</a> by default will use <code>'*'</code> as <code>targetOrigin</code>, sending messages to parent pages regardless of the origin of the embedder.</p> +<pre><code>window.parent.postMessage(JSON.stringify({eventType: eventType, eventData: eventData}), targetOrigin);</code></pre> +<h4><a class="anchor" name="event-types" href="#event-types"><i class="anchor-icon"></i></a>Event types</h4> +<p><code>eventType</code> is a simple string indicating the event type, and <code>eventData</code> is a payload with an object that will be parsed by the Telegram app.</p> +<table class="table"> +<thead> +<tr> +<th>eventType</th> +<th>eventData</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>payment_form_submit</code></td> +<td>JSON object with <code>data</code> and <code>title</code> fields</td> +<td><code>title</code> is the censored credit card title.<br><code>data</code> is a service-specific JSON payload with information about the payment credentials provided by the user to the payment system.<br><strong>Neither Telegram, nor bots will have access to your credit card information.</strong><br>Credit card details will be handled only by the payment system.</td> +</tr> +<tr> +<td><code>share_score</code></td> +<td>null</td> +<td>Will be called by games when the user explicitly clicks on the <strong>share score</strong> button to share the game, along with his score.<br>Typically done by using <a href="/method/messages.forwardMessages">messages.forwardMessages</a> on the game message with the <code>with_my_score</code> flag.</td> +</tr> +<tr> +<td><code>share_game</code></td> +<td>null</td> +<td>Will be called by games when the user explicitly clicks on the <strong>share game</strong> button to share the game, without sharing his score.<br>Typically done by using <a href="/method/messages.forwardMessages">messages.forwardMessages</a> on the game message without the <code>with_my_score</code> flag, or by sharing the game's short URL.</td> +</tr> +<tr> +<td><code>game_over</code></td> +<td>null</td> +<td>Can be called by games when the user loses a game</td> +</tr> +<tr> +<td><code>game_loaded</code></td> +<td>null</td> +<td>Can be called by games once the game fully loads</td> +</tr> +<tr> +<td><code>resize_frame</code></td> +<td>JSON object with <code>height</code> field</td> +<td>Called by supported pages inside of <a href="https://instantview.telegram.org">IV</a> iframe embeds, indicates the new size of the embed frame.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/bots.html b/data/corefork.telegram.org/bots.html new file mode 100644 index 0000000000..c2070b62dc --- /dev/null +++ b/data/corefork.telegram.org/bots.html @@ -0,0 +1,420 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Bots: An introduction for developers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Bots are third-party applications that run inside Telegram. Users can interact with bots by sending them messages, commands…"> + <meta property="og:title" content="Bots: An introduction for developers"> + <meta property="og:image" content="75f7c457f2561cbf84"> + <meta property="og:description" content="Bots are third-party applications that run inside Telegram. Users can interact with bots by sending them messages, commands…"> + <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?215" 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">Bots: An introduction for developers</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Bots are third-party applications that run inside Telegram. Users can interact with bots by sending them messages, commands and <a href="#inline-mode">inline requests</a>. You control your bots using HTTPS requests to our <a href="/bots/api">Bot API</a>.</p> +<h3><a class="anchor" href="#1-what-can-i-do-with-bots" id="1-what-can-i-do-with-bots" name="1-what-can-i-do-with-bots"><i class="anchor-icon"></i></a>1. What can I do with bots?</h3> +<div class="dev_side_image"> + <a href="/file/811140081/1/VldnlW70g2I/a140b0216e7d156ebc" target="_blank"><img src="/file/811140663/1/uHVzwsRJz3Y/a499733c59840694ca" title="A chat with a bot also showing search results from the @gif inline-bot"></a> +</div> +<p>To name just a few things, you could use bots to:</p> +<ul> +<li> +<p><strong>Get customized notifications and news</strong>. A bot can act as a smart newspaper, sending you relevant content as soon as it's published.</p> +</li> +<li> +<p><strong>Integrate with other services</strong>. A bot can enrich Telegram chats with content from external services. +<a href="https://t.me/gmailbot"><strong>Gmail Bot</strong></a>, <a href="https://t.me/gif"><strong>GIF bot</strong></a>, <a href="https://t.me/imdb"><strong>IMDB bot</strong></a>, <a href="https://t.me/wiki"><strong>Wiki bot</strong></a>, <a href="https://t.me/music"><strong>Music bot</strong></a>, <a href="https://t.me/youtube"><strong>Youtube bot</strong></a>, <a href="https://t.me/githubbot"><strong>GitHubBot</strong></a></p> +</li> +<li> +<p><strong>Accept payments from Telegram users</strong>. A bot can offer paid services or work as a virtual storefront. <a href="/bots/payments">Read more »</a> +<a href="https://t.me/shopbot"><strong>Demo Shop Bot</strong></a>, <a href="https://t.me/teststore"><strong>Demo Store</strong></a></p> +</li> +<li> +<p><strong>Create custom tools</strong>. A bot may provide you with alerts, weather forecasts, translations, formatting or other services. +<a href="https://t.me/Bold"><strong>Markdown bot</strong></a>, <a href="https://t.me/sticker"><strong>Sticker bot</strong></a>, <a href="https://t.me/vote"><strong>Vote bot</strong></a>, <a href="https://t.me/like"><strong>Like bot</strong></a></p> +</li> +<li> +<p><strong>Build single- and multiplayer games</strong>. A bot can offer rich <a href="/bots/games">HTML5 experiences</a>, from simple arcades and puzzles to 3D-shooters and real-time strategy games. +<a href="https://t.me/gamebot"><strong>GameBot</strong></a>, <a href="https://t.me/gamee"><strong>Gamee</strong></a></p> +</li> +<li> +<p><strong>Build social services</strong>. A bot could connect people looking for conversation partners based on common interests or proximity.</p> +</li> +<li> +<p><strong>Do virtually anything else</strong>. Except for dishes — bots are terrible at doing the dishes.</p> +</li> +</ul> +<h3><a class="anchor" href="#2-how-do-bots-work" id="2-how-do-bots-work" name="2-how-do-bots-work"><i class="anchor-icon"></i></a>2. How do bots work?</h3> +<p>At the core, Telegram Bots are special accounts that do not require an additional phone number to set up. Users can interact with bots in two ways:</p> +<ul> +<li>Send messages and <a href="#commands">commands</a> to bots by opening a chat with them or by adding them to groups.</li> +<li>Send requests directly from the input field by typing the bot's @username and a query. This allows sending content from <a href="/bots/inline">inline bots</a> directly into any chat, group or channel.</li> +</ul> +<p>Messages, commands and requests sent by users are passed to the software running on your servers. Our intermediary server handles all encryption and communication with the Telegram API for you. You communicate with this server via a simple HTTPS-interface that offers a simplified version of the Telegram API. We call that interface our <a href="/bots/api">Bot API</a>.</p> +<blockquote> +<p>A detailed description of the Bot API is available on <a href="/bots/api">this page »</a></p> +</blockquote> +<h3><a class="anchor" href="#3-how-do-i-create-a-bot" id="3-how-do-i-create-a-bot" name="3-how-do-i-create-a-bot"><i class="anchor-icon"></i></a>3. How do I create a bot?</h3> +<div class="dev_side_image"> + <a href="/file/811140327/1/zlN4goPTupk/9ff2f2f01c4bd1b013" target="_blank"><img src="/file/811140763/1/PihKNbjT8UE/03b57814e13713da37" title="The Botfather. Click for hi-res picture"></a> +</div> +<p>There's a... bot for that. Just talk to <a href="https://t.me/botfather">BotFather</a> (described <a href="#6-botfather">below</a>) and follow a few simple steps. Once you've created a bot and received your authentication token, head down to the <a href="/bots/api">Bot API manual</a> to see what you can teach your bot to do.</p> +<blockquote> +<p>You may also like to check out some <strong>code examples</strong> <a href="/bots/samples">here »</a></p> +</blockquote> +<h3><a class="anchor" href="#4-how-are-bots-different-from-humans" id="4-how-are-bots-different-from-humans" name="4-how-are-bots-different-from-humans"><i class="anchor-icon"></i></a>4. How are bots different from humans?</h3> +<ul> +<li>Bots have no online status and no last seen timestamps, the interface shows the label <strong>'bot'</strong> instead.</li> +<li>Bots have limited cloud storage — older messages may be removed by the server shortly after they have been processed.</li> +<li>Bots can't initiate conversations with users. A user <strong>must</strong> either add them to a group or send them a message first. People can use <code>t.me/<bot_username></code> links or username search to find your bot.</li> +<li>Bot usernames always end in 'bot' (e.g. <a href="https://t.me/triviabot">@TriviaBot</a>, <a href="https://t.me/githubbot">@GitHub_bot</a>).</li> +<li>When added to a group, bots do not receive all messages by default (see <a href="#privacy-mode">Privacy mode</a>).</li> +<li>Bots never eat, sleep or complain (unless expressly programmed otherwise).</li> +</ul> +<hr> +<h3><a class="anchor" href="#5-bot-perks" id="5-bot-perks" name="5-bot-perks"><i class="anchor-icon"></i></a>5. Bot perks</h3> +<p>Telegram bots are unique in many ways — we offer <a href="#keyboards">two</a> <a href="#inline-keyboards-and-on-the-fly-updating">kinds</a> of keyboards, additional interfaces for <a href="#global-commands">default commands</a> and <a href="#deep-linking">deep linking</a> as well as <a href="/bots/api#formatting-options">text formatting</a>, <a href="#payment-platform">integrated payments</a> and more.</p> +<h4><a class="anchor" href="#inline-mode" id="inline-mode" name="inline-mode"><i class="anchor-icon"></i></a>Inline mode</h4> +<!--<div class="dev_side_image"> + <a href="/file/811140221/1/fW9vnLya4Fg/e2b5c530c7b0e019c4" target="_blank"><img src="/file/811140530/1/h-eMmPp2vp4/cd4a109f75e6561305" title="Inline bots. Click for hi-res picture"> +</a></div>--> +<p>Users can interact with your bot via <a href="/bots/api#inline-mode"><strong>inline queries</strong></a> straight from the <strong>text input field</strong> in <strong>any</strong> chat. All they need to do is start a message with your bot's username and then type a query.</p> +<p>Having received the query, your bot can return some results. As soon as the user taps one of them, it is sent to the user's currently opened chat. This way, people can request content from your bot in any of their chats, groups or channels.</p> +<p>Check out this <a href="https://telegram.org/blog/inline-bots">blog</a> to see a sample inline bot in action. You can also try the <a href="https://t.me/sticker">@sticker</a> and <a href="https://t.me/music">@music</a> bots to see for yourself.</p> +<div><center> +<a href="/file/811140558/1/POjp00-nHqE/50d0312845a05e6da9" target="_blank"><img src="/file/811140558/1/POjp00-nHqE/50d0312845a05e6da9" title="New input field" style="width: 295px; padding: 10px 0px;"></a></center> +</div> +<p>We've also implemented an easy way for your bot to <a href="/bots/inline#switching-inline-pm-modes">switch between inline and PM modes</a>.</p> +<blockquote> +<p><a href="/bots/inline">Read more about the Inline Mode »</a></p> +</blockquote> +<h4><a class="anchor" href="#payment-platform" id="payment-platform" name="payment-platform"><i class="anchor-icon"></i></a>Payment platform</h4> +<!--<div class="dev_side_image"> + <a href="/file/811140227/2/ZTXUngAbELM.193805/ba6aa233d1d4206207" target="_blank"><img src="/file/811140095/1/lfTvDVqVS8M.43169/1a191248e6cf027581" title="Payments API. Click for hi-res picture"> +</a></div>--> +<p>You can use bots to <strong>accept payments</strong> from Telegram users around the world.</p> +<ul> +<li>Send invoices to <strong>any chat</strong>, including to groups and channels.</li> +<li>Create invoices that can be <strong>forwarded</strong> and used by <strong>multiple buyers</strong> to order things.</li> +<li>Use <a href="/bots/inline">inline mode</a> to help users show your goods and services to their friends and communities.</li> +<li>Allow <strong>tips</strong> from users with preset and custom amounts.</li> +<li>Accept payments from users on mobile or <strong>desktop apps</strong>.</li> +<li>Try <a href="https://t.me/shopbot">@ShopBot</a> to create a test invoice – or start a message with <code>@ShopBot ...</code> in any chat for an <strong>inline invoice</strong>.</li> +<li>Check out <a href="https://telegram.org/teststore">Demo Shop</a> for an example of a <a href="https://telegram.org/tour/channels">Telegram Channel</a> used as <strong>virtual storefront</strong>.</li> +</ul> +<div class="blog_video_player_wrap" style="max-width: 400px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001377/1/0o3vSvY22g8.123356/deb4ed6951d780f7b7" style="max-width: 400px;" title="If your pizza place can't deliver a clone army, you're buying pizza from the wrong shop." alt="Video: Ordering a pizza through a Telegram channel"> + <source src="/file/464001705/2/Hg-klQnZ_n4.4889245.mp4/d324511ffdab7b4668" type="video/mp4"> + </source></video> +</div> +<blockquote> +<p><a href="/bots/payments">Read more about the Payments Platform »</a></p> +</blockquote> +<h4><a class="anchor" href="#gaming-platform" id="gaming-platform" name="gaming-platform"><i class="anchor-icon"></i></a>Gaming platform</h4> +<p>Bots can offer their users <strong>HTML5 games</strong> to play solo or to compete against each other in groups and one-on-one chats. The platform allows your bot to keep track of <strong>high scores</strong> for every game played in every chat. Whenever there’s a new leader in the game, other playing members in the chat are notified that they need to step it up. </p> +<div><center> + <a href="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" target="_blank"><img src="/file/811140306/1/dkciuEDbpxU.193188/8a0a21b6e9d111be4c" title="Game in a chat" style="width: 250px; padding: 10px 5px"></a> + <a href="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" target="_blank"><img src="/file/811140426/1/ZCw3vu_v8s0.109692/04efd9e88644939a4f" title="In-game scoreboard and sharing button" style="width: 250px; padding: 10px 5px"></a> +</center> +</div> +<p>Since the underlying technology is HTML5, the games can be anything from simple arcades and puzzles to multiplayer 3D-shooters and real-time strategy games. Our team has created a couple of simple demos for you to try out:</p> +<ul> +<li><a href="https://t.me/gamebot?game=MathBattle">Math Battle</a></li> +<li><a href="https://t.me/gamebot?game=Lumberjack">Lumberjack</a></li> +<li><a href="https://t.me/gamebot?game=Corsairs">Corsairs</a></li> +</ul> +<p>You can also check out the <a href="https://t.me/gamee"><strong>@gamee</strong></a> bot that has more than 20 games.</p> +<blockquote> +<p><a href="https://telegram.org/blog/games">Read more about the Gaming Platform »</a></p> +</blockquote> +<h4><a class="anchor" href="#keyboards" id="keyboards" name="keyboards"><i class="anchor-icon"></i></a>Keyboards</h4> +<p>Traditional chat bots can of course be taught to understand human language. But sometimes you want some more formal input from the user — and this is where <strong>custom keyboards</strong> can become extremely useful.</p> +<p>Whenever your bot sends a message, it can pass along a special keyboard with predefined reply options (see <a href="/bots/api/#replykeyboardmarkup">ReplyKeyboardMarkup</a>). Telegram apps that receive the message will display your keyboard to the user. Tapping any of the buttons will immediately send the respective command. This way you can drastically simplify user interaction with your bot.</p> +<p>We currently support text and emoji for your buttons. Here are some custom keyboard examples:</p> +<center> +<div> + <a href="/file/811140184/1/5YJxx-rostA/ad3f74094485fb97bd" target="_blank"><img src="/file/811140184/1/5YJxx-rostA/ad3f74094485fb97bd" title="Keyboard for a poll bot" style="max-height: 300px; padding: 10px 5px"></a> +<pre><code><a href="/file/811140880/1/jS-YSVkDCNQ/b397dfcefc6da0dc70" target="_blank"><img src="/file/811140880/1/jS-YSVkDCNQ/b397dfcefc6da0dc70" title="Keyboard for a calculator bot. Because you can." style="max-height: 300px; padding: 10px 5px" /></a> + +<a href="/file/811140733/2/KoysqJKQ_kI/a1ee46a377796c3961" target="_blank"><img src="/file/811140733/2/KoysqJKQ_kI/a1ee46a377796c3961" title="Keyboard for a trivia bot" style="max-height: 300px; padding: 10px 5px" /></a></code></pre> +</div></center> +<blockquote> +<p>For more technical information on custom keyboards, please consult the <a href="/bots/api">Bot API manual</a> (see <a href="/bots/api#sendmessage">sendMessage</a>).</p> +</blockquote> +<h4><a class="anchor" href="#inline-keyboards-and-on-the-fly-updating" id="inline-keyboards-and-on-the-fly-updating" name="inline-keyboards-and-on-the-fly-updating"><i class="anchor-icon"></i></a>Inline keyboards and on-the-fly updating</h4> +<p>There are times when you'd prefer to do things without sending any messages to the chat. For example, when your user is changing settings or flipping through search results. In such cases you can use Inline Keyboards that are integrated directly into the messages they belong to. </p> +<p>Unlike with custom reply keyboards, pressing buttons on inline keyboards doesn't result in messages sent to the chat. Instead, inline keyboards support buttons that work behind the scenes: <a href="/bots/2-0-intro#callback-buttons">callback buttons</a>, <a href="/bots/2-0-intro#url-buttons">URL buttons</a> and <a href="/bots/2-0-intro#switch-to-inline-buttons">switch to inline buttons</a>.</p> +<div><center> + <a href="/file/811140217/1/NkRCCLeQZVc/17a804837802700ea4" target="_blank"><img src="/file/811140217/1/NkRCCLeQZVc/17a804837802700ea4" title="Callback buttons in @music" style="width: 240px; padding: 10px 5px;"></a> + <a href="/file/811140659/1/RRJyulbtLBY/ea6163411c7eb4f4dc" target="_blank"><img src="/file/811140659/1/RRJyulbtLBY/ea6163411c7eb4f4dc" title="More callback buttons in @music" style="width: 240px; padding: 10px 5px;"></a> + <a href="/file/811140999/1/2JSoUVlWKa0/4fad2e2743dc8eda04" target="_blank"><img src="/file/811140999/1/2JSoUVlWKa0/4fad2e2743dc8eda04" title="A URL button" style="width:240px; padding:10px 5px"></a> +</center> +</div> +<p>When callback buttons are used, your bot can update its existing messages (or just their keyboards) so that the chat remains tidy. Check out these sample bots to see inline keyboards in action: <a href="https://t.me/music">@music</a>, <a href="https://t.me/vote">@vote</a>, <a href="https://t.me/like">@like</a>.</p> +<blockquote> +<p><a href="/bots/2-0-intro#new-inline-keyboards">Read more about inline keyboards and on-the-fly editing »</a></p> +</blockquote> +<h4><a class="anchor" href="#commands" id="commands" name="commands"><i class="anchor-icon"></i></a>Commands</h4> +<p>Commands present a more flexible way to communicate with your bot. The following syntax may be used:</p> +<pre><code>/command</code></pre> +<p>A command must always start with the '/' symbol and may not be longer than 32 characters. Commands can use latin letters, numbers and underscores. Here are a few examples:</p> +<pre><code>/get_messages_stats +/set_timer 10min Alarm! +/get_timezone London, UK</code></pre> +<p>Messages that start with a slash are always passed to the bot (along with replies to its messages and messages that @mention the bot by username). Telegram apps will:</p> +<ul> +<li>Suggest a list of supported commands with descriptions when the user enters a '/' (for this to work, you need to have provided a list of commands to the <a href="#6-botfather">BotFather</a>). Tapping on a command in the list immediately sends the command.</li> +<li>Show an additional <strong>(/)</strong> button in the input field in all chats with bots. Tapping it types a '/' and shows the list of commands.</li> +<li>Highlight <strong>/commands</strong> in messages. When the user taps a highlighted command, the command is sent at once.</li> +</ul> +<center><div> + <a href="/file/811140845/2/rNUxpcGDeQU/05eaaf20b0dbaf9cb3" target="_blank"><img src="/file/811140845/2/rNUxpcGDeQU/05eaaf20b0dbaf9cb3" title="Suggested commands" style="width: 230px; padding: 10px 5px"></a> +<pre><code><a href="/file/811140315/2/gf7_D2HbeyM/e3ca2de4de7918f826" target="_blank"><img src="/file/811140315/2/gf7_D2HbeyM/e3ca2de4de7918f826" title="Notice the new button in the input field, right next to the sticker button" style="width: 230px; padding: 10px 5px" /></a> + + +<a href="/file/811140029/1/s5zv4fbWdhw/a04aefa0ee0557f16a" target="_blank"><img src="/file/811140029/1/s5zv4fbWdhw/a04aefa0ee0557f16a" title="Suggested commands for multiple bots" style="width: 230px; padding: 10px 5px" /></a></code></pre> +</div></center> +<p>If multiple bots are in a group, it is possible to add bot usernames to commands in order to avoid confusion:</p> +<pre><code>/start@TriviaBot +/start@ApocalypseBot</code></pre> +<p>This is done automatically when commands are selected via the list of suggestions. Please remember that your bot needs to be able to process commands that are followed by its username.</p> +<h5><a class="anchor" href="#global-commands" id="global-commands" name="global-commands"><i class="anchor-icon"></i></a>Global commands</h5> +<p>In order to make it easier for users to navigate the bot multiverse, we ask all developers to support a few basic commands. Telegram apps will have <strong>interface shortcuts</strong> for these commands.</p> +<ul> +<li><strong>/start</strong> - begins interaction with the user, e.g., by sending a greeting message. This command can also be used to pass additional parameters to the bot (see <a href="#deep-linking">Deep linking</a>)</li> +<li><strong>/help</strong> - returns a help message. It can be a short text about what your bot can do and a list of commands.</li> +<li><strong>/settings</strong> - (if applicable) returns the bot's settings for this user and suggests commands to edit these settings.</li> +</ul> +<p>Users will see a <strong>Start</strong> button when they first open a conversation with your bot. <strong>Help</strong> and <strong>Settings</strong> links will be available in the menu on the bot's profile page.</p> +<center><div> + <a href="/file/811140979/2/yD8AphHbahk/7662d14f4e0442ae3a" target="_blank"><img src="/file/811140979/2/yD8AphHbahk/7662d14f4e0442ae3a" title="An empty conversation with a bot" style="width: 250px; padding: 10px 5px"></a> +<pre><code><a href="/file/811140479/2/1c2zUWhR7sA/98889b2a45f8e42a35" target="_blank"><img src="/file/811140479/2/1c2zUWhR7sA/98889b2a45f8e42a35" title="A bot's profile page, featuring 'Help' and 'Settings' buttons" style="width: 250px; padding: 10px 5px" /></a></code></pre> +</div></center> +<h4><a class="anchor" href="#formatting-bold-italic-fixed-width-text-and-inline-links" id="formatting-bold-italic-fixed-width-text-and-inline-links" name="formatting-bold-italic-fixed-width-text-and-inline-links"><i class="anchor-icon"></i></a>Formatting: bold, italic, fixed-width text and inline links</h4> +<p>You can use bold, italic or fixed-width text, as well as inline links in your bots' messages. Telegram clients will render them accordingly. </p> +<blockquote> +<p><a href="bots/api#formatting-options">Read more in the Bot API manual »</a></p> +</blockquote> +<h4><a class="anchor" href="#privacy-mode" id="privacy-mode" name="privacy-mode"><i class="anchor-icon"></i></a>Privacy mode</h4> +<p>Bots are frequently added to groups in order to augment communication between human users, e.g. by providing news, notifications from external services or additional search functionality. This is especially true for work-related groups. Now, when you share a group with a bot, you tend to ask yourself "How can I be sure that the little rascal isn't selling my chat history to my competitors?" The answer is — <strong>privacy mode</strong>.</p> +<p>A bot running in privacy mode will not receive all messages that people send to the group. Instead, it will only receive:</p> +<ul> +<li>Messages that start with a slash '/' (see <a href="#commands">Commands</a> above)</li> +<li>Replies to the bot's own messages</li> +<li>Service messages (people added or removed from the group, etc.)</li> +<li>Messages from channels where it's a member</li> +</ul> +<p>On one hand, this helps some of us sleep better at night (in our tinfoil nightcaps), on the other — it allows the bot developer to save a lot of resources, since they won't need to process tens of thousands irrelevant messages each day.</p> +<p>Privacy mode is enabled by default for all bots, except bots that were added to the group as <strong>admins</strong> (bot admins always receive all messages). It can be disabled, so that the bot receives all messages like an ordinary user (the bot will need to be <strong>re-added</strong> to the group for this change to take effect). We only recommend doing this in cases where it is absolutely necessary for your bot to work — users can always see a bot's current privacy setting in the group members list. In most cases, using the <a href="/bots/api#forcereply">force reply</a> option for the bot's messages should be more than enough. </p> +<p><a href="/bots/faq#what-messages-will-my-bot-get">So what messages exactly will my bot get? »</a></p> +<h4><a class="anchor" href="#deep-linking" id="deep-linking" name="deep-linking"><i class="anchor-icon"></i></a>Deep linking</h4> +<p>Telegram bots have a <a href="https://en.wikipedia.org/wiki/Deep_linking">deep linking</a> mechanism, that allows for passing additional parameters to the bot on startup. It could be a command that launches the bot — or an authentication token to connect the user's Telegram account to their account on some external service.</p> +<p>Each bot has a link that opens a conversation with it in Telegram — <code>https://t.me/<bot username></code>. You can add the parameters <strong>start</strong> or <strong>startgroup</strong> to this link, with values up to 64 characters long. For example:</p> +<pre><code>https://t.me/triviabot?startgroup=test</code></pre> +<p><code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>_</code> and <code>-</code> are allowed. We recommend using <a href="https://en.wikipedia.org/wiki/Base64#The_URL_applications">base64url</a> to encode parameters with binary and other types of content.</p> +<p>Following a link with the <strong>start</strong> parameter will open a one-on-one conversation with the bot, showing a START button in the place of the input field. If the <strong>startgroup</strong> parameter is used, the user is prompted to select a group to add the bot to. As soon as a user confirms the action (presses the START button in their app or selects a group to add the bot to), your bot will receive a message from that user in this format:</p> +<pre><code>/start PAYLOAD</code></pre> +<p><code>PAYLOAD</code> stands for the value of the <strong>start</strong> or <strong>startgroup</strong> parameter that was passed in the link.</p> +<h5><a class="anchor" href="#deep-linking-example" id="deep-linking-example" name="deep-linking-example"><i class="anchor-icon"></i></a>Deep linking Example</h5> +<p>Suppose the website example.com would like to send notifications to its users via a Telegram bot. Here's what they could do to enable notifications for a user with the ID <code>123</code>.</p> +<ol> +<li><a href="#6-botfather">Create a bot</a> with a suitable username, e.g. @ExampleComBot</li> +<li>Set up a <a href="/bots/api#setwebhook">webhook</a> for incoming messages</li> +<li>Generate a random string of a sufficient length, e.g. <code>$memcache_key = "vCH1vGWJxfSeofSAs0K5PA"</code></li> +<li>Put the value <code>123</code> with the key <code>$memcache_key</code> into Memcache for 3600 seconds (one hour) </li> +<li>Show our user the button <code>https://t.me/ExampleComBot?start=vCH1vGWJxfSeofSAs0K5PA</code></li> +<li>Configure the webhook processor to query Memcached with the parameter that is passed in incoming messages beginning with <code>/start</code>. If the key exists, record the chat_id passed to the webhook as <strong>telegram_chat_id</strong> for the user <code>123</code>. Remove the key from Memcache.</li> +<li>Now when we want to send a notification to the user <code>123</code>, check if they have the field <strong>telegram_chat_id</strong>. If yes, use the <a href="/bots/api#sendmessage">sendMessage</a> method in the <a href="/bots/api">Bot API</a> to send them a message in Telegram.</li> +</ol> +<h4><a class="anchor" href="#location-and-number" id="location-and-number" name="location-and-number"><i class="anchor-icon"></i></a>Location and Number</h4> +<p>Some bots need extra data from the user to work properly. For example, knowing the user's location helps provide more relevant geo-specific results. The user's phone number can be very useful for integrations with other services, like banks, etc.</p> +<p>Bots can ask a user for their <strong>location</strong> and <strong>phone number</strong> using special buttons. Note that both phone number and location request buttons will only work in private chats.</p> +<div><center> +<a href="/file/811140587/2/jaowDLZg2l0/5ba3f7d7fd5c6c28dc" target="_blank"><img src="/file/811140587/2/jaowDLZg2l0/5ba3f7d7fd5c6c28dc" title="Phone number and location sharing buttons" style="width: 295px; padding: 10px 20px;"></a></center> +</div> +<p>When these buttons are pressed, Telegram clients will display a confirmation alert that tells the user what's about to happen.</p> +<blockquote> +<p><a href="/bots/api#keyboardbutton">Manual: Number and location buttons »</a></p> +</blockquote> +<hr> +<h3><a class="anchor" href="#6-botfather" id="6-botfather" name="6-botfather"><i class="anchor-icon"></i></a>6. BotFather</h3> +<blockquote> +<p>Jump to top to learn everything about <a href="#">Telegram bots »</a></p> +</blockquote> +<p><a href="https://t.me/botfather">BotFather</a> is the one bot to rule them all. It will help you create new bots and change settings for existing ones.</p> +<h4><a class="anchor" href="#creating-a-new-bot" id="creating-a-new-bot" name="creating-a-new-bot"><i class="anchor-icon"></i></a>Creating a new bot</h4> +<p>Use the <strong>/newbot</strong> command to create a new bot. The BotFather will ask you for a name and username, then generate an authentication token for your new bot. </p> +<p>The <strong>name</strong> of your bot is displayed in contact details and elsewhere.</p> +<p>The <strong>Username</strong> is a short name, to be used in mentions and t.me links. Usernames are 5-32 characters long and are case insensitive, but may only include Latin characters, numbers, and underscores. Your bot's username <strong>must</strong> end in 'bot', e.g. 'tetris_bot' or 'TetrisBot'.</p> +<p>The <strong>token</strong> is a string along the lines of <code>110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw</code> that is required to authorize the bot and send requests to the <a href="/bots/api">Bot API</a>. Keep your token secure and store it safely, it can be used by anyone to control your bot.</p> +<h4><a class="anchor" href="#generating-an-authentication-token" id="generating-an-authentication-token" name="generating-an-authentication-token"><i class="anchor-icon"></i></a>Generating an authentication token</h4> +<p>If your existing token is compromised or you lost it for some reason, use the <strong>/token</strong> command to generate a new one.</p> +<h4><a class="anchor" href="#botfather-commands" id="botfather-commands" name="botfather-commands"><i class="anchor-icon"></i></a>Botfather commands</h4> +<p>The remaining commands are pretty self-explanatory:</p> +<ul> +<li><strong>/mybots</strong> — returns a list of your bots with handy controls to edit their settings</li> +<li><strong>/mygames</strong> — does the same for your games</li> +</ul> +<p><strong>Edit bots</strong></p> +<ul> +<li><strong>/setname</strong> – change your bot's name.</li> +<li><strong>/setdescription</strong> — change the bot's <strong>description</strong>, a short text of up to 512 characters, describing your bot. Users will see this text at the beginning of the conversation with the bot, titled 'What can this bot do?'.</li> +<li><strong>/setabouttext</strong> — change the bot's <strong>about info</strong>, an even shorter text of up to 120 characters. Users will see this text on the bot's profile page. When they share your bot with someone, this text is sent together with the link.</li> +<li><strong>/setuserpic</strong> — change the bot's profile pictures. It's always nice to put a face to a name.</li> +<li><strong>/setcommands</strong> — change the list of commands supported by your bot. Users will see these commands as suggestions when they type <code>/</code> in the chat with your bot. Each command has a name (must start with a slash ‘/’, alphanumeric plus underscores, no more than 32 characters, case-insensitive), parameters, and a text description. Users will see the list of commands whenever they type '/' in a conversation with your bot.</li> +<li><strong>/deletebot</strong> — delete your bot and free its username.</li> +</ul> +<p><strong>Edit settings</strong></p> +<ul> +<li><strong>/setinline</strong> — toggle <a href="/bots/inline">inline mode</a> for your bot.</li> +<li><strong>/setinlinegeo</strong> - request location data to provide <a href="/bots/inline#location-based-results">location-based inline results</a>.</li> +<li><strong>/setjoingroups</strong> — toggle whether your bot can be added to groups or not. Any bot must be able to process private messages, but if your bot was not designed to work in groups, you can disable this.</li> +<li><strong>/setprivacy</strong> — set which messages your bot will receive when added to a group. With privacy mode disabled, the bot will receive all messages. We recommend leaving <a href="#privacy-mode">privacy mode</a> enabled. You will need to re-add the bot to existing groups for this change to take effect.</li> +</ul> +<p><strong>Manage games</strong></p> +<ul> +<li><strong>/newgame</strong> — create a new <a href="/bots/games">game</a>.</li> +<li><strong>/listgames</strong> — get a list of your games.</li> +<li><strong>/editgame</strong> — edit a game.</li> +<li><strong>/deletegame</strong> — delete an existing game.</li> +</ul> +<blockquote> +<p>Please note, that it may take <strong>a few minutes</strong> for changes to take effect.</p> +</blockquote> +<h4><a class="anchor" href="#status-alerts" id="status-alerts" name="status-alerts"><i class="anchor-icon"></i></a>Status alerts</h4> +<p>Millions choose Telegram for its speed. To stay competitive in this environment, your bot also needs to be responsive. In order to help developers keep their bots in shape, Botfather will send status alerts if it sees something is wrong.</p> +<p>We will be checking the number of replies and the request/response conversion rate for popular bots (~300 requests per minute: but don't write this down as the value may change in the future). If we get abnormally low readings, you will receive a notification from Botfather.</p> +<h5><a class="anchor" href="#responding-to-alerts" id="responding-to-alerts" name="responding-to-alerts"><i class="anchor-icon"></i></a>Responding to alerts</h5> +<p>By default, you will only get one alert per bot per hour. Each alert has the following buttons:</p> +<ul> +<li><strong>Fixed.</strong> Use this if you found an issue with your bot and fixed it. If you press the fix button, we will resume sending alerts in the regular way so that you can see if your fix worked within 5-10 minutes instead of having to wait for an hour.</li> +<li><strong>Support.</strong> Use this to open a chat with <a href="https://t.me/botsupport">@BotSupport</a> if you don't see any issues with your bot or if you think the problem is on our side.</li> +<li><strong>Mute for 8h/1w.</strong> Use this if you can't fix your bot at the moment. This will disable all alerts for the bot in question for the specified period of time. We do not recommend using this option since your users may migrate to a more stable bot. You can unmute alerts in your bot's settings via Botfather.</li> +</ul> +<h5><a class="anchor" href="#monitored-issues" id="monitored-issues" name="monitored-issues"><i class="anchor-icon"></i></a>Monitored issues</h5> +<p>We will currently notify you about the following issues:</p> +<p><strong>1.</strong></p> +<pre><code>Too few **private messages** are sent compared to previous weeks: **{value}**</code></pre> +<p>Your bot is sending much fewer messages than it did in the previous weeks. This is useful for newsletter-style bots that send out messages without prompts from the users. The larger the value, the more significant the difference. </p> +<p><strong>2.</strong></p> +<pre><code>Too few replies to incoming **private messages**. Conversion rate: **{value}**</code></pre> +<p>Your bot is not replying to all messages that are being sent to it (the request/response conversion rate for your bot was too low for at least two of the last three 5-minute periods). To provide a good user experience, please respond to all messages that are sent to your bot. Respond to <em>message</em> <a href="https://core.telegram.org/bots/api#update">updates</a> by calling <em>send...</em> methods (e.g. <a href="https://core.telegram.org/bots/api#sendmessage">sendMessage</a>).</p> +<p><strong>3.</strong></p> +<pre><code>Too few answers to **inline queries**. Conversion rate: **{value}**</code></pre> +<p>Your bot is not replying to all inline queries that are being sent to it, calculated in the same way as above. Respond to <em>inline_query</em> <a href="https://core.telegram.org/bots/api#update">updates</a> by calling <a href="/bots/api#answerinlinequery">answerInlineQuery</a>.</p> +<p><strong>4.</strong></p> +<pre><code>Too few answers to **callback queries**. Conversion rate: **{value}** +Too few answers to **callback game queries**. Conversion rate: **{value}**</code></pre> +<p>Your bot is not replying to all callback queries that are being sent to it (with or without games), calculated in the same way as above. Respond to <em>callback_query</em> <a href="https://core.telegram.org/bots/api#update">updates</a> by calling <a href="/bots/api#answercallbackquery">answerCallbackQuery</a>.</p> +<blockquote> +<p>Please note that the status alerts feature is still being tested and will be improved in the future.</p> +</blockquote> +<hr> +<p>That's it for the introduction. You are now definitely ready to proceed to the <a href="/bots/api"><strong>BOT API MANUAL</strong></a>.</p> +<p>If you've got any questions, please check out our <a href="/bots/faq"><strong>Bot FAQ »</strong></a></p></div> + +</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/bots/api.html b/data/corefork.telegram.org/bots/api.html new file mode 100644 index 0000000000..a01ae0c040 --- /dev/null +++ b/data/corefork.telegram.org/bots/api.html @@ -0,0 +1,9288 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Bot API</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="Telegram Bot API"> + <meta property="og:image" content="30f729d4f304e41659"> + <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?215" 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="/bots" >Telegram Bots</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/bots/api" >Telegram Bot API</a></li></ul></div> + <h1 id="dev_page_title">Telegram Bot API</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. +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> and <a href="/bots/faq"><strong>Bot FAQ</strong></a>.</p> +</blockquote> +<h3><a class="anchor" href="#recent-changes" id="recent-changes" name="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> +<h4><a class="anchor" href="#june-25-2021" id="june-25-2021" name="june-25-2021"><i class="anchor-icon"></i></a>June 25, 2021</h4> +<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="#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="#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="#getmycommands">getMyCommands</a>.</li> +<li>Added the method <a href="#deletemycommands">deleteMyCommands</a> to allow deletion of the bot's commands for the given scope and user language.</li> +<li>Improved visibility of bot commands in Telegram apps with the new 'Menu' 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="#replykeyboardmarkup">ReplyKeyboardMarkup</a> and <a href="#forcereply">ForceReply</a>.</li> +</ul> +<p><strong>And More</strong></p> +<ul> +<li>Improved documentation of the class <a href="#chatmember">ChatMember</a> by splitting it into 6 subclasses.</li> +<li>Renamed the method <code>kickChatMember</code> to <a href="#banchatmember">banChatMember</a>. The old method name can still be used.</li> +<li>Renamed the method <code>getChatMembersCount</code> to <a href="#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="#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="#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> +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> +<h4><a class="anchor" href="#april-26-2021" id="april-26-2021" name="april-26-2021"><i class="anchor-icon"></i></a>April 26, 2021</h4> +<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="#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="#sendinvoice">sendInvoice</a> to allow adding optional tips to the payment.</li> +<li>The parameter <em>start_parameter</em> of the method <a href="#sendinvoice">sendInvoice</a> became optional. If the parameter isn'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="#inlinequery">InlineQuery</a>, containing the type of the chat, from which the inline request was sent.</li> +<li>Added the type <a href="#voicechatscheduled">VoiceChatScheduled</a> and the field <em>voice_chat_scheduled</em> to the class <a href="#message">Message</a>.</li> +<li>Fixed an error in <a href="#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> +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="#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="#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> +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> +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> +<h4><a class="anchor" href="#march-9-2021" id="march-9-2021" name="march-9-2021"><i class="anchor-icon"></i></a>March 9, 2021</h4> +<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="#chatmemberupdated">ChatMemberUpdated</a> and the fields <em>my_chat_member</em> and <em>chat_member</em> in the <a href="#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="#chatinvitelink">ChatInviteLink</a>, representing an invite link to a chat.</li> +<li>Added the method <a href="#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="#editchatinvitelink">editChatInviteLink</a>, which can be used to edit non-primary invite links created by the bot.</li> +<li>Added the method <a href="#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="#voicechatstarted">VoiceChatStarted</a> and the field <em>voice_chat_started</em> to the class <a href="#message">Message</a>.</li> +<li>Added the type <a href="#voicechatended">VoiceChatEnded</a> and the field <em>voice_chat_ended</em> to the class <a href="#message">Message</a>.</li> +<li>Added the type <a href="#voicechatparticipantsinvited">VoiceChatParticipantsInvited</a> and the field <em>voice_chat_participants_invited</em> to the class <a href="#message">Message</a>.</li> +<li>Added the new administrator privilege <em>can_manage_voice_chats</em> to the class <a href="#chatmember">ChatMember</a> and parameter <em>can_manage_voice_chats</em> to the method <a href="#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="#messageautodeletetimerchanged">MessageAutoDeleteTimerChanged</a> and the field <em>message_auto_delete_timer_changed</em> to the class <a href="#message">Message</a>.</li> +<li>Added the parameter <em>revoke_messages</em> to the method <a href="#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="#chatmember">ChatMember</a> and parameter <em>can_manage_chat</em> to the method <a href="#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="#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="#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> +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> +<h4><a class="anchor" href="#november-4-2020" id="november-4-2020" name="november-4-2020"><i class="anchor-icon"></i></a>November 4, 2020</h4> +<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' performance (<a href="https://core.telegram.org/bots/api#using-a-local-bot-api-server">check this out</a> to see if this will benefit your project).</li> +<li>Added the method <a href="#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="#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="#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="#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="#setwebhook">setWebhook</a> and <a href="#deletewebhook">deleteWebhook</a>.</li> +</ul> +<p><strong>Working with Groups</strong></p> +<ul> +<li>The <a href="#getchat">getChat</a> request now returns the user's bio for private chats if available.</li> +<li>The <a href="#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="#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="#chatlocation">ChatLocation</a> to represent the location.</li> +<li>Added the parameter <em>only_if_banned</em> to the method <a href="#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="#audio">Audio</a> and <a href="#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="#senddocument">sendDocument</a> and the class <a href="#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="#unpinchatmessage">unpinChatMessage</a> to allow unpinning of the specific pinned message.</li> +<li>Added the method <a href="#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="#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="#location">Location</a>, representing a maximum period for which the live location can be updated.</li> +<li>Added support for live location [heading](<a href="https://en.wikipedia.org/wiki/Heading_(navigation&#41">https://en.wikipedia.org/wiki/Heading_(navigation&#41</a>;): added the field <em>heading</em> to the classes <a href="#location">Location</a>, <a href="#inlinequeryresultlocation">InlineQueryResultLocation</a>, <a href="#inputlocationmessagecontent">InputLocationMessageContent</a> and the parameter <em>heading</em> to the methods <a href="#sendlocation">sendLocation</a> and <a href="#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="#location">Location</a>, <a href="#inlinequeryresultlocation">InlineQueryResultLocation</a>, <a href="#inputlocationmessagecontent">InputLocationMessageContent</a> and the parameter <em>proximity_alert_radius</em> to the methods <a href="#sendlocation">sendLocation</a> and <a href="#editmessagelivelocation">editMessageLiveLocation</a>.</li> +<li>Added the type <a href="#proximityalerttriggered">ProximityAlertTriggered</a> and the field <em>proximity_alert_triggered</em> to the class <a href="#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="#location">Location</a>, <a href="#inlinequeryresultlocation">InlineQueryResultLocation</a>, <a href="#inputlocationmessagecontent">InputLocationMessageContent</a> and the parameter <em>horizontal_accuracy</em> to the methods <a href="#sendlocation">sendLocation</a> and <a href="#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="#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="#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="#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="#message">Message</a> as <em>author_signature</em>.</li> +</ul> +<p><strong>And More</strong></p> +<ul> +<li>Added the method <a href="#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="#inputmediaphoto">InputMediaPhoto</a>, <a href="#inputmediavideo">InputMediaVideo</a>, <a href="#inputmediaanimation">InputMediaAnimation</a>, <a href="#inputmediaaudio">InputMediaAudio</a>, <a href="#inputmediadocument">InputMediaDocument</a>, <a href="#inlinequeryresultphoto">InlineQueryResultPhoto</a>, <a href="#inlinequeryresultgif">InlineQueryResultGif</a>, <a href="#inlinequeryresultmpeg4gif">InlineQueryResultMpeg4Gif</a>, <a href="#inlinequeryresultvideo">InlineQueryResultVideo</a>, <a href="#inlinequeryresultaudio">InlineQueryResultAudio</a>, <a href="#inlinequeryresultvoice">InlineQueryResultVoice</a>, <a href="#inlinequeryresultdocument">InlineQueryResultDocument</a>, <a href="#inlinequeryresultcachedphoto">InlineQueryResultCachedPhoto</a>, <a href="#inlinequeryresultcachedgif">InlineQueryResultCachedGif</a>, <a href="#inlinequeryresultcachedmpeg4gif">InlineQueryResultCachedMpeg4Gif</a>, <a href="#inlinequeryresultcachedvideo">InlineQueryResultCachedVideo</a>, <a href="#inlinequeryresultcachedaudio">InlineQueryResultCachedAudio</a>, <a href="#inlinequeryresultcachedvoice">InlineQueryResultCachedVoice</a>, <a href="#inlinequeryresultcacheddocument">InlineQueryResultCachedDocument</a>, <a href="#inputtextmessagecontent">InputTextMessageContent</a> and the methods <a href="#sendmessage">sendMessage</a>, <a href="#sendphoto">sendPhoto</a>, <a href="#sendvideo">sendVideo</a>, <a href="#sendanimation">sendAnimation</a>, <a href="#sendaudio">sendAudio</a>, <a href="#senddocument">sendDocument</a>, <a href="#sendvoice">sendVoice</a>, <a href="#sendpoll">sendPoll</a>, <a href="#editmessagetext">editMessageText</a>, <a href="#editmessagecaption">editMessageCaption</a>.</li> +<li>Added the fields <em>google_place_id</em> and <em>google_place_type</em> to the classes <a href="#venue">Venue</a>, <a href="#inlinequeryresultvenue">InlineQueryResultVenue</a>, <a href="#inputvenuemessagecontent">InputVenueMessageContent</a> and the optional parameters <em>google_place_id</em> and <em>google_place_type</em> to the method <a href="#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="#sendmessage">sendMessage</a>, <a href="#sendphoto">sendPhoto</a>, <a href="#sendvideo">sendVideo</a>, <a href="#sendanimation">sendAnimation</a>, <a href="#sendaudio">sendAudio</a>, <a href="#senddocument">sendDocument</a>, <a href="#sendsticker">sendSticker</a>, <a href="#sendvideonote">sendVideoNote</a>, <a href="#sendvoice">sendVoice</a>, <a href="#sendlocation">sendLocation</a>, <a href="#sendvenue">sendVenue</a>, <a href="#sendcontact">sendContact</a>, <a href="#sendpoll">sendPoll</a>, <a href="#senddice">sendDice</a>, <a href="#sendinvoice">sendInvoice</a>, <a href="#sendgame">sendGame</a>, <a href="#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 bot Least</strong></p> +<ul> +<li>Supported the new <strong>football</strong> and <strong>slot machine</strong> animations for the random <a href="#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="#senddice">sendDice</a>.</li> +</ul> +<p><strong><a href="/bots/api-changelog">See earlier changes »</a></strong></p> +<h3><a class="anchor" href="#authorizing-your-bot" id="authorizing-your-bot" name="authorizing-your-bot"><i class="anchor-icon"></i></a>Authorizing your bot</h3> +<p>Each bot is given a unique authentication token <a href="/bots#6-botfather">when it is created</a>. The token looks something like <code>123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11</code>, but we'll use simply <strong><token></strong> in this document instead. You can learn about obtaining tokens and generating new ones in <a href="https://core.telegram.org/bots#6-botfather">this document</a>.</p> +<h3><a class="anchor" href="#making-requests" id="making-requests" name="making-requests"><i class="anchor-icon"></i></a>Making requests</h3> +<p>All queries to the Telegram Bot API must be served over HTTPS and need to be presented in this form: <code>https://api.telegram.org/bot<token>/METHOD_NAME</code>. Like this for example:</p> +<pre><code>https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe</code></pre> +<p>We support <strong>GET</strong> and <strong>POST</strong> HTTP methods. We support four ways of passing parameters in Bot API requests:</p> +<ul> +<li><a href="https://en.wikipedia.org/wiki/Query_string">URL query string</a></li> +<li>application/x-www-form-urlencoded</li> +<li>application/json (except for uploading files)</li> +<li>multipart/form-data (use to upload files)</li> +</ul> +<p>The response contains a JSON object, which always has a Boolean field 'ok' and may have an optional String field 'description' with a human-readable description of the result. If 'ok' equals true, the request was successful and the result of the query can be found in the 'result' field. In case of an unsuccessful request, 'ok' equals false and the error is explained in the 'description'. An Integer 'error_code' field is also returned, but its contents are subject to change in the future. Some errors may also have an optional field 'parameters' of the type <a href="#responseparameters">ResponseParameters</a>, which can help to automatically handle the error.</p> +<ul> +<li>All methods in the Bot API are case-insensitive.</li> +<li>All queries must be made using UTF-8.</li> +</ul> +<h4><a class="anchor" href="#making-requests-when-getting-updates" id="making-requests-when-getting-updates" name="making-requests-when-getting-updates"><i class="anchor-icon"></i></a>Making requests when getting updates</h4> +<p>If you're using <a href="#getting-updates"><strong>webhooks</strong></a>, you can perform a request to the Bot API while sending an answer to the webhook. Use either <em>application/json</em> or <em>application/x-www-form-urlencoded</em> or <em>multipart/form-data</em> response content type for passing parameters. Specify the method to be invoked in the <em>method</em> parameter of the request. It's not possible to know that such a request was successful or get its result.</p> +<blockquote> +<p>Please see our <a href="/bots/faq#how-can-i-make-requests-in-response-to-updates">FAQ</a> for examples.</p> +</blockquote> +<h3><a class="anchor" href="#using-a-local-bot-api-server" id="using-a-local-bot-api-server" name="using-a-local-bot-api-server"><i class="anchor-icon"></i></a>Using a Local Bot API Server</h3> +<p>The Bot API server source code is available at <a href="https://github.com/tdlib/telegram-bot-api">telegram-bot-api</a>. You can run it locally and send the requests to your own server instead of <code>https://api.telegram.org</code>. If you switch to a local Bot API server, your bot will be able to:</p> +<ul> +<li>Download files without a size limit.</li> +<li>Upload files up to 2000 MB.</li> +<li>Upload files using their local path and <a href="https://en.wikipedia.org/wiki/File_URI_scheme">the file URI scheme</a>.</li> +<li>Use an HTTP URL for the webhook.</li> +<li>Use any local IP address for the webhook.</li> +<li>Use any port for the webhook.</li> +<li>Set <em>max_webhook_connections</em> up to 100000.</li> +<li>Receive the absolute local path as a value of the <em>file_path</em> field without the need to download the file after a <a href="#getfile">getFile</a> request.</li> +</ul> +<h4><a class="anchor" href="#do-i-need-a-local-bot-api-server" id="do-i-need-a-local-bot-api-server" name="do-i-need-a-local-bot-api-server"><i class="anchor-icon"></i></a>Do I need a Local Bot API Server</h4> +<p>The majority of bots will be OK with the default configuration, running on our servers. But if you feel that you need one of <a href="#using-a-local-bot-api-server">these features</a>, you're welcome to switch to your own at any time.</p> +<h3><a class="anchor" href="#getting-updates" id="getting-updates" name="getting-updates"><i class="anchor-icon"></i></a>Getting updates</h3> +<p>There are two mutually exclusive ways of receiving updates for your bot — the <a href="#getupdates">getUpdates</a> method on one hand and <a href="#setwebhook">Webhooks</a> on the other. Incoming updates are stored on the server until the bot receives them either way, but they will not be kept longer than 24 hours.</p> +<p>Regardless of which option you choose, you will receive JSON-serialized <a href="#update">Update</a> objects as a result.</p> +<h4><a class="anchor" href="#update" id="update" name="update"><i class="anchor-icon"></i></a>Update</h4> +<p>This <a href="#available-types">object</a> represents an incoming update. +At most <strong>one</strong> of the optional parameters can be present in any given update.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>update_id</td> +<td>Integer</td> +<td>The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you're using <a href="#setwebhook">Webhooks</a>, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.</td> +</tr> +<tr> +<td>message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. New incoming message of any kind — text, photo, sticker, etc.</td> +</tr> +<tr> +<td>edited_message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. New version of a message that is known to the bot and was edited</td> +</tr> +<tr> +<td>channel_post</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. New incoming channel post of any kind — text, photo, sticker, etc.</td> +</tr> +<tr> +<td>edited_channel_post</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. New version of a channel post that is known to the bot and was edited</td> +</tr> +<tr> +<td>inline_query</td> +<td><a href="#inlinequery">InlineQuery</a></td> +<td><em>Optional</em>. New incoming <a href="#inline-mode">inline</a> query</td> +</tr> +<tr> +<td>chosen_inline_result</td> +<td><a href="#choseninlineresult">ChosenInlineResult</a></td> +<td><em>Optional</em>. The result of an <a href="#inline-mode">inline</a> query that was chosen by a user and sent to their chat partner. Please see our documentation on the <a href="/bots/inline#collecting-feedback">feedback collecting</a> for details on how to enable these updates for your bot.</td> +</tr> +<tr> +<td>callback_query</td> +<td><a href="#callbackquery">CallbackQuery</a></td> +<td><em>Optional</em>. New incoming callback query</td> +</tr> +<tr> +<td>shipping_query</td> +<td><a href="#shippingquery">ShippingQuery</a></td> +<td><em>Optional</em>. New incoming shipping query. Only for invoices with flexible price</td> +</tr> +<tr> +<td>pre_checkout_query</td> +<td><a href="#precheckoutquery">PreCheckoutQuery</a></td> +<td><em>Optional</em>. New incoming pre-checkout query. Contains full information about checkout</td> +</tr> +<tr> +<td>poll</td> +<td><a href="#poll">Poll</a></td> +<td><em>Optional</em>. New poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot</td> +</tr> +<tr> +<td>poll_answer</td> +<td><a href="#pollanswer">PollAnswer</a></td> +<td><em>Optional</em>. A user changed their answer in a non-anonymous poll. Bots receive new votes only in polls that were sent by the bot itself.</td> +</tr> +<tr> +<td>my_chat_member</td> +<td><a href="#chatmemberupdated">ChatMemberUpdated</a></td> +<td><em>Optional</em>. The bot's chat member status was updated in a chat. For private chats, this update is received only when the bot is blocked or unblocked by the user.</td> +</tr> +<tr> +<td>chat_member</td> +<td><a href="#chatmemberupdated">ChatMemberUpdated</a></td> +<td><em>Optional</em>. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify "chat_member" in the list of <em>allowed_updates</em> to receive these updates.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getupdates" id="getupdates" name="getupdates"><i class="anchor-icon"></i></a>getUpdates</h4> +<p>Use this method to receive incoming updates using long polling (<a href="https://en.wikipedia.org/wiki/Push_technology#Long_polling">wiki</a>). An Array of <a href="#update">Update</a> objects is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>offset</td> +<td>Integer</td> +<td>Optional</td> +<td>Identifier of the first update to be returned. Must be greater by one than the highest among the identifiers of previously received updates. By default, updates starting with the earliest unconfirmed update are returned. An update is considered confirmed as soon as <a href="#getupdates">getUpdates</a> is called with an <em>offset</em> higher than its <em>update_id</em>. The negative offset can be specified to retrieve updates starting from <em>-offset</em> update from the end of the updates queue. All previous updates will forgotten.</td> +</tr> +<tr> +<td>limit</td> +<td>Integer</td> +<td>Optional</td> +<td>Limits the number of updates to be retrieved. Values between 1-100 are accepted. Defaults to 100.</td> +</tr> +<tr> +<td>timeout</td> +<td>Integer</td> +<td>Optional</td> +<td>Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. Should be positive, short polling should be used for testing purposes only.</td> +</tr> +<tr> +<td>allowed_updates</td> +<td>Array of String</td> +<td>Optional</td> +<td>A JSON-serialized list of the update types you want your bot to receive. For example, specify ["message", "edited_channel_post", "callback_query"] to only receive updates of these types. See <a href="#update">Update</a> for a complete list of available update types. Specify an empty list to receive all update types except <em>chat_member</em> (default). If not specified, the previous setting will be used. <br><br>Please note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.</td> +</tr> +</tbody> +</table> +<blockquote> +<p><strong>Notes</strong> +<strong>1.</strong> This method will not work if an outgoing webhook is set up. +<strong>2.</strong> In order to avoid getting duplicate updates, recalculate <em>offset</em> after each server response.</p> +</blockquote> +<h4><a class="anchor" href="#setwebhook" id="setwebhook" name="setwebhook"><i class="anchor-icon"></i></a>setWebhook</h4> +<p>Use this method to specify a url and receive incoming updates via an outgoing webhook. Whenever there is an update for the bot, we will send an HTTPS POST request to the specified url, containing a JSON-serialized <a href="#update">Update</a>. In case of an unsuccessful request, we will give up after a reasonable amount of attempts. Returns <em>True</em> on success.</p> +<p>If you'd like to make sure that the Webhook request comes from Telegram, we recommend using a secret path in the URL, e.g. <code>https://www.example.com/<token></code>. Since nobody else knows your bot's token, you can be pretty sure it's us.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>url</td> +<td>String</td> +<td>Yes</td> +<td>HTTPS url to send updates to. Use an empty string to remove webhook integration</td> +</tr> +<tr> +<td>certificate</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Optional</td> +<td>Upload your public key certificate so that the root certificate in use can be checked. See our <a href="/bots/self-signed">self-signed guide</a> for details.</td> +</tr> +<tr> +<td>ip_address</td> +<td>String</td> +<td>Optional</td> +<td>The fixed IP address which will be used to send webhook requests instead of the IP address resolved through DNS</td> +</tr> +<tr> +<td>max_connections</td> +<td>Integer</td> +<td>Optional</td> +<td>Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100. Defaults to <em>40</em>. Use lower values to limit the load on your bot's server, and higher values to increase your bot's throughput.</td> +</tr> +<tr> +<td>allowed_updates</td> +<td>Array of String</td> +<td>Optional</td> +<td>A JSON-serialized list of the update types you want your bot to receive. For example, specify ["message", "edited_channel_post", "callback_query"] to only receive updates of these types. See <a href="#update">Update</a> for a complete list of available update types. Specify an empty list to receive all update types except <em>chat_member</em> (default). If not specified, the previous setting will be used. <br>Please note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.</td> +</tr> +<tr> +<td>drop_pending_updates</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em> to drop all pending updates</td> +</tr> +</tbody> +</table> +<blockquote> +<p><strong>Notes</strong> +<strong>1.</strong> You will not be able to receive updates using <a href="#getupdates">getUpdates</a> for as long as an outgoing webhook is set up. +<strong>2.</strong> To use a self-signed certificate, you need to upload your <a href="/bots/self-signed">public key certificate</a> using <em>certificate</em> parameter. Please upload as InputFile, sending a String will not work. +<strong>3.</strong> Ports currently supported <em>for Webhooks</em>: <strong>443, 80, 88, 8443</strong>.</p> +</blockquote> +<blockquote> +<p><strong>NEW!</strong> If you're having any trouble setting up webhooks, please check out this <a href="/bots/webhooks">amazing guide to Webhooks</a>.</p> +</blockquote> +<h4><a class="anchor" href="#deletewebhook" id="deletewebhook" name="deletewebhook"><i class="anchor-icon"></i></a>deleteWebhook</h4> +<p>Use this method to remove webhook integration if you decide to switch back to <a href="#getupdates">getUpdates</a>. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>drop_pending_updates</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em> to drop all pending updates</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getwebhookinfo" id="getwebhookinfo" name="getwebhookinfo"><i class="anchor-icon"></i></a>getWebhookInfo</h4> +<p>Use this method to get current webhook status. Requires no parameters. On success, returns a <a href="#webhookinfo">WebhookInfo</a> object. If the bot is using <a href="#getupdates">getUpdates</a>, will return an object with the <em>url</em> field empty.</p> +<h4><a class="anchor" href="#webhookinfo" id="webhookinfo" name="webhookinfo"><i class="anchor-icon"></i></a>WebhookInfo</h4> +<p>Contains information about the current status of a webhook.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>url</td> +<td>String</td> +<td>Webhook URL, may be empty if webhook is not set up</td> +</tr> +<tr> +<td>has_custom_certificate</td> +<td>Boolean</td> +<td>True, if a custom certificate was provided for webhook certificate checks</td> +</tr> +<tr> +<td>pending_update_count</td> +<td>Integer</td> +<td>Number of updates awaiting delivery</td> +</tr> +<tr> +<td>ip_address</td> +<td>String</td> +<td><em>Optional</em>. Currently used webhook IP address</td> +</tr> +<tr> +<td>last_error_date</td> +<td>Integer</td> +<td><em>Optional</em>. Unix time for the most recent error that happened when trying to deliver an update via webhook</td> +</tr> +<tr> +<td>last_error_message</td> +<td>String</td> +<td><em>Optional</em>. Error message in human-readable format for the most recent error that happened when trying to deliver an update via webhook</td> +</tr> +<tr> +<td>max_connections</td> +<td>Integer</td> +<td><em>Optional</em>. Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery</td> +</tr> +<tr> +<td>allowed_updates</td> +<td>Array of String</td> +<td><em>Optional</em>. A list of update types the bot is subscribed to. Defaults to all update types except <em>chat_member</em></td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#available-types" id="available-types" name="available-types"><i class="anchor-icon"></i></a>Available types</h3> +<p>All types used in the Bot API responses are represented as JSON-objects.</p> +<p>It is safe to use 32-bit signed integers for storing all <strong>Integer</strong> fields unless otherwise noted.</p> +<blockquote> +<p><strong>Optional</strong> fields may be not returned when irrelevant.</p> +</blockquote> +<h4><a class="anchor" href="#user" id="user" name="user"><i class="anchor-icon"></i></a>User</h4> +<p>This object represents a Telegram user or bot.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>Integer</td> +<td>Unique identifier for this user or bot. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>is_bot</td> +<td>Boolean</td> +<td>True, if this user is a bot</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>User's or bot's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. User's or bot's last name</td> +</tr> +<tr> +<td>username</td> +<td>String</td> +<td><em>Optional</em>. User's or bot's username</td> +</tr> +<tr> +<td>language_code</td> +<td>String</td> +<td><em>Optional</em>. <a href="https://en.wikipedia.org/wiki/IETF_language_tag">IETF language tag</a> of the user's language</td> +</tr> +<tr> +<td>can_join_groups</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the bot can be invited to groups. Returned only in <a href="#getme">getMe</a>.</td> +</tr> +<tr> +<td>can_read_all_group_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if <a href="https://core.telegram.org/bots#privacy-mode">privacy mode</a> is disabled for the bot. Returned only in <a href="#getme">getMe</a>.</td> +</tr> +<tr> +<td>supports_inline_queries</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the bot supports inline queries. Returned only in <a href="#getme">getMe</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chat" id="chat" name="chat"><i class="anchor-icon"></i></a>Chat</h4> +<p>This object represents a chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>Integer</td> +<td>Unique identifier for this chat. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Type of chat, can be either "private", "group", "supergroup" or "channel"</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title, for supergroups, channels and group chats</td> +</tr> +<tr> +<td>username</td> +<td>String</td> +<td><em>Optional</em>. Username, for private chats, supergroups and channels if available</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td><em>Optional</em>. First name of the other party in a private chat</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. Last name of the other party in a private chat</td> +</tr> +<tr> +<td>photo</td> +<td><a href="#chatphoto">ChatPhoto</a></td> +<td><em>Optional</em>. Chat photo. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>bio</td> +<td>String</td> +<td><em>Optional</em>. Bio of the other party in a private chat. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Description, for groups, supergroups and channel chats. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>invite_link</td> +<td>String</td> +<td><em>Optional</em>. Primary invite link, for groups, supergroups and channel chats. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>pinned_message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. The most recent pinned message (by sending date). Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>permissions</td> +<td><a href="#chatpermissions">ChatPermissions</a></td> +<td><em>Optional</em>. Default chat member permissions, for groups and supergroups. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>slow_mode_delay</td> +<td>Integer</td> +<td><em>Optional</em>. For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>message_auto_delete_time</td> +<td>Integer</td> +<td><em>Optional</em>. The time after which all messages sent to the chat will be automatically deleted; in seconds. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>sticker_set_name</td> +<td>String</td> +<td><em>Optional</em>. For supergroups, name of group sticker set. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>can_set_sticker_set</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the bot can change the group sticker set. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>linked_chat_id</td> +<td>Integer</td> +<td><em>Optional</em>. Unique identifier for the linked chat, i.e. the discussion group identifier for a channel and vice versa; for supergroups and channel chats. This identifier may be greater than 32 bits and some programming languages may have difficulty/silent defects in interpreting it. But it is smaller than 52 bits, so a signed 64 bit integer or double-precision float type are safe for storing this identifier. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +<tr> +<td>location</td> +<td><a href="#chatlocation">ChatLocation</a></td> +<td><em>Optional</em>. For supergroups, the location to which the supergroup is connected. Returned only in <a href="#getchat">getChat</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#message" id="message" name="message"><i class="anchor-icon"></i></a>Message</h4> +<p>This object represents a message.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Unique message identifier inside this chat</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. Sender, empty for messages sent to channels</td> +</tr> +<tr> +<td>sender_chat</td> +<td><a href="#chat">Chat</a></td> +<td><em>Optional</em>. Sender of the message, sent on behalf of a chat. The channel itself for channel messages. The supergroup itself for messages from anonymous group administrators. The linked channel for messages automatically forwarded to the discussion group</td> +</tr> +<tr> +<td>date</td> +<td>Integer</td> +<td>Date the message was sent in Unix time</td> +</tr> +<tr> +<td>chat</td> +<td><a href="#chat">Chat</a></td> +<td>Conversation the message belongs to</td> +</tr> +<tr> +<td>forward_from</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. For forwarded messages, sender of the original message</td> +</tr> +<tr> +<td>forward_from_chat</td> +<td><a href="#chat">Chat</a></td> +<td><em>Optional</em>. For messages forwarded from channels or from anonymous administrators, information about the original sender chat</td> +</tr> +<tr> +<td>forward_from_message_id</td> +<td>Integer</td> +<td><em>Optional</em>. For messages forwarded from channels, identifier of the original message in the channel</td> +</tr> +<tr> +<td>forward_signature</td> +<td>String</td> +<td><em>Optional</em>. For messages forwarded from channels, signature of the post author if present</td> +</tr> +<tr> +<td>forward_sender_name</td> +<td>String</td> +<td><em>Optional</em>. Sender's name for messages forwarded from users who disallow adding a link to their account in forwarded messages</td> +</tr> +<tr> +<td>forward_date</td> +<td>Integer</td> +<td><em>Optional</em>. For forwarded messages, date the original message was sent in Unix time</td> +</tr> +<tr> +<td>reply_to_message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. For replies, the original message. Note that the Message object in this field will not contain further <em>reply_to_message</em> fields even if it itself is a reply.</td> +</tr> +<tr> +<td>via_bot</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. Bot through which the message was sent</td> +</tr> +<tr> +<td>edit_date</td> +<td>Integer</td> +<td><em>Optional</em>. Date the message was last edited in Unix time</td> +</tr> +<tr> +<td>media_group_id</td> +<td>String</td> +<td><em>Optional</em>. The unique identifier of a media message group this message belongs to</td> +</tr> +<tr> +<td>author_signature</td> +<td>String</td> +<td><em>Optional</em>. Signature of the post author for messages in channels, or the custom title of an anonymous group administrator</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td><em>Optional</em>. For text messages, the actual UTF-8 text of the message, 0-4096 characters</td> +</tr> +<tr> +<td>entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text</td> +</tr> +<tr> +<td>animation</td> +<td><a href="#animation">Animation</a></td> +<td><em>Optional</em>. Message is an animation, information about the animation. For backward compatibility, when this field is set, the <em>document</em> field will also be set</td> +</tr> +<tr> +<td>audio</td> +<td><a href="#audio">Audio</a></td> +<td><em>Optional</em>. Message is an audio file, information about the file</td> +</tr> +<tr> +<td>document</td> +<td><a href="#document">Document</a></td> +<td><em>Optional</em>. Message is a general file, information about the file</td> +</tr> +<tr> +<td>photo</td> +<td>Array of <a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Message is a photo, available sizes of the photo</td> +</tr> +<tr> +<td>sticker</td> +<td><a href="#sticker">Sticker</a></td> +<td><em>Optional</em>. Message is a sticker, information about the sticker</td> +</tr> +<tr> +<td>video</td> +<td><a href="#video">Video</a></td> +<td><em>Optional</em>. Message is a video, information about the video</td> +</tr> +<tr> +<td>video_note</td> +<td><a href="#videonote">VideoNote</a></td> +<td><em>Optional</em>. Message is a <a href="https://telegram.org/blog/video-messages-and-telescope">video note</a>, information about the video message</td> +</tr> +<tr> +<td>voice</td> +<td><a href="#voice">Voice</a></td> +<td><em>Optional</em>. Message is a voice message, information about the file</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption for the animation, audio, document, photo, video or voice, 0-1024 characters</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. For messages with a caption, special entities like usernames, URLs, bot commands, etc. that appear in the caption</td> +</tr> +<tr> +<td>contact</td> +<td><a href="#contact">Contact</a></td> +<td><em>Optional</em>. Message is a shared contact, information about the contact</td> +</tr> +<tr> +<td>dice</td> +<td><a href="#dice">Dice</a></td> +<td><em>Optional</em>. Message is a dice with random value</td> +</tr> +<tr> +<td>game</td> +<td><a href="#game">Game</a></td> +<td><em>Optional</em>. Message is a game, information about the game. <a href="#games">More about games »</a></td> +</tr> +<tr> +<td>poll</td> +<td><a href="#poll">Poll</a></td> +<td><em>Optional</em>. Message is a native poll, information about the poll</td> +</tr> +<tr> +<td>venue</td> +<td><a href="#venue">Venue</a></td> +<td><em>Optional</em>. Message is a venue, information about the venue. For backward compatibility, when this field is set, the <em>location</em> field will also be set</td> +</tr> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td><em>Optional</em>. Message is a shared location, information about the location</td> +</tr> +<tr> +<td>new_chat_members</td> +<td>Array of <a href="#user">User</a></td> +<td><em>Optional</em>. New members that were added to the group or supergroup and information about them (the bot itself may be one of these members)</td> +</tr> +<tr> +<td>left_chat_member</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. A member was removed from the group, information about them (this member may be the bot itself)</td> +</tr> +<tr> +<td>new_chat_title</td> +<td>String</td> +<td><em>Optional</em>. A chat title was changed to this value</td> +</tr> +<tr> +<td>new_chat_photo</td> +<td>Array of <a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. A chat photo was change to this value</td> +</tr> +<tr> +<td>delete_chat_photo</td> +<td>True</td> +<td><em>Optional</em>. Service message: the chat photo was deleted</td> +</tr> +<tr> +<td>group_chat_created</td> +<td>True</td> +<td><em>Optional</em>. Service message: the group has been created</td> +</tr> +<tr> +<td>supergroup_chat_created</td> +<td>True</td> +<td><em>Optional</em>. Service message: the supergroup has been created. This field can't be received in a message coming through updates, because bot can't be a member of a supergroup when it is created. It can only be found in reply_to_message if someone replies to a very first message in a directly created supergroup.</td> +</tr> +<tr> +<td>channel_chat_created</td> +<td>True</td> +<td><em>Optional</em>. Service message: the channel has been created. This field can't be received in a message coming through updates, because bot can't be a member of a channel when it is created. It can only be found in reply_to_message if someone replies to a very first message in a channel.</td> +</tr> +<tr> +<td>message_auto_delete_timer_changed</td> +<td><a href="#messageautodeletetimerchanged">MessageAutoDeleteTimerChanged</a></td> +<td><em>Optional</em>. Service message: auto-delete timer settings changed in the chat</td> +</tr> +<tr> +<td>migrate_to_chat_id</td> +<td>Integer</td> +<td><em>Optional</em>. The group has been migrated to a supergroup with the specified identifier. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>migrate_from_chat_id</td> +<td>Integer</td> +<td><em>Optional</em>. The supergroup has been migrated from a group with the specified identifier. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>pinned_message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. Specified message was pinned. Note that the Message object in this field will not contain further <em>reply_to_message</em> fields even if it is itself a reply.</td> +</tr> +<tr> +<td>invoice</td> +<td><a href="#invoice">Invoice</a></td> +<td><em>Optional</em>. Message is an invoice for a <a href="#payments">payment</a>, information about the invoice. <a href="#payments">More about payments »</a></td> +</tr> +<tr> +<td>successful_payment</td> +<td><a href="#successfulpayment">SuccessfulPayment</a></td> +<td><em>Optional</em>. Message is a service message about a successful payment, information about the payment. <a href="#payments">More about payments »</a></td> +</tr> +<tr> +<td>connected_website</td> +<td>String</td> +<td><em>Optional</em>. The domain name of the website on which the user has logged in. <a href="/widgets/login">More about Telegram Login »</a></td> +</tr> +<tr> +<td>passport_data</td> +<td><a href="#passportdata">PassportData</a></td> +<td><em>Optional</em>. Telegram Passport data</td> +</tr> +<tr> +<td>proximity_alert_triggered</td> +<td><a href="#proximityalerttriggered">ProximityAlertTriggered</a></td> +<td><em>Optional</em>. Service message. A user in the chat triggered another user's proximity alert while sharing Live Location.</td> +</tr> +<tr> +<td>voice_chat_scheduled</td> +<td><a href="#voicechatscheduled">VoiceChatScheduled</a></td> +<td><em>Optional</em>. Service message: voice chat scheduled</td> +</tr> +<tr> +<td>voice_chat_started</td> +<td><a href="#voicechatstarted">VoiceChatStarted</a></td> +<td><em>Optional</em>. Service message: voice chat started</td> +</tr> +<tr> +<td>voice_chat_ended</td> +<td><a href="#voicechatended">VoiceChatEnded</a></td> +<td><em>Optional</em>. Service message: voice chat ended</td> +</tr> +<tr> +<td>voice_chat_participants_invited</td> +<td><a href="#voicechatparticipantsinvited">VoiceChatParticipantsInvited</a></td> +<td><em>Optional</em>. Service message: new participants invited to a voice chat</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. Inline keyboard attached to the message. <code>login_url</code> buttons are represented as ordinary <code>url</code> buttons.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#messageid" id="messageid" name="messageid"><i class="anchor-icon"></i></a>MessageId</h4> +<p>This object represents a unique message identifier.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Unique message identifier</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#messageentity" id="messageentity" name="messageentity"><i class="anchor-icon"></i></a>MessageEntity</h4> +<p>This object represents one special entity in a text message. For example, hashtags, usernames, URLs, etc.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the entity. Can be "mention" (<code>@username</code>), "hashtag" (<code>#hashtag</code>), "cashtag" (<code>$USD</code>), "bot_command" (<code>/start@jobs_bot</code>), "url" (<code>https://telegram.org</code>), "email" (<code>do-not-reply@telegram.org</code>), "phone_number" (<code>+1-212-555-0123</code>), "bold" (<strong>bold text</strong>), "italic" (<em>italic text</em>), "underline" (underlined text), "strikethrough" (strikethrough text), "code" (monowidth string), "pre" (monowidth block), "text_link" (for clickable text URLs), "text_mention" (for users <a href="https://telegram.org/blog/edit#new-mentions">without usernames</a>)</td> +</tr> +<tr> +<td>offset</td> +<td>Integer</td> +<td>Offset in UTF-16 code units to the start of the entity</td> +</tr> +<tr> +<td>length</td> +<td>Integer</td> +<td>Length of the entity in UTF-16 code units</td> +</tr> +<tr> +<td>url</td> +<td>String</td> +<td><em>Optional</em>. For "text_link" only, url that will be opened after user taps on the text</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td><em>Optional</em>. For "text_mention" only, the mentioned user</td> +</tr> +<tr> +<td>language</td> +<td>String</td> +<td><em>Optional</em>. For "pre" only, the programming language of the entity text</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#photosize" id="photosize" name="photosize"><i class="anchor-icon"></i></a>PhotoSize</h4> +<p>This object represents one size of a photo or a <a href="#document">file</a> / <a href="#sticker">sticker</a> thumbnail.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Photo width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Photo height</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#animation" id="animation" name="animation"><i class="anchor-icon"></i></a>Animation</h4> +<p>This object represents an animation file (GIF or H.264/MPEG-4 AVC video without sound).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Video width as defined by sender</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Video height as defined by sender</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the video in seconds as defined by sender</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Animation thumbnail as defined by sender</td> +</tr> +<tr> +<td>file_name</td> +<td>String</td> +<td><em>Optional</em>. Original animation filename as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#audio" id="audio" name="audio"><i class="anchor-icon"></i></a>Audio</h4> +<p>This object represents an audio file to be treated as music by the Telegram clients.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the audio in seconds as defined by sender</td> +</tr> +<tr> +<td>performer</td> +<td>String</td> +<td><em>Optional</em>. Performer of the audio as defined by sender or by audio tags</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title of the audio as defined by sender or by audio tags</td> +</tr> +<tr> +<td>file_name</td> +<td>String</td> +<td><em>Optional</em>. Original filename as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Thumbnail of the album cover to which the music file belongs</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#document" id="document" name="document"><i class="anchor-icon"></i></a>Document</h4> +<p>This object represents a general file (as opposed to <a href="#photosize">photos</a>, <a href="#voice">voice messages</a> and <a href="#audio">audio files</a>).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Document thumbnail as defined by sender</td> +</tr> +<tr> +<td>file_name</td> +<td>String</td> +<td><em>Optional</em>. Original filename as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#video" id="video" name="video"><i class="anchor-icon"></i></a>Video</h4> +<p>This object represents a video file.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Video width as defined by sender</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Video height as defined by sender</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the video in seconds as defined by sender</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Video thumbnail</td> +</tr> +<tr> +<td>file_name</td> +<td>String</td> +<td><em>Optional</em>. Original filename as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. Mime type of a file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#videonote" id="videonote" name="videonote"><i class="anchor-icon"></i></a>VideoNote</h4> +<p>This object represents a <a href="https://telegram.org/blog/video-messages-and-telescope">video message</a> (available in Telegram apps as of <a href="https://telegram.org/blog/video-messages-and-telescope">v.4.0</a>).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>length</td> +<td>Integer</td> +<td>Video width and height (diameter of the video message) as defined by sender</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the video in seconds as defined by sender</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Video thumbnail</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#voice" id="voice" name="voice"><i class="anchor-icon"></i></a>Voice</h4> +<p>This object represents a voice note.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Duration of the audio in seconds as defined by sender</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the file as defined by sender</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#contact" id="contact" name="contact"><i class="anchor-icon"></i></a>Contact</h4> +<p>This object represents a phone contact.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>phone_number</td> +<td>String</td> +<td>Contact's phone number</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>Contact's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. Contact's last name</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td><em>Optional</em>. Contact's user identifier in Telegram. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>vcard</td> +<td>String</td> +<td><em>Optional</em>. Additional data about the contact in the form of a <a href="https://en.wikipedia.org/wiki/VCard">vCard</a></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#dice" id="dice" name="dice"><i class="anchor-icon"></i></a>Dice</h4> +<p>This object represents an animated emoji that displays a random value.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>emoji</td> +<td>String</td> +<td>Emoji on which the dice throw animation is based</td> +</tr> +<tr> +<td>value</td> +<td>Integer</td> +<td>Value of the dice, 1-6 for "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />", "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" />" and "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB3.png" width="20" height="20" alt="🎳" />" base emoji, 1-5 for "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />" and "<img class="emoji" src="//telegram.org/img/emoji/40/E29ABD.png" width="20" height="20" alt="⚽" />" base emoji, 1-64 for "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB0.png" width="20" height="20" alt="🎰" />" base emoji</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#polloption" id="polloption" name="polloption"><i class="anchor-icon"></i></a>PollOption</h4> +<p>This object contains information about one answer option in a poll.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>text</td> +<td>String</td> +<td>Option text, 1-100 characters</td> +</tr> +<tr> +<td>voter_count</td> +<td>Integer</td> +<td>Number of users that voted for this option</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#pollanswer" id="pollanswer" name="pollanswer"><i class="anchor-icon"></i></a>PollAnswer</h4> +<p>This object represents an answer of a user in a non-anonymous poll.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>poll_id</td> +<td>String</td> +<td>Unique poll identifier</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>The user, who changed the answer to the poll</td> +</tr> +<tr> +<td>option_ids</td> +<td>Array of Integer</td> +<td>0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#poll" id="poll" name="poll"><i class="anchor-icon"></i></a>Poll</h4> +<p>This object contains information about a poll.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique poll identifier</td> +</tr> +<tr> +<td>question</td> +<td>String</td> +<td>Poll question, 1-300 characters</td> +</tr> +<tr> +<td>options</td> +<td>Array of <a href="#polloption">PollOption</a></td> +<td>List of poll options</td> +</tr> +<tr> +<td>total_voter_count</td> +<td>Integer</td> +<td>Total number of users that voted in the poll</td> +</tr> +<tr> +<td>is_closed</td> +<td>Boolean</td> +<td>True, if the poll is closed</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td>True, if the poll is anonymous</td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Poll type, currently can be "regular" or "quiz"</td> +</tr> +<tr> +<td>allows_multiple_answers</td> +<td>Boolean</td> +<td>True, if the poll allows multiple answers</td> +</tr> +<tr> +<td>correct_option_id</td> +<td>Integer</td> +<td><em>Optional</em>. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.</td> +</tr> +<tr> +<td>explanation</td> +<td>String</td> +<td><em>Optional</em>. Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters</td> +</tr> +<tr> +<td>explanation_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. Special entities like usernames, URLs, bot commands, etc. that appear in the <em>explanation</em></td> +</tr> +<tr> +<td>open_period</td> +<td>Integer</td> +<td><em>Optional</em>. Amount of time in seconds the poll will be active after creation</td> +</tr> +<tr> +<td>close_date</td> +<td>Integer</td> +<td><em>Optional</em>. Point in time (Unix timestamp) when the poll will be automatically closed</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#location" id="location" name="location"><i class="anchor-icon"></i></a>Location</h4> +<p>This object represents a point on the map.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>longitude</td> +<td>Float</td> +<td>Longitude as defined by sender</td> +</tr> +<tr> +<td>latitude</td> +<td>Float</td> +<td>Latitude as defined by sender</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>live_period</td> +<td>Integer</td> +<td><em>Optional</em>. Time relative to the message sending date, during which the location can be updated, in seconds. For active live locations only.</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td><em>Optional</em>. The direction in which user is moving, in degrees; 1-360. For active live locations only.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td><em>Optional</em>. Maximum distance for proximity alerts about approaching another chat member, in meters. For sent live locations only.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#venue" id="venue" name="venue"><i class="anchor-icon"></i></a>Venue</h4> +<p>This object represents a venue.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td>Venue location. Can't be a live location</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Name of the venue</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Address of the venue</td> +</tr> +<tr> +<td>foursquare_id</td> +<td>String</td> +<td><em>Optional</em>. Foursquare identifier of the venue</td> +</tr> +<tr> +<td>foursquare_type</td> +<td>String</td> +<td><em>Optional</em>. Foursquare type of the venue. (For example, "arts_entertainment/default", "arts_entertainment/aquarium" or "food/icecream".)</td> +</tr> +<tr> +<td>google_place_id</td> +<td>String</td> +<td><em>Optional</em>. Google Places identifier of the venue</td> +</tr> +<tr> +<td>google_place_type</td> +<td>String</td> +<td><em>Optional</em>. Google Places type of the venue. (See <a href="https://developers.google.com/places/web-service/supported_types">supported types</a>.)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#proximityalerttriggered" id="proximityalerttriggered" name="proximityalerttriggered"><i class="anchor-icon"></i></a>ProximityAlertTriggered</h4> +<p>This object represents the content of a service message, sent whenever a user in the chat triggers a proximity alert set by another user.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>traveler</td> +<td><a href="#user">User</a></td> +<td>User that triggered the alert</td> +</tr> +<tr> +<td>watcher</td> +<td><a href="#user">User</a></td> +<td>User that set the alert</td> +</tr> +<tr> +<td>distance</td> +<td>Integer</td> +<td>The distance between the users</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#messageautodeletetimerchanged" id="messageautodeletetimerchanged" name="messageautodeletetimerchanged"><i class="anchor-icon"></i></a>MessageAutoDeleteTimerChanged</h4> +<p>This object represents a service message about a change in auto-delete timer settings.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>message_auto_delete_time</td> +<td>Integer</td> +<td>New auto-delete time for messages in the chat</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#voicechatscheduled" id="voicechatscheduled" name="voicechatscheduled"><i class="anchor-icon"></i></a>VoiceChatScheduled</h4> +<p>This object represents a service message about a voice chat scheduled in the chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>start_date</td> +<td>Integer</td> +<td>Point in time (Unix timestamp) when the voice chat is supposed to be started by a chat administrator</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#voicechatstarted" id="voicechatstarted" name="voicechatstarted"><i class="anchor-icon"></i></a>VoiceChatStarted</h4> +<p>This object represents a service message about a voice chat started in the chat. Currently holds no information.</p> +<h4><a class="anchor" href="#voicechatended" id="voicechatended" name="voicechatended"><i class="anchor-icon"></i></a>VoiceChatEnded</h4> +<p>This object represents a service message about a voice chat ended in the chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Voice chat duration in seconds</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#voicechatparticipantsinvited" id="voicechatparticipantsinvited" name="voicechatparticipantsinvited"><i class="anchor-icon"></i></a>VoiceChatParticipantsInvited</h4> +<p>This object represents a service message about new members invited to a voice chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>users</td> +<td>Array of <a href="#user">User</a></td> +<td><em>Optional</em>. New members that were invited to the voice chat</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#userprofilephotos" id="userprofilephotos" name="userprofilephotos"><i class="anchor-icon"></i></a>UserProfilePhotos</h4> +<p>This object represent a user's profile pictures.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>total_count</td> +<td>Integer</td> +<td>Total number of profile pictures the target user has</td> +</tr> +<tr> +<td>photos</td> +<td>Array of Array of <a href="#photosize">PhotoSize</a></td> +<td>Requested profile pictures (in up to 4 sizes each)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#file" id="file" name="file"><i class="anchor-icon"></i></a>File</h4> +<p>This object represents a file ready to be downloaded. The file can be downloaded via the link <code>https://api.telegram.org/file/bot<token>/<file_path></code>. It is guaranteed that the link will be valid for at least 1 hour. When the link expires, a new one can be requested by calling <a href="#getfile">getFile</a>.</p> +<blockquote> +<p>Maximum file size to download is 20 MB</p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes, if known</td> +</tr> +<tr> +<td>file_path</td> +<td>String</td> +<td><em>Optional</em>. File path. Use <code>https://api.telegram.org/file/bot<token>/<file_path></code> to get the file.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#replykeyboardmarkup" id="replykeyboardmarkup" name="replykeyboardmarkup"><i class="anchor-icon"></i></a>ReplyKeyboardMarkup</h4> +<p>This object represents a <a href="https://core.telegram.org/bots#keyboards">custom keyboard</a> with reply options (see <a href="https://core.telegram.org/bots#keyboards">Introduction to bots</a> for details and examples).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>keyboard</td> +<td>Array of Array of <a href="#keyboardbutton">KeyboardButton</a></td> +<td>Array of button rows, each represented by an Array of <a href="#keyboardbutton">KeyboardButton</a> objects</td> +</tr> +<tr> +<td>resize_keyboard</td> +<td>Boolean</td> +<td><em>Optional</em>. Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). Defaults to <em>false</em>, in which case the custom keyboard is always of the same height as the app's standard keyboard.</td> +</tr> +<tr> +<td>one_time_keyboard</td> +<td>Boolean</td> +<td><em>Optional</em>. Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat – the user can press a special button in the input field to see the custom keyboard again. Defaults to <em>false</em>.</td> +</tr> +<tr> +<td>input_field_placeholder</td> +<td>String</td> +<td><em>Optional</em>. The placeholder to be shown in the input field when the keyboard is active; 1-64 characters</td> +</tr> +<tr> +<td>selective</td> +<td>Boolean</td> +<td><em>Optional</em>. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href="#message">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.<br><br><em>Example:</em> A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#keyboardbutton" id="keyboardbutton" name="keyboardbutton"><i class="anchor-icon"></i></a>KeyboardButton</h4> +<p>This object represents one button of the reply keyboard. For simple text buttons <em>String</em> can be used instead of this object to specify text of the button. Optional fields <em>request_contact</em>, <em>request_location</em>, and <em>request_poll</em> are mutually exclusive.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>text</td> +<td>String</td> +<td>Text of the button. If none of the optional fields are used, it will be sent as a message when the button is pressed</td> +</tr> +<tr> +<td>request_contact</td> +<td>Boolean</td> +<td><em>Optional</em>. If <em>True</em>, the user's phone number will be sent as a contact when the button is pressed. Available in private chats only</td> +</tr> +<tr> +<td>request_location</td> +<td>Boolean</td> +<td><em>Optional</em>. If <em>True</em>, the user's current location will be sent when the button is pressed. Available in private chats only</td> +</tr> +<tr> +<td>request_poll</td> +<td><a href="#keyboardbuttonpolltype">KeyboardButtonPollType</a></td> +<td><em>Optional</em>. If specified, the user will be asked to create a poll and send it to the bot when the button is pressed. Available in private chats only</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> <em>request_contact</em> and <em>request_location</em> options will only work in Telegram versions released after 9 April, 2016. Older clients will display <em>unsupported message</em>. +<strong>Note:</strong> <em>request_poll</em> option will only work in Telegram versions released after 23 January, 2020. Older clients will display <em>unsupported message</em>.</p> +<h4><a class="anchor" href="#keyboardbuttonpolltype" id="keyboardbuttonpolltype" name="keyboardbuttonpolltype"><i class="anchor-icon"></i></a>KeyboardButtonPollType</h4> +<p>This object represents type of a poll, which is allowed to be created and sent when the corresponding button is pressed.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td><em>Optional</em>. If <em>quiz</em> is passed, the user will be allowed to create only polls in the quiz mode. If <em>regular</em> is passed, only regular polls will be allowed. Otherwise, the user will be allowed to create a poll of any type.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#replykeyboardremove" id="replykeyboardremove" name="replykeyboardremove"><i class="anchor-icon"></i></a>ReplyKeyboardRemove</h4> +<p>Upon receiving a message with this object, Telegram clients will remove the current custom keyboard and display the default letter-keyboard. By default, custom keyboards are displayed until a new keyboard is sent by a bot. An exception is made for one-time keyboards that are hidden immediately after the user presses a button (see <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a>).</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>remove_keyboard</td> +<td>True</td> +<td>Requests clients to remove the custom keyboard (user will not be able to summon this keyboard; if you want to hide the keyboard from sight but keep it accessible, use <em>one_time_keyboard</em> in <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a>)</td> +</tr> +<tr> +<td>selective</td> +<td>Boolean</td> +<td><em>Optional</em>. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href="#message">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.<br><br><em>Example:</em> A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinekeyboardmarkup" id="inlinekeyboardmarkup" name="inlinekeyboardmarkup"><i class="anchor-icon"></i></a>InlineKeyboardMarkup</h4> +<p>This object represents an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a> that appears right next to the message it belongs to.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>inline_keyboard</td> +<td>Array of Array of <a href="#inlinekeyboardbutton">InlineKeyboardButton</a></td> +<td>Array of button rows, each represented by an Array of <a href="#inlinekeyboardbutton">InlineKeyboardButton</a> objects</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will display <em>unsupported message</em>.</p> +<h4><a class="anchor" href="#inlinekeyboardbutton" id="inlinekeyboardbutton" name="inlinekeyboardbutton"><i class="anchor-icon"></i></a>InlineKeyboardButton</h4> +<p>This object represents one button of an inline keyboard. You <strong>must</strong> use exactly one of the optional fields.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>text</td> +<td>String</td> +<td>Label text on the button</td> +</tr> +<tr> +<td>url</td> +<td>String</td> +<td><em>Optional</em>. HTTP or tg:// url to be opened when button is pressed</td> +</tr> +<tr> +<td>login_url</td> +<td><a href="#loginurl">LoginUrl</a></td> +<td><em>Optional</em>. An HTTP URL used to automatically authorize the user. Can be used as a replacement for the <a href="https://core.telegram.org/widgets/login">Telegram Login Widget</a>.</td> +</tr> +<tr> +<td>callback_data</td> +<td>String</td> +<td><em>Optional</em>. Data to be sent in a <a href="#callbackquery">callback query</a> to the bot when button is pressed, 1-64 bytes</td> +</tr> +<tr> +<td>switch_inline_query</td> +<td>String</td> +<td><em>Optional</em>. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. Can be empty, in which case just the bot's username will be inserted.<br><br><strong>Note:</strong> This offers an easy way for users to start using your bot in <a href="/bots/inline">inline mode</a> when they are currently in a private chat with it. Especially useful when combined with <a href="#answerinlinequery"><em>switch_pm...</em></a> actions – in this case the user will be automatically returned to the chat they switched from, skipping the chat selection screen.</td> +</tr> +<tr> +<td>switch_inline_query_current_chat</td> +<td>String</td> +<td><em>Optional</em>. If set, pressing the button will insert the bot's username and the specified inline query in the current chat's input field. Can be empty, in which case only the bot's username will be inserted.<br><br>This offers a quick way for the user to open your bot in inline mode in the same chat – good for selecting something from multiple options.</td> +</tr> +<tr> +<td>callback_game</td> +<td><a href="#callbackgame">CallbackGame</a></td> +<td><em>Optional</em>. Description of the game that will be launched when the user presses the button.<br><br><strong>NOTE:</strong> This type of button <strong>must</strong> always be the first button in the first row.</td> +</tr> +<tr> +<td>pay</td> +<td>Boolean</td> +<td><em>Optional</em>. Specify True, to send a <a href="#payments">Pay button</a>.<br><br><strong>NOTE:</strong> This type of button <strong>must</strong> always be the first button in the first row.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#loginurl" id="loginurl" name="loginurl"><i class="anchor-icon"></i></a>LoginUrl</h4> +<p>This object represents a parameter of the inline keyboard button used to automatically authorize a user. Serves as a great replacement for the <a href="https://core.telegram.org/widgets/login">Telegram Login Widget</a> when the user is coming from Telegram. All the user needs to do is tap/click a button and confirm that they want to log in:</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="TITLE" alt="TITLE" srcset="/file/811140015/1734/8VZFkwWXalM.97872/6127fa62d8a0bf2b3c , 2x"></a> +</div> +<p>Telegram apps support these buttons as of <a href="https://telegram.org/blog/privacy-discussions-web-bots#meet-seamless-web-bots">version 5.7</a>.</p> +<blockquote> +<p>Sample bot: <a href="https://t.me/discussbot">@discussbot</a></p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>url</td> +<td>String</td> +<td>An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in <a href="https://core.telegram.org/widgets/login#receiving-authorization-data">Receiving authorization data</a>.<br><br><strong>NOTE:</strong> You <strong>must</strong> always check the hash of the received data to verify the authentication and the integrity of the data as described in <a href="https://core.telegram.org/widgets/login#checking-authorization">Checking authorization</a>.</td> +</tr> +<tr> +<td>forward_text</td> +<td>String</td> +<td><em>Optional</em>. New text of the button in forwarded messages.</td> +</tr> +<tr> +<td>bot_username</td> +<td>String</td> +<td><em>Optional</em>. Username of a bot, which will be used for user authorization. See <a href="https://core.telegram.org/widgets/login#setting-up-a-bot">Setting up a bot</a> for more details. If not specified, the current bot's username will be assumed. The <em>url</em>'s domain must be the same as the domain linked with the bot. See <a href="https://core.telegram.org/widgets/login#linking-your-domain-to-the-bot">Linking your domain to the bot</a> for more details.</td> +</tr> +<tr> +<td>request_write_access</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass True to request the permission for your bot to send messages to the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#callbackquery" id="callbackquery" name="callbackquery"><i class="anchor-icon"></i></a>CallbackQuery</h4> +<p>This object represents an incoming callback query from a callback button in an <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>. If the button that originated the query was attached to a message sent by the bot, the field <em>message</em> will be present. If the button was attached to a message sent via the bot (in <a href="#inline-mode">inline mode</a>), the field <em>inline_message_id</em> will be present. Exactly one of the fields <em>data</em> or <em>game_short_name</em> will be present.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this query</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>Sender</td> +</tr> +<tr> +<td>message</td> +<td><a href="#message">Message</a></td> +<td><em>Optional</em>. Message with the callback button that originated the query. Note that message content and message date will not be available if the message is too old</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td><em>Optional</em>. Identifier of the message sent via the bot in inline mode, that originated the query.</td> +</tr> +<tr> +<td>chat_instance</td> +<td>String</td> +<td>Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in <a href="#games">games</a>.</td> +</tr> +<tr> +<td>data</td> +<td>String</td> +<td><em>Optional</em>. Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field.</td> +</tr> +<tr> +<td>game_short_name</td> +<td>String</td> +<td><em>Optional</em>. Short name of a <a href="#games">Game</a> to be returned, serves as the unique identifier for the game</td> +</tr> +</tbody> +</table> +<blockquote> +<p><strong>NOTE:</strong> After the user presses a callback button, Telegram clients will display a progress bar until you call <a href="#answercallbackquery">answerCallbackQuery</a>. It is, therefore, necessary to react by calling <a href="#answercallbackquery">answerCallbackQuery</a> even if no notification to the user is needed (e.g., without specifying any of the optional parameters).</p> +</blockquote> +<h4><a class="anchor" href="#forcereply" id="forcereply" name="forcereply"><i class="anchor-icon"></i></a>ForceReply</h4> +<p>Upon receiving a message with this object, Telegram clients will display a reply interface to the user (act as if the user has selected the bot's message and tapped 'Reply'). This can be extremely useful if you want to create user-friendly step-by-step interfaces without having to sacrifice <a href="/bots#privacy-mode">privacy mode</a>.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>force_reply</td> +<td>True</td> +<td>Shows reply interface to the user, as if they manually selected the bot's message and tapped 'Reply'</td> +</tr> +<tr> +<td>input_field_placeholder</td> +<td>String</td> +<td><em>Optional</em>. The placeholder to be shown in the input field when the reply is active; 1-64 characters</td> +</tr> +<tr> +<td>selective</td> +<td>Boolean</td> +<td><em>Optional</em>. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href="#message">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.</td> +</tr> +</tbody> +</table> +<blockquote> +<p><strong>Example:</strong> A <a href="https://t.me/PollBot">poll bot</a> for groups runs in privacy mode (only receives commands, replies to its messages and mentions). There could be two ways to create a new poll:</p> +<ul> +<li>Explain the user how to send a command with parameters (e.g. /newpoll question answer1 answer2). May be appealing for hardcore users but lacks modern day polish.</li> +<li>Guide the user through a step-by-step process. 'Please send me your question', 'Cool, now let's add the first answer option', 'Great. Keep adding answer options, then send /done when you're ready'.</li> +</ul> +<p>The last option is definitely more attractive. And if you use <a href="#forcereply">ForceReply</a> in your bot's questions, it will receive the user's answers even if it only receives replies, commands and mentions — without any extra work for the user.</p> +</blockquote> +<h4><a class="anchor" href="#chatphoto" id="chatphoto" name="chatphoto"><i class="anchor-icon"></i></a>ChatPhoto</h4> +<p>This object represents a chat photo.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>small_file_id</td> +<td>String</td> +<td>File identifier of small (160x160) chat photo. This file_id can be used only for photo download and only for as long as the photo is not changed.</td> +</tr> +<tr> +<td>small_file_unique_id</td> +<td>String</td> +<td>Unique file identifier of small (160x160) chat photo, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>big_file_id</td> +<td>String</td> +<td>File identifier of big (640x640) chat photo. This file_id can be used only for photo download and only for as long as the photo is not changed.</td> +</tr> +<tr> +<td>big_file_unique_id</td> +<td>String</td> +<td>Unique file identifier of big (640x640) chat photo, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatinvitelink" id="chatinvitelink" name="chatinvitelink"><i class="anchor-icon"></i></a>ChatInviteLink</h4> +<p>Represents an invite link for a chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>invite_link</td> +<td>String</td> +<td>The invite link. If the link was created by another chat administrator, then the second part of the link will be replaced with "...".</td> +</tr> +<tr> +<td>creator</td> +<td><a href="#user">User</a></td> +<td>Creator of the link</td> +</tr> +<tr> +<td>is_primary</td> +<td>Boolean</td> +<td>True, if the link is primary</td> +</tr> +<tr> +<td>is_revoked</td> +<td>Boolean</td> +<td>True, if the link is revoked</td> +</tr> +<tr> +<td>expire_date</td> +<td>Integer</td> +<td><em>Optional</em>. Point in time (Unix timestamp) when the link will expire or has been expired</td> +</tr> +<tr> +<td>member_limit</td> +<td>Integer</td> +<td><em>Optional</em>. Maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatmember" id="chatmember" name="chatmember"><i class="anchor-icon"></i></a>ChatMember</h4> +<p>This object contains information about one member of a chat. Currently, the following 6 types of chat members are supported:</p> +<ul> +<li><a href="#chatmemberowner">ChatMemberOwner</a></li> +<li><a href="#chatmemberadministrator">ChatMemberAdministrator</a></li> +<li><a href="#chatmembermember">ChatMemberMember</a></li> +<li><a href="#chatmemberrestricted">ChatMemberRestricted</a></li> +<li><a href="#chatmemberleft">ChatMemberLeft</a></li> +<li><a href="#chatmemberbanned">ChatMemberBanned</a></li> +</ul> +<h4><a class="anchor" href="#chatmemberowner" id="chatmemberowner" name="chatmemberowner"><i class="anchor-icon"></i></a>ChatMemberOwner</h4> +<p>Represents a <a href="#chatmember">chat member</a> that owns the chat and has all administrator privileges.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always "creator"</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td>True, if the user's presence in the chat is hidden</td> +</tr> +<tr> +<td>custom_title</td> +<td>String</td> +<td><em>Optional</em>. Custom title for this user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatmemberadministrator" id="chatmemberadministrator" name="chatmemberadministrator"><i class="anchor-icon"></i></a>ChatMemberAdministrator</h4> +<p>Represents a <a href="#chatmember">chat member</a> that has some additional privileges.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always "administrator"</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +<tr> +<td>can_be_edited</td> +<td>Boolean</td> +<td>True, if the bot is allowed to edit administrator privileges of that user</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td>True, if the user's presence in the chat is hidden</td> +</tr> +<tr> +<td>can_manage_chat</td> +<td>Boolean</td> +<td>True, if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege</td> +</tr> +<tr> +<td>can_delete_messages</td> +<td>Boolean</td> +<td>True, if the administrator can delete messages of other users</td> +</tr> +<tr> +<td>can_manage_voice_chats</td> +<td>Boolean</td> +<td>True, if the administrator can manage voice chats</td> +</tr> +<tr> +<td>can_restrict_members</td> +<td>Boolean</td> +<td>True, if the administrator can restrict, ban or unban chat members</td> +</tr> +<tr> +<td>can_promote_members</td> +<td>Boolean</td> +<td>True, if the administrator can add new administrators with a subset of their own privileges or demote administrators that he has promoted, directly or indirectly (promoted by administrators that were appointed by the user)</td> +</tr> +<tr> +<td>can_change_info</td> +<td>Boolean</td> +<td>True, if the user is allowed to change the chat title, photo and other settings</td> +</tr> +<tr> +<td>can_invite_users</td> +<td>Boolean</td> +<td>True, if the user is allowed to invite new users to the chat</td> +</tr> +<tr> +<td>can_post_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the administrator can post in the channel; channels only</td> +</tr> +<tr> +<td>can_edit_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the administrator can edit messages of other users and can pin messages; channels only</td> +</tr> +<tr> +<td>can_pin_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the user is allowed to pin messages; groups and supergroups only</td> +</tr> +<tr> +<td>custom_title</td> +<td>String</td> +<td><em>Optional</em>. Custom title for this user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatmembermember" id="chatmembermember" name="chatmembermember"><i class="anchor-icon"></i></a>ChatMemberMember</h4> +<p>Represents a <a href="#chatmember">chat member</a> that has no additional privileges or restrictions.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always "member"</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatmemberrestricted" id="chatmemberrestricted" name="chatmemberrestricted"><i class="anchor-icon"></i></a>ChatMemberRestricted</h4> +<p>Represents a <a href="#chatmember">chat member</a> that is under certain restrictions in the chat. Supergroups only.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always "restricted"</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +<tr> +<td>is_member</td> +<td>Boolean</td> +<td>True, if the user is a member of the chat at the moment of the request</td> +</tr> +<tr> +<td>can_change_info</td> +<td>Boolean</td> +<td>True, if the user is allowed to change the chat title, photo and other settings</td> +</tr> +<tr> +<td>can_invite_users</td> +<td>Boolean</td> +<td>True, if the user is allowed to invite new users to the chat</td> +</tr> +<tr> +<td>can_pin_messages</td> +<td>Boolean</td> +<td>True, if the user is allowed to pin messages</td> +</tr> +<tr> +<td>can_send_messages</td> +<td>Boolean</td> +<td>True, if the user is allowed to send text messages, contacts, locations and venues</td> +</tr> +<tr> +<td>can_send_media_messages</td> +<td>Boolean</td> +<td>True, if the user is allowed to send audios, documents, photos, videos, video notes and voice notes</td> +</tr> +<tr> +<td>can_send_polls</td> +<td>Boolean</td> +<td>True, if the user is allowed to send polls</td> +</tr> +<tr> +<td>can_send_other_messages</td> +<td>Boolean</td> +<td>True, if the user is allowed to send animations, games, stickers and use inline bots</td> +</tr> +<tr> +<td>can_add_web_page_previews</td> +<td>Boolean</td> +<td>True, if the user is allowed to add web page previews to their messages</td> +</tr> +<tr> +<td>until_date</td> +<td>Integer</td> +<td>Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatmemberleft" id="chatmemberleft" name="chatmemberleft"><i class="anchor-icon"></i></a>ChatMemberLeft</h4> +<p>Represents a <a href="#chatmember">chat member</a> that isn't currently a member of the chat, but may join it themselves.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always "left"</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatmemberbanned" id="chatmemberbanned" name="chatmemberbanned"><i class="anchor-icon"></i></a>ChatMemberBanned</h4> +<p>Represents a <a href="#chatmember">chat member</a> that was banned in the chat and can't return to the chat or view chat messages.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>status</td> +<td>String</td> +<td>The member's status in the chat, always "kicked"</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>Information about the user</td> +</tr> +<tr> +<td>until_date</td> +<td>Integer</td> +<td>Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatmemberupdated" id="chatmemberupdated" name="chatmemberupdated"><i class="anchor-icon"></i></a>ChatMemberUpdated</h4> +<p>This object represents changes in the status of a chat member.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat</td> +<td><a href="#chat">Chat</a></td> +<td>Chat the user belongs to</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>Performer of the action, which resulted in the change</td> +</tr> +<tr> +<td>date</td> +<td>Integer</td> +<td>Date the change was done in Unix time</td> +</tr> +<tr> +<td>old_chat_member</td> +<td><a href="#chatmember">ChatMember</a></td> +<td>Previous information about the chat member</td> +</tr> +<tr> +<td>new_chat_member</td> +<td><a href="#chatmember">ChatMember</a></td> +<td>New information about the chat member</td> +</tr> +<tr> +<td>invite_link</td> +<td><a href="#chatinvitelink">ChatInviteLink</a></td> +<td><em>Optional</em>. Chat invite link, which was used by the user to join the chat; for joining by invite link events only.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatpermissions" id="chatpermissions" name="chatpermissions"><i class="anchor-icon"></i></a>ChatPermissions</h4> +<p>Describes actions that a non-administrator user is allowed to take in a chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>can_send_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the user is allowed to send text messages, contacts, locations and venues</td> +</tr> +<tr> +<td>can_send_media_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the user is allowed to send audios, documents, photos, videos, video notes and voice notes, implies can_send_messages</td> +</tr> +<tr> +<td>can_send_polls</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the user is allowed to send polls, implies can_send_messages</td> +</tr> +<tr> +<td>can_send_other_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the user is allowed to send animations, games, stickers and use inline bots, implies can_send_media_messages</td> +</tr> +<tr> +<td>can_add_web_page_previews</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the user is allowed to add web page previews to their messages, implies can_send_media_messages</td> +</tr> +<tr> +<td>can_change_info</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the user is allowed to change the chat title, photo and other settings. Ignored in public supergroups</td> +</tr> +<tr> +<td>can_invite_users</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the user is allowed to invite new users to the chat</td> +</tr> +<tr> +<td>can_pin_messages</td> +<td>Boolean</td> +<td><em>Optional</em>. True, if the user is allowed to pin messages. Ignored in public supergroups</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#chatlocation" id="chatlocation" name="chatlocation"><i class="anchor-icon"></i></a>ChatLocation</h4> +<p>Represents a location to which a chat is connected.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td>The location to which the supergroup is connected. Can't be a live location.</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Location address; 1-64 characters, as defined by the chat owner</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#botcommand" id="botcommand" name="botcommand"><i class="anchor-icon"></i></a>BotCommand</h4> +<p>This object represents a bot command.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>command</td> +<td>String</td> +<td>Text of the command, 1-32 characters. Can contain only lowercase English letters, digits and underscores.</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Description of the command, 3-256 characters.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#botcommandscope" id="botcommandscope" name="botcommandscope"><i class="anchor-icon"></i></a>BotCommandScope</h4> +<p>This object represents the scope to which bot commands are applied. Currently, the following 7 scopes are supported:</p> +<ul> +<li><a href="#botcommandscopedefault">BotCommandScopeDefault</a></li> +<li><a href="#botcommandscopeallprivatechats">BotCommandScopeAllPrivateChats</a></li> +<li><a href="#botcommandscopeallgroupchats">BotCommandScopeAllGroupChats</a></li> +<li><a href="#botcommandscopeallchatadministrators">BotCommandScopeAllChatAdministrators</a></li> +<li><a href="#botcommandscopechat">BotCommandScopeChat</a></li> +<li><a href="#botcommandscopechatadministrators">BotCommandScopeChatAdministrators</a></li> +<li><a href="#botcommandscopechatmember">BotCommandScopeChatMember</a></li> +</ul> +<h4><a class="anchor" href="#determining-list-of-commands" id="determining-list-of-commands" name="determining-list-of-commands"><i class="anchor-icon"></i></a>Determining list of commands</h4> +<p>The following algorithm is used to determine the list of commands for a particular user viewing the bot menu. The first list of commands which is set is returned:</p> +<p><strong>Commands in the chat with the bot</strong></p> +<ul> +<li>botCommandScopeChat + language_code</li> +<li>botCommandScopeChat</li> +<li>botCommandScopeAllPrivateChats + language_code</li> +<li>botCommandScopeAllPrivateChats</li> +<li>botCommandScopeDefault + language_code</li> +<li>botCommandScopeDefault</li> +</ul> +<p><strong>Commands in group and supergroup chats</strong></p> +<ul> +<li>botCommandScopeChatMember + language_code</li> +<li>botCommandScopeChatMember</li> +<li>botCommandScopeChatAdministrators + language_code (admins only)</li> +<li>botCommandScopeChatAdministrators (admins only)</li> +<li>botCommandScopeChat + language_code</li> +<li>botCommandScopeChat</li> +<li>botCommandScopeAllChatAdministrators + language_code (admins only)</li> +<li>botCommandScopeAllChatAdministrators (admins only)</li> +<li>botCommandScopeAllGroupChats + language_code</li> +<li>botCommandScopeAllGroupChats</li> +<li>botCommandScopeDefault + language_code</li> +<li>botCommandScopeDefault</li> +</ul> +<h4><a class="anchor" href="#botcommandscopedefault" id="botcommandscopedefault" name="botcommandscopedefault"><i class="anchor-icon"></i></a>BotCommandScopeDefault</h4> +<p>Represents the default <a href="#botcommandscope">scope</a> of bot commands. Default commands are used if no commands with a <a href="#determining-list-of-commands">narrower scope</a> are specified for the user.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>default</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#botcommandscopeallprivatechats" id="botcommandscopeallprivatechats" name="botcommandscopeallprivatechats"><i class="anchor-icon"></i></a>BotCommandScopeAllPrivateChats</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering all private chats.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>all_private_chats</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#botcommandscopeallgroupchats" id="botcommandscopeallgroupchats" name="botcommandscopeallgroupchats"><i class="anchor-icon"></i></a>BotCommandScopeAllGroupChats</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering all group and supergroup chats.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>all_group_chats</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#botcommandscopeallchatadministrators" id="botcommandscopeallchatadministrators" name="botcommandscopeallchatadministrators"><i class="anchor-icon"></i></a>BotCommandScopeAllChatAdministrators</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering all group and supergroup chat administrators.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>all_chat_administrators</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#botcommandscopechat" id="botcommandscopechat" name="botcommandscopechat"><i class="anchor-icon"></i></a>BotCommandScopeChat</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering a specific chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>chat</em></td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#botcommandscopechatadministrators" id="botcommandscopechatadministrators" name="botcommandscopechatadministrators"><i class="anchor-icon"></i></a>BotCommandScopeChatAdministrators</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering all administrators of a specific group or supergroup chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>chat_administrators</em></td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#botcommandscopechatmember" id="botcommandscopechatmember" name="botcommandscopechatmember"><i class="anchor-icon"></i></a>BotCommandScopeChatMember</h4> +<p>Represents the <a href="#botcommandscope">scope</a> of bot commands, covering a specific member of a group or supergroup chat.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Scope type, must be <em>chat_member</em></td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Unique identifier of the target user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#responseparameters" id="responseparameters" name="responseparameters"><i class="anchor-icon"></i></a>ResponseParameters</h4> +<p>Contains information about why a request was unsuccessful.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>migrate_to_chat_id</td> +<td>Integer</td> +<td><em>Optional</em>. The group has been migrated to a supergroup with the specified identifier. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.</td> +</tr> +<tr> +<td>retry_after</td> +<td>Integer</td> +<td><em>Optional</em>. In case of exceeding flood control, the number of seconds left to wait before the request can be repeated</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputmedia" id="inputmedia" name="inputmedia"><i class="anchor-icon"></i></a>InputMedia</h4> +<p>This object represents the content of a media message to be sent. It should be one of</p> +<ul> +<li><a href="#inputmediaanimation">InputMediaAnimation</a></li> +<li><a href="#inputmediadocument">InputMediaDocument</a></li> +<li><a href="#inputmediaaudio">InputMediaAudio</a></li> +<li><a href="#inputmediaphoto">InputMediaPhoto</a></li> +<li><a href="#inputmediavideo">InputMediaVideo</a></li> +</ul> +<h4><a class="anchor" href="#inputmediaphoto" id="inputmediaphoto" name="inputmediaphoto"><i class="anchor-icon"></i></a>InputMediaPhoto</h4> +<p>Represents a photo to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>photo</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass "attach://<file_attach_name>" to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the photo to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the photo caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputmediavideo" id="inputmediavideo" name="inputmediavideo"><i class="anchor-icon"></i></a>InputMediaVideo</h4> +<p>Represents a video to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>video</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass "attach://<file_attach_name>" to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td><em>Optional</em>. Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass "attach://<file_attach_name>" if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the video to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the video caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td><em>Optional</em>. Video width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td><em>Optional</em>. Video height</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td><em>Optional</em>. Video duration in seconds</td> +</tr> +<tr> +<td>supports_streaming</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if the uploaded video is suitable for streaming</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputmediaanimation" id="inputmediaanimation" name="inputmediaanimation"><i class="anchor-icon"></i></a>InputMediaAnimation</h4> +<p>Represents an animation file (GIF or H.264/MPEG-4 AVC video without sound) to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>animation</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass "attach://<file_attach_name>" to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td><em>Optional</em>. Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass "attach://<file_attach_name>" if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the animation to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the animation caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td><em>Optional</em>. Animation width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td><em>Optional</em>. Animation height</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td><em>Optional</em>. Animation duration in seconds</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputmediaaudio" id="inputmediaaudio" name="inputmediaaudio"><i class="anchor-icon"></i></a>InputMediaAudio</h4> +<p>Represents an audio file to be treated as music to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>audio</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass "attach://<file_attach_name>" to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td><em>Optional</em>. Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass "attach://<file_attach_name>" if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the audio to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the audio caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td><em>Optional</em>. Duration of the audio in seconds</td> +</tr> +<tr> +<td>performer</td> +<td>String</td> +<td><em>Optional</em>. Performer of the audio</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title of the audio</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputmediadocument" id="inputmediadocument" name="inputmediadocument"><i class="anchor-icon"></i></a>InputMediaDocument</h4> +<p>Represents a general file to be sent.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>document</em></td> +</tr> +<tr> +<td>media</td> +<td>String</td> +<td>File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass "attach://<file_attach_name>" to upload a new one using multipart/form-data under <file_attach_name> name. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td><em>Optional</em>. Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass "attach://<file_attach_name>" if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the document to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the document caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_content_type_detection</td> +<td>Boolean</td> +<td><em>Optional</em>. Disables automatic server-side content type detection for files uploaded using multipart/form-data. Always true, if the document is sent as part of an album.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputfile" id="inputfile" name="inputfile"><i class="anchor-icon"></i></a>InputFile</h4> +<p>This object represents the contents of a file to be uploaded. Must be posted using multipart/form-data in the usual way that files are uploaded via the browser.</p> +<h4><a class="anchor" href="#sending-files" id="sending-files" name="sending-files"><i class="anchor-icon"></i></a>Sending files</h4> +<p>There are three ways to send files (photos, stickers, audio, media, etc.):</p> +<ol> +<li>If the file is already stored somewhere on the Telegram servers, you don't need to reupload it: each file object has a <strong>file_id</strong> field, simply pass this <strong>file_id</strong> as a parameter instead of uploading. There are <strong>no limits</strong> for files sent this way.</li> +<li>Provide Telegram with an HTTP URL for the file to be sent. Telegram will download and send the file. 5 MB max size for photos and 20 MB max for other types of content.</li> +<li>Post the file using multipart/form-data in the usual way that files are uploaded via the browser. 10 MB max size for photos, 50 MB for other files.</li> +</ol> +<p><strong>Sending by file_id</strong></p> +<ul> +<li>It is not possible to change the file type when resending by <strong>file_id</strong>. I.e. a <a href="#video">video</a> can't be <a href="#sendphoto">sent as a photo</a>, a <a href="#photosize">photo</a> can't be <a href="#senddocument">sent as a document</a>, etc.</li> +<li>It is not possible to resend thumbnails.</li> +<li>Resending a photo by <strong>file_id</strong> will send all of its <a href="#photosize">sizes</a>.</li> +<li><strong>file_id</strong> is unique for each individual bot and <strong>can't</strong> be transferred from one bot to another.</li> +<li><strong>file_id</strong> uniquely identifies a file, but a file can have different valid <strong>file_id</strong>s even for the same bot.</li> +</ul> +<p><strong>Sending by URL</strong></p> +<ul> +<li>When sending by URL the target file must have the correct MIME type (e.g., audio/mpeg for <a href="#sendaudio">sendAudio</a>, etc.).</li> +<li>In <a href="#senddocument">sendDocument</a>, sending by URL will currently only work for <strong>GIF</strong>, <strong>PDF</strong> and <strong>ZIP</strong> files.</li> +<li>To use <a href="#sendvoice">sendVoice</a>, the file must have the type audio/ogg and be no more than 1MB in size. 1-20MB voice notes will be sent as files.</li> +<li>Other configurations may work but we can't guarantee that they will.</li> +</ul> +<h4><a class="anchor" href="#inline-mode-objects" id="inline-mode-objects" name="inline-mode-objects"><i class="anchor-icon"></i></a>Inline mode objects</h4> +<p>Objects and methods used in the inline mode are described in the <a href="#inline-mode">Inline mode section</a>.</p> +<h3><a class="anchor" href="#available-methods" id="available-methods" name="available-methods"><i class="anchor-icon"></i></a>Available methods</h3> +<blockquote> +<p>All methods in the Bot API are case-insensitive. We support <strong>GET</strong> and <strong>POST</strong> HTTP methods. Use either <a href="https://en.wikipedia.org/wiki/Query_string">URL query string</a> or <em>application/json</em> or <em>application/x-www-form-urlencoded</em> or <em>multipart/form-data</em> for passing parameters in Bot API requests. +On successful call, a JSON-object containing the result will be returned.</p> +</blockquote> +<h4><a class="anchor" href="#getme" id="getme" name="getme"><i class="anchor-icon"></i></a>getMe</h4> +<p>A simple method for testing your bot's authentication token. Requires no parameters. Returns basic information about the bot in form of a <a href="#user">User</a> object.</p> +<h4><a class="anchor" href="#logout" id="logout" name="logout"><i class="anchor-icon"></i></a>logOut</h4> +<p>Use this method to log out from the cloud Bot API server before launching the bot locally. You <strong>must</strong> log out the bot before running it locally, otherwise there is no guarantee that the bot will receive updates. After a successful call, you can immediately log in on a local server, but will not be able to log in back to the cloud Bot API server for 10 minutes. Returns <em>True</em> on success. Requires no parameters.</p> +<h4><a class="anchor" href="#close" id="close" name="close"><i class="anchor-icon"></i></a>close</h4> +<p>Use this method to close the bot instance before moving it from one local server to another. You need to delete the webhook before calling this method to ensure that the bot isn't launched again after server restart. The method will return error 429 in the first 10 minutes after the bot is launched. Returns <em>True</em> on success. Requires no parameters.</p> +<h4><a class="anchor" href="#sendmessage" id="sendmessage" name="sendmessage"><i class="anchor-icon"></i></a>sendMessage</h4> +<p>Use this method to send text messages. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td>Yes</td> +<td>Text of the message to be sent, 1-4096 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the message text. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in message text, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_web_page_preview</td> +<td>Boolean</td> +<td>Optional</td> +<td>Disables link previews for links in this message</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#formatting-options" id="formatting-options" name="formatting-options"><i class="anchor-icon"></i></a>Formatting options</h4> +<p>The Bot API supports basic formatting for messages. You can use bold, italic, underlined and strikethrough text, as well as inline links and pre-formatted code in your bots' messages. Telegram clients will render them accordingly. You can use either markdown-style or HTML-style formatting.</p> +<p>Note that Telegram clients will display an <strong>alert</strong> to the user before opening an inline link ('Open this link?' together with the full URL).</p> +<p>Message entities can be nested, providing following restrictions are met:</p> +<ul> +<li>If two entities has common characters then one of them is fully contained inside another.</li> +<li><em>bold</em>, <em>italic</em>, <em>underline</em> and <em>strikethrough</em> entities can contain and to be contained in any other entities, except <em>pre</em> and <em>code</em>.</li> +<li>All other entities can't contain each other.</li> +</ul> +<p>Links <code>tg://user?id=<user_id></code> can be used to mention a user by their ID without using a username. Please note:</p> +<ul> +<li>These links will work <strong>only</strong> if they are used inside an inline link. For example, they will not work, when used in an inline keyboard button or in a message text.</li> +<li>These mentions are only guaranteed to work if the user has contacted the bot in the past, has sent a callback query to the bot via inline button or is a member in the group where he was mentioned.</li> +</ul> +<h6>MarkdownV2 style</h6> +<p>To use this mode, pass <em>MarkdownV2</em> in the <em>parse_mode</em> field. Use the following syntax in your message:</p> +<pre><code>*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +*bold _italic bold ~italic bold strikethrough~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +`inline fixed-width code` +``` +pre-formatted fixed-width code block +``` +```python +pre-formatted fixed-width code block written in the Python programming language +```</code></pre> +<p>Please note:</p> +<ul> +<li>Any character with code between 1 and 126 inclusively can be escaped anywhere with a preceding '\' character, in which case it is treated as an ordinary character and not a part of the markup. This implies that '\' character usually must be escaped with a preceding '\' character.</li> +<li>Inside <code>pre</code> and <code>code</code> entities, all '`' and '\' characters must be escaped with a preceding '\' character.</li> +<li>Inside <code>(...)</code> part of inline link definition, all ')' and '\' must be escaped with a preceding '\' character.</li> +<li>In all other places characters '_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!' must be escaped with the preceding character '\'.</li> +<li>In case of ambiguity between <code>italic</code> and <code>underline</code> entities <code>__</code> is always greadily treated from left to right as beginning or end of <code>underline</code> entity, so instead of <code>___italic underline___</code> use <code>___italic underline_\r__</code>, where <code>\r</code> is a character with code 13, which will be ignored.</li> +</ul> +<h6>HTML style</h6> +<p>To use this mode, pass <em>HTML</em> in the <em>parse_mode</em> field. The following tags are currently supported:</p> +<pre><code><b>bold</b>, <strong>bold</strong> +<i>italic</i>, <em>italic</em> +<u>underline</u>, <ins>underline</ins> +<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del> +<b>bold <i>italic bold <s>italic bold strikethrough</s> <u>underline italic bold</u></i> bold</b> +<a href="http://www.example.com/">inline URL</a> +<a href="tg://user?id=123456789">inline mention of a user</a> +<code>inline fixed-width code</code> +<pre>pre-formatted fixed-width code block</pre> +<pre><code class="language-python">pre-formatted fixed-width code block written in the Python programming language</code></pre></code></pre> +<p>Please note:</p> +<ul> +<li>Only the tags mentioned above are currently supported.</li> +<li>All <code><</code>, <code>></code> and <code>&</code> symbols that are not a part of a tag or an HTML entity must be replaced with the corresponding HTML entities (<code><</code> with <code>&lt;</code>, <code>></code> with <code>&gt;</code> and <code>&</code> with <code>&amp;</code>).</li> +<li>All numerical HTML entities are supported.</li> +<li>The API currently supports only the following named HTML entities: <code>&lt;</code>, <code>&gt;</code>, <code>&amp;</code> and <code>&quot;</code>.</li> +<li>Use nested <code>pre</code> and <code>code</code> tags, to define programming language for <code>pre</code> entity.</li> +<li>Programming language can't be specified for standalone <code>code</code> tags.</li> +</ul> +<h6>Markdown style</h6> +<p>This is a legacy mode, retained for backward compatibility. To use this mode, pass <em>Markdown</em> in the <em>parse_mode</em> field. Use the following syntax in your message:</p> +<pre><code>*bold text* +_italic text_ +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +`inline fixed-width code` +``` +pre-formatted fixed-width code block +``` +```python +pre-formatted fixed-width code block written in the Python programming language +```</code></pre> +<p>Please note:</p> +<ul> +<li>Entities must not be nested, use parse mode <a href="#markdownv2-style">MarkdownV2</a> instead.</li> +<li>There is no way to specify underline and strikethrough entities, use parse mode <a href="#markdownv2-style">MarkdownV2</a> instead.</li> +<li>To escape characters '_', '*', '`', '[' outside of an entity, prepend the characters '\' before them.</li> +<li>Escaping inside entities is not allowed, so entity must be closed first and reopened again: use <code>_snake_\__case_</code> for italic <code>snake_case</code> and <code>*2*\**2=4*</code> for bold <code>2*2=4</code>.</li> +</ul> +<h4><a class="anchor" href="#forwardmessage" id="forwardmessage" name="forwardmessage"><i class="anchor-icon"></i></a>forwardMessage</h4> +<p>Use this method to forward messages of any kind. Service messages can't be forwarded. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>from_chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the chat where the original message was sent (or channel username in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Message identifier in the chat specified in <em>from_chat_id</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#copymessage" id="copymessage" name="copymessage"><i class="anchor-icon"></i></a>copyMessage</h4> +<p>Use this method to copy messages of any kind. Service messages and invoice messages can't be copied. The method is analogous to the method <a href="#forwardmessage">forwardMessage</a>, but the copied message doesn't have a link to the original message. Returns the <a href="#messageid">MessageId</a> of the sent message on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>from_chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the chat where the original message was sent (or channel username in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Message identifier in the chat specified in <em>from_chat_id</em></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>New caption for media, 0-1024 characters after entities parsing. If not specified, the original caption is kept</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the new caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the new caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendphoto" id="sendphoto" name="sendphoto"><i class="anchor-icon"></i></a>sendPhoto</h4> +<p>Use this method to send photos. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>photo</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Photo to send. Pass a file_id as String to send a photo that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a photo from the Internet, or upload a new photo using multipart/form-data. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Photo caption (may also be used when resending photos by <em>file_id</em>), 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the photo caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendaudio" id="sendaudio" name="sendaudio"><i class="anchor-icon"></i></a>sendAudio</h4> +<p>Use this method to send audio files, if you want Telegram clients to display them in the music player. Your audio must be in the .MP3 or .M4A format. On success, the sent <a href="#message">Message</a> is returned. Bots can currently send audio files of up to 50 MB in size, this limit may be changed in the future.</p> +<p>For sending voice messages, use the <a href="#sendvoice">sendVoice</a> method instead.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>audio</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Audio file to send. Pass a file_id as String to send an audio file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an audio file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Audio caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the audio caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of the audio in seconds</td> +</tr> +<tr> +<td>performer</td> +<td>String</td> +<td>Optional</td> +<td>Performer</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Optional</td> +<td>Track name</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass "attach://<file_attach_name>" if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#senddocument" id="senddocument" name="senddocument"><i class="anchor-icon"></i></a>sendDocument</h4> +<p>Use this method to send general files. On success, the sent <a href="#message">Message</a> is returned. Bots can currently send files of any type of up to 50 MB in size, this limit may be changed in the future.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>document</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>File to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass "attach://<file_attach_name>" if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Document caption (may also be used when resending documents by <em>file_id</em>), 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the document caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_content_type_detection</td> +<td>Boolean</td> +<td>Optional</td> +<td>Disables automatic server-side content type detection for files uploaded using multipart/form-data</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendvideo" id="sendvideo" name="sendvideo"><i class="anchor-icon"></i></a>sendVideo</h4> +<p>Use this method to send video files, Telegram clients support mp4 videos (other formats may be sent as <a href="#document">Document</a>). On success, the sent <a href="#message">Message</a> is returned. Bots can currently send video files of up to 50 MB in size, this limit may be changed in the future.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>video</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Video to send. Pass a file_id as String to send a video that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a video from the Internet, or upload a new video using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of sent video in seconds</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Optional</td> +<td>Video width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Optional</td> +<td>Video height</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass "attach://<file_attach_name>" if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Video caption (may also be used when resending videos by <em>file_id</em>), 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the video caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>supports_streaming</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the uploaded video is suitable for streaming</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendanimation" id="sendanimation" name="sendanimation"><i class="anchor-icon"></i></a>sendAnimation</h4> +<p>Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound). On success, the sent <a href="#message">Message</a> is returned. Bots can currently send animation files of up to 50 MB in size, this limit may be changed in the future.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>animation</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Animation to send. Pass a file_id as String to send an animation that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an animation from the Internet, or upload a new animation using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of sent animation in seconds</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Optional</td> +<td>Animation width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Optional</td> +<td>Animation height</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass "attach://<file_attach_name>" if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Animation caption (may also be used when resending animation by <em>file_id</em>), 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the animation caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendvoice" id="sendvoice" name="sendvoice"><i class="anchor-icon"></i></a>sendVoice</h4> +<p>Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. For this to work, your audio must be in an .OGG file encoded with OPUS (other formats may be sent as <a href="#audio">Audio</a> or <a href="#document">Document</a>). On success, the sent <a href="#message">Message</a> is returned. Bots can currently send voice messages of up to 50 MB in size, this limit may be changed in the future.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>voice</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Audio file to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>Voice message caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the voice message caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of the voice message in seconds</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendvideonote" id="sendvideonote" name="sendvideonote"><i class="anchor-icon"></i></a>sendVideoNote</h4> +<p>As of <a href="https://telegram.org/blog/video-messages-and-telescope">v.4.0</a>, Telegram clients support rounded square mp4 videos of up to 1 minute long. Use this method to send video messages. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>video_note</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Video note to send. Pass a file_id as String to send a video note that exists on the Telegram servers (recommended) or upload a new video using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a>. Sending video notes by a URL is currently unsupported</td> +</tr> +<tr> +<td>duration</td> +<td>Integer</td> +<td>Optional</td> +<td>Duration of sent video in seconds</td> +</tr> +<tr> +<td>length</td> +<td>Integer</td> +<td>Optional</td> +<td>Video width and height, i.e. diameter of the video message</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass "attach://<file_attach_name>" if the thumbnail was uploaded using multipart/form-data under <file_attach_name>. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendmediagroup" id="sendmediagroup" name="sendmediagroup"><i class="anchor-icon"></i></a>sendMediaGroup</h4> +<p>Use this method to send a group of photos, videos, documents or audios as an album. Documents and audio files can be only grouped in an album with messages of the same type. On success, an array of <a href="#message">Messages</a> that were sent is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>media</td> +<td>Array of <a href="#inputmediaaudio">InputMediaAudio</a>, <a href="#inputmediadocument">InputMediaDocument</a>, <a href="#inputmediaphoto">InputMediaPhoto</a> and <a href="#inputmediavideo">InputMediaVideo</a></td> +<td>Yes</td> +<td>A JSON-serialized array describing messages to be sent, must include 2-10 items</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends messages <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the messages are a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendlocation" id="sendlocation" name="sendlocation"><i class="anchor-icon"></i></a>sendLocation</h4> +<p>Use this method to send point on the map. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>latitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Latitude of the location</td> +</tr> +<tr> +<td>longitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Longitude of the location</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td>Optional</td> +<td>The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>live_period</td> +<td>Integer</td> +<td>Optional</td> +<td>Period in seconds for which the location will be updated (see <a href="https://telegram.org/blog/live-locations">Live Locations</a>, should be between 60 and 86400.</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td>Optional</td> +<td>For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td>Optional</td> +<td>For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#editmessagelivelocation" id="editmessagelivelocation" name="editmessagelivelocation"><i class="anchor-icon"></i></a>editMessageLiveLocation</h4> +<p>Use this method to edit live location messages. A location can be edited until its <em>live_period</em> expires or editing is explicitly disabled by a call to <a href="#stopmessagelivelocation">stopMessageLiveLocation</a>. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>latitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Latitude of new location</td> +</tr> +<tr> +<td>longitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Longitude of new location</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td>Optional</td> +<td>The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td>Optional</td> +<td>Direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td>Optional</td> +<td>Maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for a new <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#stopmessagelivelocation" id="stopmessagelivelocation" name="stopmessagelivelocation"><i class="anchor-icon"></i></a>stopMessageLiveLocation</h4> +<p>Use this method to stop updating a live location message before <em>live_period</em> expires. On success, if the message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message with live location to stop</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for a new <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendvenue" id="sendvenue" name="sendvenue"><i class="anchor-icon"></i></a>sendVenue</h4> +<p>Use this method to send information about a venue. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>latitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Latitude of the venue</td> +</tr> +<tr> +<td>longitude</td> +<td>Float number</td> +<td>Yes</td> +<td>Longitude of the venue</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Yes</td> +<td>Name of the venue</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Yes</td> +<td>Address of the venue</td> +</tr> +<tr> +<td>foursquare_id</td> +<td>String</td> +<td>Optional</td> +<td>Foursquare identifier of the venue</td> +</tr> +<tr> +<td>foursquare_type</td> +<td>String</td> +<td>Optional</td> +<td>Foursquare type of the venue, if known. (For example, "arts_entertainment/default", "arts_entertainment/aquarium" or "food/icecream".)</td> +</tr> +<tr> +<td>google_place_id</td> +<td>String</td> +<td>Optional</td> +<td>Google Places identifier of the venue</td> +</tr> +<tr> +<td>google_place_type</td> +<td>String</td> +<td>Optional</td> +<td>Google Places type of the venue. (See <a href="https://developers.google.com/places/web-service/supported_types">supported types</a>.)</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendcontact" id="sendcontact" name="sendcontact"><i class="anchor-icon"></i></a>sendContact</h4> +<p>Use this method to send phone contacts. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>phone_number</td> +<td>String</td> +<td>Yes</td> +<td>Contact's phone number</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>Yes</td> +<td>Contact's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td>Optional</td> +<td>Contact's last name</td> +</tr> +<tr> +<td>vcard</td> +<td>String</td> +<td>Optional</td> +<td>Additional data about the contact in the form of a <a href="https://en.wikipedia.org/wiki/VCard">vCard</a>, 0-2048 bytes</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendpoll" id="sendpoll" name="sendpoll"><i class="anchor-icon"></i></a>sendPoll</h4> +<p>Use this method to send a native poll. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>question</td> +<td>String</td> +<td>Yes</td> +<td>Poll question, 1-300 characters</td> +</tr> +<tr> +<td>options</td> +<td>Array of String</td> +<td>Yes</td> +<td>A JSON-serialized list of answer options, 2-10 strings 1-100 characters each</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td>Optional</td> +<td>True, if the poll needs to be anonymous, defaults to <em>True</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Optional</td> +<td>Poll type, "quiz" or "regular", defaults to "regular"</td> +</tr> +<tr> +<td>allows_multiple_answers</td> +<td>Boolean</td> +<td>Optional</td> +<td>True, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to <em>False</em></td> +</tr> +<tr> +<td>correct_option_id</td> +<td>Integer</td> +<td>Optional</td> +<td>0-based identifier of the correct answer option, required for polls in quiz mode</td> +</tr> +<tr> +<td>explanation</td> +<td>String</td> +<td>Optional</td> +<td>Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing</td> +</tr> +<tr> +<td>explanation_parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the explanation. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>explanation_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the poll explanation, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>open_period</td> +<td>Integer</td> +<td>Optional</td> +<td>Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with <em>close_date</em>.</td> +</tr> +<tr> +<td>close_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with <em>open_period</em>.</td> +</tr> +<tr> +<td>is_closed</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the poll needs to be immediately closed. This can be useful for poll preview.</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#senddice" id="senddice" name="senddice"><i class="anchor-icon"></i></a>sendDice</h4> +<p>Use this method to send an animated emoji that will display a random value. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>emoji</td> +<td>String</td> +<td>Optional</td> +<td>Emoji on which the dice throw animation is based. Currently, must be one of "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />", "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" />", "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />", "<img class="emoji" src="//telegram.org/img/emoji/40/E29ABD.png" width="20" height="20" alt="⚽" />", "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB3.png" width="20" height="20" alt="🎳" />", or "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB0.png" width="20" height="20" alt="🎰" />". Dice can have values 1-6 for "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />", "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" />" and "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB3.png" width="20" height="20" alt="🎳" />", values 1-5 for "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />" and "<img class="emoji" src="//telegram.org/img/emoji/40/E29ABD.png" width="20" height="20" alt="⚽" />", and values 1-64 for "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB0.png" width="20" height="20" alt="🎰" />". Defaults to "<img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />"</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendchataction" id="sendchataction" name="sendchataction"><i class="anchor-icon"></i></a>sendChatAction</h4> +<p>Use this method when you need to tell the user that something is happening on the bot's side. The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status). Returns <em>True</em> on success.</p> +<blockquote> +<p>Example: The <a href="https://t.me/imagebot">ImageBot</a> needs some time to process a request and upload the image. Instead of sending a text message along the lines of "Retrieving image, please wait...", the bot may use <a href="#sendchataction">sendChatAction</a> with <em>action</em> = <em>upload_photo</em>. The user will see a "sending photo" status for the bot.</p> +</blockquote> +<p>We only recommend using this method when a response from the bot will take a <strong>noticeable</strong> amount of time to arrive.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>action</td> +<td>String</td> +<td>Yes</td> +<td>Type of action to broadcast. Choose one, depending on what the user is about to receive: <em>typing</em> for <a href="#sendmessage">text messages</a>, <em>upload_photo</em> for <a href="#sendphoto">photos</a>, <em>record_video</em> or <em>upload_video</em> for <a href="#sendvideo">videos</a>, <em>record_voice</em> or <em>upload_voice</em> for <a href="#sendvoice">voice notes</a>, <em>upload_document</em> for <a href="#senddocument">general files</a>, <em>find_location</em> for <a href="#sendlocation">location data</a>, <em>record_video_note</em> or <em>upload_video_note</em> for <a href="#sendvideonote">video notes</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getuserprofilephotos" id="getuserprofilephotos" name="getuserprofilephotos"><i class="anchor-icon"></i></a>getUserProfilePhotos</h4> +<p>Use this method to get a list of profile pictures for a user. Returns a <a href="#userprofilephotos">UserProfilePhotos</a> object.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>offset</td> +<td>Integer</td> +<td>Optional</td> +<td>Sequential number of the first photo to be returned. By default, all photos are returned.</td> +</tr> +<tr> +<td>limit</td> +<td>Integer</td> +<td>Optional</td> +<td>Limits the number of photos to be retrieved. Values between 1-100 are accepted. Defaults to 100.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getfile" id="getfile" name="getfile"><i class="anchor-icon"></i></a>getFile</h4> +<p>Use this method to get basic info about a file and prepare it for downloading. For the moment, bots can download files of up to 20MB in size. On success, a <a href="#file">File</a> object is returned. The file can then be downloaded via the link <code>https://api.telegram.org/file/bot<token>/<file_path></code>, where <code><file_path></code> is taken from the response. It is guaranteed that the link will be valid for at least 1 hour. When the link expires, a new one can be requested by calling <a href="#getfile">getFile</a> again.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Yes</td> +<td>File identifier to get info about</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This function may not preserve the original file name and MIME type. You should save the file's MIME type and name (if available) when the File object is received.</p> +<h4><a class="anchor" href="#banchatmember" id="banchatmember" name="banchatmember"><i class="anchor-icon"></i></a>banChatMember</h4> +<p>Use this method to ban a user in a group, a supergroup or a channel. In the case of supergroups and channels, the user will not be able to return to the chat on their own using invite links, etc., unless <a href="#unbanchatmember">unbanned</a> first. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target group or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>until_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.</td> +</tr> +<tr> +<td>revoke_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em> to delete all messages from the chat for the user that is being removed. If <em>False</em>, the user will be able to see messages in the group that were sent before the user was removed. Always <em>True</em> for supergroups and channels.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#unbanchatmember" id="unbanchatmember" name="unbanchatmember"><i class="anchor-icon"></i></a>unbanChatMember</h4> +<p>Use this method to unban a previously banned user in a supergroup or channel. The user will <strong>not</strong> return to the group or channel automatically, but will be able to join via link, etc. The bot must be an administrator for this to work. By default, this method guarantees that after the call the user is not a member of the chat, but will be able to join it. So if the user is a member of the chat they will also be <strong>removed</strong> from the chat. If you don't want this, use the parameter <em>only_if_banned</em>. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target group or username of the target supergroup or channel (in the format <code>@username</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>only_if_banned</td> +<td>Boolean</td> +<td>Optional</td> +<td>Do nothing if the user is not banned</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#restrictchatmember" id="restrictchatmember" name="restrictchatmember"><i class="anchor-icon"></i></a>restrictChatMember</h4> +<p>Use this method to restrict a user in a supergroup. The bot must be an administrator in the supergroup for this to work and must have the appropriate admin rights. Pass <em>True</em> for all permissions to lift restrictions from a user. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>permissions</td> +<td><a href="#chatpermissions">ChatPermissions</a></td> +<td>Yes</td> +<td>A JSON-serialized object for new user permissions</td> +</tr> +<tr> +<td>until_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Date when restrictions will be lifted for the user, unix time. If user is restricted for more than 366 days or less than 30 seconds from the current time, they are considered to be restricted forever</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#promotechatmember" id="promotechatmember" name="promotechatmember"><i class="anchor-icon"></i></a>promoteChatMember</h4> +<p>Use this method to promote or demote a user in a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Pass <em>False</em> for all boolean parameters to demote a user. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>is_anonymous</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the administrator's presence in the chat is hidden</td> +</tr> +<tr> +<td>can_manage_chat</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege</td> +</tr> +<tr> +<td>can_post_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can create channel posts, channels only</td> +</tr> +<tr> +<td>can_edit_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can edit messages of other users and can pin messages, channels only</td> +</tr> +<tr> +<td>can_delete_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can delete messages of other users</td> +</tr> +<tr> +<td>can_manage_voice_chats</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can manage voice chats</td> +</tr> +<tr> +<td>can_restrict_members</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can restrict, ban or unban chat members</td> +</tr> +<tr> +<td>can_promote_members</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can add new administrators with a subset of their own privileges or demote administrators that he has promoted, directly or indirectly (promoted by administrators that were appointed by him)</td> +</tr> +<tr> +<td>can_change_info</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can change chat title, photo and other settings</td> +</tr> +<tr> +<td>can_invite_users</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can invite new users to the chat</td> +</tr> +<tr> +<td>can_pin_messages</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the administrator can pin messages, supergroups only</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setchatadministratorcustomtitle" id="setchatadministratorcustomtitle" name="setchatadministratorcustomtitle"><i class="anchor-icon"></i></a>setChatAdministratorCustomTitle</h4> +<p>Use this method to set a custom title for an administrator in a supergroup promoted by the bot. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +<tr> +<td>custom_title</td> +<td>String</td> +<td>Yes</td> +<td>New custom title for the administrator; 0-16 characters, emoji are not allowed</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setchatpermissions" id="setchatpermissions" name="setchatpermissions"><i class="anchor-icon"></i></a>setChatPermissions</h4> +<p>Use this method to set default chat permissions for all members. The bot must be an administrator in the group or a supergroup for this to work and must have the <em>can_restrict_members</em> admin rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>permissions</td> +<td><a href="#chatpermissions">ChatPermissions</a></td> +<td>Yes</td> +<td>A JSON-serialized object for new default chat permissions</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#exportchatinvitelink" id="exportchatinvitelink" name="exportchatinvitelink"><i class="anchor-icon"></i></a>exportChatInviteLink</h4> +<p>Use this method to generate a new primary invite link for a chat; any previously generated primary link is revoked. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns the new invite link as <em>String</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<blockquote> +<p>Note: Each administrator in a chat generates their own invite links. Bots can't use invite links generated by other administrators. If you want your bot to work with invite links, it will need to generate its own link using <a href="#exportchatinvitelink">exportChatInviteLink</a> or by calling the <a href="#getchat">getChat</a> method. If your bot needs to generate a new primary invite link replacing its previous one, use <a href="#exportchatinvitelink">exportChatInviteLink</a> again.</p> +</blockquote> +<h4><a class="anchor" href="#createchatinvitelink" id="createchatinvitelink" name="createchatinvitelink"><i class="anchor-icon"></i></a>createChatInviteLink</h4> +<p>Use this method to create an additional invite link for a chat. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. The link can be revoked using the method <a href="#revokechatinvitelink">revokeChatInviteLink</a>. Returns the new invite link as <a href="#chatinvitelink">ChatInviteLink</a> object.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>expire_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Point in time (Unix timestamp) when the link will expire</td> +</tr> +<tr> +<td>member_limit</td> +<td>Integer</td> +<td>Optional</td> +<td>Maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#editchatinvitelink" id="editchatinvitelink" name="editchatinvitelink"><i class="anchor-icon"></i></a>editChatInviteLink</h4> +<p>Use this method to edit a non-primary invite link created by the bot. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns the edited invite link as a <a href="#chatinvitelink">ChatInviteLink</a> object.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>invite_link</td> +<td>String</td> +<td>Yes</td> +<td>The invite link to edit</td> +</tr> +<tr> +<td>expire_date</td> +<td>Integer</td> +<td>Optional</td> +<td>Point in time (Unix timestamp) when the link will expire</td> +</tr> +<tr> +<td>member_limit</td> +<td>Integer</td> +<td>Optional</td> +<td>Maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#revokechatinvitelink" id="revokechatinvitelink" name="revokechatinvitelink"><i class="anchor-icon"></i></a>revokeChatInviteLink</h4> +<p>Use this method to revoke an invite link created by the bot. If the primary link is revoked, a new link is automatically generated. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns the revoked invite link as <a href="#chatinvitelink">ChatInviteLink</a> object.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier of the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>invite_link</td> +<td>String</td> +<td>Yes</td> +<td>The invite link to revoke</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setchatphoto" id="setchatphoto" name="setchatphoto"><i class="anchor-icon"></i></a>setChatPhoto</h4> +<p>Use this method to set a new profile photo for the chat. Photos can't be changed for private chats. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>photo</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Yes</td> +<td>New chat photo, uploaded using multipart/form-data</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#deletechatphoto" id="deletechatphoto" name="deletechatphoto"><i class="anchor-icon"></i></a>deleteChatPhoto</h4> +<p>Use this method to delete a chat photo. Photos can't be changed for private chats. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setchattitle" id="setchattitle" name="setchattitle"><i class="anchor-icon"></i></a>setChatTitle</h4> +<p>Use this method to change the title of a chat. Titles can't be changed for private chats. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Yes</td> +<td>New chat title, 1-255 characters</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setchatdescription" id="setchatdescription" name="setchatdescription"><i class="anchor-icon"></i></a>setChatDescription</h4> +<p>Use this method to change the description of a group, a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Optional</td> +<td>New chat description, 0-255 characters</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#pinchatmessage" id="pinchatmessage" name="pinchatmessage"><i class="anchor-icon"></i></a>pinChatMessage</h4> +<p>Use this method to add a message to the list of pinned messages in a chat. If the chat is not a private chat, the bot must be an administrator in the chat for this to work and must have the 'can_pin_messages' admin right in a supergroup or 'can_edit_messages' admin right in a channel. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Identifier of a message to pin</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if it is not necessary to send a notification to all chat members about the new pinned message. Notifications are always disabled in channels and private chats.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#unpinchatmessage" id="unpinchatmessage" name="unpinchatmessage"><i class="anchor-icon"></i></a>unpinChatMessage</h4> +<p>Use this method to remove a message from the list of pinned messages in a chat. If the chat is not a private chat, the bot must be an administrator in the chat for this to work and must have the 'can_pin_messages' admin right in a supergroup or 'can_edit_messages' admin right in a channel. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Identifier of a message to unpin. If not specified, the most recent pinned message (by sending date) will be unpinned.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#unpinallchatmessages" id="unpinallchatmessages" name="unpinallchatmessages"><i class="anchor-icon"></i></a>unpinAllChatMessages</h4> +<p>Use this method to clear the list of pinned messages in a chat. If the chat is not a private chat, the bot must be an administrator in the chat for this to work and must have the 'can_pin_messages' admin right in a supergroup or 'can_edit_messages' admin right in a channel. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#leavechat" id="leavechat" name="leavechat"><i class="anchor-icon"></i></a>leaveChat</h4> +<p>Use this method for your bot to leave a group, supergroup or channel. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getchat" id="getchat" name="getchat"><i class="anchor-icon"></i></a>getChat</h4> +<p>Use this method to get up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or channel, etc.). Returns a <a href="#chat">Chat</a> object on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getchatadministrators" id="getchatadministrators" name="getchatadministrators"><i class="anchor-icon"></i></a>getChatAdministrators</h4> +<p>Use this method to get a list of administrators in a chat. On success, returns an Array of <a href="#chatmember">ChatMember</a> objects that contains information about all chat administrators except other bots. If the chat is a group or a supergroup and no administrators were appointed, only the creator will be returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getchatmembercount" id="getchatmembercount" name="getchatmembercount"><i class="anchor-icon"></i></a>getChatMemberCount</h4> +<p>Use this method to get the number of members in a chat. Returns <em>Int</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getchatmember" id="getchatmember" name="getchatmember"><i class="anchor-icon"></i></a>getChatMember</h4> +<p>Use this method to get information about a member of a chat. Returns a <a href="#chatmember">ChatMember</a> object on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup or channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier of the target user</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setchatstickerset" id="setchatstickerset" name="setchatstickerset"><i class="anchor-icon"></i></a>setChatStickerSet</h4> +<p>Use this method to set a new group sticker set for a supergroup. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Use the field <em>can_set_sticker_set</em> optionally returned in <a href="#getchat">getChat</a> requests to check if the bot can use this method. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +<tr> +<td>sticker_set_name</td> +<td>String</td> +<td>Yes</td> +<td>Name of the sticker set to be set as the group sticker set</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#deletechatstickerset" id="deletechatstickerset" name="deletechatstickerset"><i class="anchor-icon"></i></a>deleteChatStickerSet</h4> +<p>Use this method to delete a group sticker set from a supergroup. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Use the field <em>can_set_sticker_set</em> optionally returned in <a href="#getchat">getChat</a> requests to check if the bot can use this method. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target supergroup (in the format <code>@supergroupusername</code>)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#answercallbackquery" id="answercallbackquery" name="answercallbackquery"><i class="anchor-icon"></i></a>answerCallbackQuery</h4> +<p>Use this method to send answers to callback queries sent from <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboards</a>. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. On success, <em>True</em> is returned.</p> +<blockquote> +<p>Alternatively, the user can be redirected to the specified Game URL. For this option to work, you must first create a game for your bot via <a href="https://t.me/botfather">@Botfather</a> and accept the terms. Otherwise, you may use links like <code>t.me/your_bot?start=XXXX</code> that open your bot with a parameter.</p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>callback_query_id</td> +<td>String</td> +<td>Yes</td> +<td>Unique identifier for the query to be answered</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td>Optional</td> +<td>Text of the notification. If not specified, nothing will be shown to the user, 0-200 characters</td> +</tr> +<tr> +<td>show_alert</td> +<td>Boolean</td> +<td>Optional</td> +<td>If <em>true</em>, an alert will be shown by the client instead of a notification at the top of the chat screen. Defaults to <em>false</em>.</td> +</tr> +<tr> +<td>url</td> +<td>String</td> +<td>Optional</td> +<td>URL that will be opened by the user's client. If you have created a <a href="#game">Game</a> and accepted the conditions via <a href="https://t.me/botfather">@Botfather</a>, specify the URL that opens your game — note that this will only work if the query comes from a <a href="#inlinekeyboardbutton"><em>callback_game</em></a> button.<br><br>Otherwise, you may use links like <code>t.me/your_bot?start=XXXX</code> that open your bot with a parameter.</td> +</tr> +<tr> +<td>cache_time</td> +<td>Integer</td> +<td>Optional</td> +<td>The maximum amount of time in seconds that the result of the callback query may be cached client-side. Telegram apps will support caching starting in version 3.14. Defaults to 0.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setmycommands" id="setmycommands" name="setmycommands"><i class="anchor-icon"></i></a>setMyCommands</h4> +<p>Use this method to change the list of the bot's commands. See <a href="https://core.telegram.org/bots#commands">https://core.telegram.org/bots#commands</a> for more details about bot commands. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>commands</td> +<td>Array of <a href="#botcommand">BotCommand</a></td> +<td>Yes</td> +<td>A JSON-serialized list of bot commands to be set as the list of the bot's commands. At most 100 commands can be specified.</td> +</tr> +<tr> +<td>scope</td> +<td><a href="#botcommandscope">BotCommandScope</a></td> +<td>Optional</td> +<td>A JSON-serialized object, describing scope of users for which the commands are relevant. Defaults to <a href="#botcommandscopedefault">BotCommandScopeDefault</a>.</td> +</tr> +<tr> +<td>language_code</td> +<td>String</td> +<td>Optional</td> +<td>A two-letter ISO 639-1 language code. If empty, commands will be applied to all users from the given scope, for whose language there are no dedicated commands</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#deletemycommands" id="deletemycommands" name="deletemycommands"><i class="anchor-icon"></i></a>deleteMyCommands</h4> +<p>Use this method to delete the list of the bot's commands for the given scope and user language. After deletion, <a href="#determining-list-of-commands">higher level commands</a> will be shown to affected users. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>scope</td> +<td><a href="#botcommandscope">BotCommandScope</a></td> +<td>Optional</td> +<td>A JSON-serialized object, describing scope of users for which the commands are relevant. Defaults to <a href="#botcommandscopedefault">BotCommandScopeDefault</a>.</td> +</tr> +<tr> +<td>language_code</td> +<td>String</td> +<td>Optional</td> +<td>A two-letter ISO 639-1 language code. If empty, commands will be applied to all users from the given scope, for whose language there are no dedicated commands</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getmycommands" id="getmycommands" name="getmycommands"><i class="anchor-icon"></i></a>getMyCommands</h4> +<p>Use this method to get the current list of the bot's commands for the given scope and user language. Returns Array of <a href="#botcommand">BotCommand</a> on success. If commands aren't set, an empty list is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>scope</td> +<td><a href="#botcommandscope">BotCommandScope</a></td> +<td>Optional</td> +<td>A JSON-serialized object, describing scope of users. Defaults to <a href="#botcommandscopedefault">BotCommandScopeDefault</a>.</td> +</tr> +<tr> +<td>language_code</td> +<td>String</td> +<td>Optional</td> +<td>A two-letter ISO 639-1 language code or an empty string</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inline-mode-methods" id="inline-mode-methods" name="inline-mode-methods"><i class="anchor-icon"></i></a>Inline mode methods</h4> +<p>Methods and objects used in the inline mode are described in the <a href="#inline-mode">Inline mode section</a>.</p> +<h3><a class="anchor" href="#updating-messages" id="updating-messages" name="updating-messages"><i class="anchor-icon"></i></a>Updating messages</h3> +<p>The following methods allow you to change an existing message in the message history instead of sending a new one with a result of an action. This is most useful for messages with <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboards</a> using callback queries, but can also help reduce clutter in conversations with regular chat bots.</p> +<p>Please note, that it is currently only possible to edit messages without <em>reply_markup</em> or with <a href="/bots#inline-keyboards-and-on-the-fly-updating">inline keyboards</a>.</p> +<h4><a class="anchor" href="#editmessagetext" id="editmessagetext" name="editmessagetext"><i class="anchor-icon"></i></a>editMessageText</h4> +<p>Use this method to edit text and <a href="#games">game</a> messages. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td>Yes</td> +<td>New text of the message, 1-4096 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the message text. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in message text, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_web_page_preview</td> +<td>Boolean</td> +<td>Optional</td> +<td>Disables link previews for links in this message</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#editmessagecaption" id="editmessagecaption" name="editmessagecaption"><i class="anchor-icon"></i></a>editMessageCaption</h4> +<p>Use this method to edit captions of messages. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td>Optional</td> +<td>New caption of the message, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td>Optional</td> +<td>Mode for parsing entities in the message caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td>Optional</td> +<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#editmessagemedia" id="editmessagemedia" name="editmessagemedia"><i class="anchor-icon"></i></a>editMessageMedia</h4> +<p>Use this method to edit animation, audio, document, photo, or video messages. If a message is part of a message album, then it can be edited only to an audio for audio albums, only to a document for document albums and to a photo or a video otherwise. When an inline message is edited, a new file can't be uploaded; use a previously uploaded file via its file_id or specify a URL. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>media</td> +<td><a href="#inputmedia">InputMedia</a></td> +<td>Yes</td> +<td>A JSON-serialized object for a new media content of the message</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for a new <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#editmessagereplymarkup" id="editmessagereplymarkup" name="editmessagereplymarkup"><i class="anchor-icon"></i></a>editMessageReplyMarkup</h4> +<p>Use this method to edit only the reply markup of messages. On success, if the edited message is not an inline message, the edited <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the message to edit</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#stoppoll" id="stoppoll" name="stoppoll"><i class="anchor-icon"></i></a>stopPoll</h4> +<p>Use this method to stop a poll which was sent by the bot. On success, the stopped <a href="#poll">Poll</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Identifier of the original message with the poll</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for a new message <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#deletemessage" id="deletemessage" name="deletemessage"><i class="anchor-icon"></i></a>deleteMessage</h4> +<p>Use this method to delete a message, including service messages, with the following limitations:</p> +<ul> +<li>A message can only be deleted if it was sent less than 48 hours ago.</li> +<li>A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.</li> +<li>Bots can delete outgoing messages in private chats, groups, and supergroups.</li> +<li>Bots can delete incoming messages in private chats.</li> +<li>Bots granted <em>can_post_messages</em> permissions can delete outgoing messages in channels.</li> +<li>If the bot is an administrator of a group, it can delete any message there.</li> +<li>If the bot has <em>can_delete_messages</em> permission in a supergroup or a channel, it can delete any message there. +Returns <em>True</em> on success.</li> +</ul> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Identifier of the message to delete</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#stickers" id="stickers" name="stickers"><i class="anchor-icon"></i></a>Stickers</h3> +<p>The following methods and objects allow your bot to handle stickers and sticker sets.</p> +<h4><a class="anchor" href="#sticker" id="sticker" name="sticker"><i class="anchor-icon"></i></a>Sticker</h4> +<p>This object represents a sticker.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>width</td> +<td>Integer</td> +<td>Sticker width</td> +</tr> +<tr> +<td>height</td> +<td>Integer</td> +<td>Sticker height</td> +</tr> +<tr> +<td>is_animated</td> +<td>Boolean</td> +<td><em>True</em>, if the sticker is <a href="https://telegram.org/blog/animated-stickers">animated</a></td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Sticker thumbnail in the .WEBP or .JPG format</td> +</tr> +<tr> +<td>emoji</td> +<td>String</td> +<td><em>Optional</em>. Emoji associated with the sticker</td> +</tr> +<tr> +<td>set_name</td> +<td>String</td> +<td><em>Optional</em>. Name of the sticker set to which the sticker belongs</td> +</tr> +<tr> +<td>mask_position</td> +<td><a href="#maskposition">MaskPosition</a></td> +<td><em>Optional</em>. For mask stickers, the position where the mask should be placed</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td><em>Optional</em>. File size in bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#stickerset" id="stickerset" name="stickerset"><i class="anchor-icon"></i></a>StickerSet</h4> +<p>This object represents a sticker set.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>name</td> +<td>String</td> +<td>Sticker set name</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Sticker set title</td> +</tr> +<tr> +<td>is_animated</td> +<td>Boolean</td> +<td><em>True</em>, if the sticker set contains <a href="https://telegram.org/blog/animated-stickers">animated stickers</a></td> +</tr> +<tr> +<td>contains_masks</td> +<td>Boolean</td> +<td><em>True</em>, if the sticker set contains masks</td> +</tr> +<tr> +<td>stickers</td> +<td>Array of <a href="#sticker">Sticker</a></td> +<td>List of all set stickers</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#photosize">PhotoSize</a></td> +<td><em>Optional</em>. Sticker set thumbnail in the .WEBP or .TGS format</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#maskposition" id="maskposition" name="maskposition"><i class="anchor-icon"></i></a>MaskPosition</h4> +<p>This object describes the position on faces where a mask should be placed by default.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>point</td> +<td>String</td> +<td>The part of the face relative to which the mask should be placed. One of "forehead", "eyes", "mouth", or "chin".</td> +</tr> +<tr> +<td>x_shift</td> +<td>Float number</td> +<td>Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position.</td> +</tr> +<tr> +<td>y_shift</td> +<td>Float number</td> +<td>Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.</td> +</tr> +<tr> +<td>scale</td> +<td>Float number</td> +<td>Mask scaling coefficient. For example, 2.0 means double size.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#sendsticker" id="sendsticker" name="sendsticker"><i class="anchor-icon"></i></a>sendSticker</h4> +<p>Use this method to send static .WEBP or <a href="https://telegram.org/blog/animated-stickers">animated</a> .TGS stickers. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>sticker</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Yes</td> +<td>Sticker to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a .WEBP file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a> or <a href="#replykeyboardmarkup">ReplyKeyboardMarkup</a> or <a href="#replykeyboardremove">ReplyKeyboardRemove</a> or <a href="#forcereply">ForceReply</a></td> +<td>Optional</td> +<td>Additional interface options. A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>, <a href="https://core.telegram.org/bots#keyboards">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getstickerset" id="getstickerset" name="getstickerset"><i class="anchor-icon"></i></a>getStickerSet</h4> +<p>Use this method to get a sticker set. On success, a <a href="#stickerset">StickerSet</a> object is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>name</td> +<td>String</td> +<td>Yes</td> +<td>Name of the sticker set</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#uploadstickerfile" id="uploadstickerfile" name="uploadstickerfile"><i class="anchor-icon"></i></a>uploadStickerFile</h4> +<p>Use this method to upload a .PNG file with a sticker for later use in <em>createNewStickerSet</em> and <em>addStickerToSet</em> methods (can be used multiple times). Returns the uploaded <a href="#file">File</a> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier of sticker file owner</td> +</tr> +<tr> +<td>png_sticker</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Yes</td> +<td><strong>PNG</strong> image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#createnewstickerset" id="createnewstickerset" name="createnewstickerset"><i class="anchor-icon"></i></a>createNewStickerSet</h4> +<p>Use this method to create a new sticker set owned by a user. The bot will be able to edit the sticker set thus created. You <strong>must</strong> use exactly one of the fields <em>png_sticker</em> or <em>tgs_sticker</em>. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier of created sticker set owner</td> +</tr> +<tr> +<td>name</td> +<td>String</td> +<td>Yes</td> +<td>Short name of sticker set, to be used in <code>t.me/addstickers/</code> URLs (e.g., <em>animals</em>). Can contain only english letters, digits and underscores. Must begin with a letter, can't contain consecutive underscores and must end in <em>"<em>by</em><bot username>"</em>. <em><bot_username></em> is case insensitive. 1-64 characters.</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Yes</td> +<td>Sticker set title, 1-64 characters</td> +</tr> +<tr> +<td>png_sticker</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td><strong>PNG</strong> image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a <em>file_id</em> as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>tgs_sticker</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Optional</td> +<td><strong>TGS</strong> animation with the sticker, uploaded using multipart/form-data. See <a href="https://core.telegram.org/animated_stickers#technical-requirements">https://core.telegram.org/animated_stickers#technical-requirements</a> for technical requirements</td> +</tr> +<tr> +<td>emojis</td> +<td>String</td> +<td>Yes</td> +<td>One or more emoji corresponding to the sticker</td> +</tr> +<tr> +<td>contains_masks</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if a set of mask stickers should be created</td> +</tr> +<tr> +<td>mask_position</td> +<td><a href="#maskposition">MaskPosition</a></td> +<td>Optional</td> +<td>A JSON-serialized object for position where the mask should be placed on faces</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#addstickertoset" id="addstickertoset" name="addstickertoset"><i class="anchor-icon"></i></a>addStickerToSet</h4> +<p>Use this method to add a new sticker to a set created by the bot. You <strong>must</strong> use exactly one of the fields <em>png_sticker</em> or <em>tgs_sticker</em>. Animated stickers can be added to animated sticker sets and only to them. Animated sticker sets can have up to 50 stickers. Static sticker sets can have up to 120 stickers. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier of sticker set owner</td> +</tr> +<tr> +<td>name</td> +<td>String</td> +<td>Yes</td> +<td>Sticker set name</td> +</tr> +<tr> +<td>png_sticker</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td><strong>PNG</strong> image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a <em>file_id</em> as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a></td> +</tr> +<tr> +<td>tgs_sticker</td> +<td><a href="#inputfile">InputFile</a></td> +<td>Optional</td> +<td><strong>TGS</strong> animation with the sticker, uploaded using multipart/form-data. See <a href="https://core.telegram.org/animated_stickers#technical-requirements">https://core.telegram.org/animated_stickers#technical-requirements</a> for technical requirements</td> +</tr> +<tr> +<td>emojis</td> +<td>String</td> +<td>Yes</td> +<td>One or more emoji corresponding to the sticker</td> +</tr> +<tr> +<td>mask_position</td> +<td><a href="#maskposition">MaskPosition</a></td> +<td>Optional</td> +<td>A JSON-serialized object for position where the mask should be placed on faces</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setstickerpositioninset" id="setstickerpositioninset" name="setstickerpositioninset"><i class="anchor-icon"></i></a>setStickerPositionInSet</h4> +<p>Use this method to move a sticker in a set created by the bot to a specific position. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>sticker</td> +<td>String</td> +<td>Yes</td> +<td>File identifier of the sticker</td> +</tr> +<tr> +<td>position</td> +<td>Integer</td> +<td>Yes</td> +<td>New sticker position in the set, zero-based</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#deletestickerfromset" id="deletestickerfromset" name="deletestickerfromset"><i class="anchor-icon"></i></a>deleteStickerFromSet</h4> +<p>Use this method to delete a sticker from a set created by the bot. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>sticker</td> +<td>String</td> +<td>Yes</td> +<td>File identifier of the sticker</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setstickersetthumb" id="setstickersetthumb" name="setstickersetthumb"><i class="anchor-icon"></i></a>setStickerSetThumb</h4> +<p>Use this method to set the thumbnail of a sticker set. Animated thumbnails can be set for animated sticker sets only. Returns <em>True</em> on success.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>name</td> +<td>String</td> +<td>Yes</td> +<td>Sticker set name</td> +</tr> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier of the sticker set owner</td> +</tr> +<tr> +<td>thumb</td> +<td><a href="#inputfile">InputFile</a> or String</td> +<td>Optional</td> +<td>A <strong>PNG</strong> image with the thumbnail, must be up to 128 kilobytes in size and have width and height exactly 100px, or a <strong>TGS</strong> animation with the thumbnail up to 32 kilobytes in size; see <a href="https://core.telegram.org/animated_stickers#technical-requirements">https://core.telegram.org/animated_stickers#technical-requirements</a> for animated sticker technical requirements. Pass a <em>file_id</em> as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href="#sending-files">More info on Sending Files »</a>. Animated sticker set thumbnail can't be uploaded via HTTP URL.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#inline-mode" id="inline-mode" name="inline-mode"><i class="anchor-icon"></i></a>Inline mode</h3> +<p>The following methods and objects allow your bot to work in <a href="/bots/inline">inline mode</a>. +Please see our <a href="/bots/inline">Introduction to Inline bots</a> for more details.</p> +<p>To enable this option, send the <code>/setinline</code> command to <a href="https://t.me/botfather">@BotFather</a> and provide the placeholder text that the user will see in the input field after typing your bot's name.</p> +<h4><a class="anchor" href="#inlinequery" id="inlinequery" name="inlinequery"><i class="anchor-icon"></i></a>InlineQuery</h4> +<p>This object represents an incoming inline query. When the user sends an empty query, your bot could return some default or trending results.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this query</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>Sender</td> +</tr> +<tr> +<td>query</td> +<td>String</td> +<td>Text of the query (up to 256 characters)</td> +</tr> +<tr> +<td>offset</td> +<td>String</td> +<td>Offset of the results to be returned, can be controlled by the bot</td> +</tr> +<tr> +<td>chat_type</td> +<td>String</td> +<td><em>Optional</em>. Type of the chat, from which the inline query was sent. Can be either "sender" for a private chat with the inline query sender, "private", "group", "supergroup", or "channel". The chat type should be always known for requests sent from official clients and most third-party clients, unless the request was sent from a secret chat</td> +</tr> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td><em>Optional</em>. Sender location, only for bots that request user location</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#answerinlinequery" id="answerinlinequery" name="answerinlinequery"><i class="anchor-icon"></i></a>answerInlineQuery</h4> +<p>Use this method to send answers to an inline query. On success, <em>True</em> is returned. +No more than <strong>50</strong> results per query are allowed.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>inline_query_id</td> +<td>String</td> +<td>Yes</td> +<td>Unique identifier for the answered query</td> +</tr> +<tr> +<td>results</td> +<td>Array of <a href="#inlinequeryresult">InlineQueryResult</a></td> +<td>Yes</td> +<td>A JSON-serialized array of results for the inline query</td> +</tr> +<tr> +<td>cache_time</td> +<td>Integer</td> +<td>Optional</td> +<td>The maximum amount of time in seconds that the result of the inline query may be cached on the server. Defaults to 300.</td> +</tr> +<tr> +<td>is_personal</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query</td> +</tr> +<tr> +<td>next_offset</td> +<td>String</td> +<td>Optional</td> +<td>Pass the offset that a client should send in the next query with the same text to receive more results. Pass an empty string if there are no more results or if you don't support pagination. Offset length can't exceed 64 bytes.</td> +</tr> +<tr> +<td>switch_pm_text</td> +<td>String</td> +<td>Optional</td> +<td>If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter <em>switch_pm_parameter</em></td> +</tr> +<tr> +<td>switch_pm_parameter</td> +<td>String</td> +<td>Optional</td> +<td><a href="/bots#deep-linking">Deep-linking</a> parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only <code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>_</code> and <code>-</code> are allowed.<br><br><em>Example:</em> An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a <a href="#inlinekeyboardmarkup"><em>switch_inline</em></a> button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresult" id="inlinequeryresult" name="inlinequeryresult"><i class="anchor-icon"></i></a>InlineQueryResult</h4> +<p>This object represents one result of an inline query. Telegram clients currently support results of the following 20 types:</p> +<ul> +<li><a href="#inlinequeryresultcachedaudio">InlineQueryResultCachedAudio</a></li> +<li><a href="#inlinequeryresultcacheddocument">InlineQueryResultCachedDocument</a></li> +<li><a href="#inlinequeryresultcachedgif">InlineQueryResultCachedGif</a></li> +<li><a href="#inlinequeryresultcachedmpeg4gif">InlineQueryResultCachedMpeg4Gif</a></li> +<li><a href="#inlinequeryresultcachedphoto">InlineQueryResultCachedPhoto</a></li> +<li><a href="#inlinequeryresultcachedsticker">InlineQueryResultCachedSticker</a></li> +<li><a href="#inlinequeryresultcachedvideo">InlineQueryResultCachedVideo</a></li> +<li><a href="#inlinequeryresultcachedvoice">InlineQueryResultCachedVoice</a></li> +<li><a href="#inlinequeryresultarticle">InlineQueryResultArticle</a></li> +<li><a href="#inlinequeryresultaudio">InlineQueryResultAudio</a></li> +<li><a href="#inlinequeryresultcontact">InlineQueryResultContact</a></li> +<li><a href="#inlinequeryresultgame">InlineQueryResultGame</a></li> +<li><a href="#inlinequeryresultdocument">InlineQueryResultDocument</a></li> +<li><a href="#inlinequeryresultgif">InlineQueryResultGif</a></li> +<li><a href="#inlinequeryresultlocation">InlineQueryResultLocation</a></li> +<li><a href="#inlinequeryresultmpeg4gif">InlineQueryResultMpeg4Gif</a></li> +<li><a href="#inlinequeryresultphoto">InlineQueryResultPhoto</a></li> +<li><a href="#inlinequeryresultvenue">InlineQueryResultVenue</a></li> +<li><a href="#inlinequeryresultvideo">InlineQueryResultVideo</a></li> +<li><a href="#inlinequeryresultvoice">InlineQueryResultVoice</a></li> +</ul> +<p><strong>Note:</strong> All URLs passed in inline query results will be available to end users and therefore must be assumed to be <strong>public</strong>.</p> +<h4><a class="anchor" href="#inlinequeryresultarticle" id="inlinequeryresultarticle" name="inlinequeryresultarticle"><i class="anchor-icon"></i></a>InlineQueryResultArticle</h4> +<p>Represents a link to an article or web page.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>article</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 Bytes</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title of the result</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td>Content of the message to be sent</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>url</td> +<td>String</td> +<td><em>Optional</em>. URL of the result</td> +</tr> +<tr> +<td>hide_url</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you don't want the URL to be shown in the message</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. Url of the thumbnail for the result</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresultphoto" id="inlinequeryresultphoto" name="inlinequeryresultphoto"><i class="anchor-icon"></i></a>InlineQueryResultPhoto</h4> +<p>Represents a link to a photo. By default, this photo will be sent by the user with optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the photo.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>photo</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>photo_url</td> +<td>String</td> +<td>A valid URL of the photo. Photo must be in <strong>JPEG</strong> format. Photo size must not exceed 5MB</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td>URL of the thumbnail for the photo</td> +</tr> +<tr> +<td>photo_width</td> +<td>Integer</td> +<td><em>Optional</em>. Width of the photo</td> +</tr> +<tr> +<td>photo_height</td> +<td>Integer</td> +<td><em>Optional</em>. Height of the photo</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the photo to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the photo caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the photo</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresultgif" id="inlinequeryresultgif" name="inlinequeryresultgif"><i class="anchor-icon"></i></a>InlineQueryResultGif</h4> +<p>Represents a link to an animated GIF file. By default, this animated GIF file will be sent by the user with optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the animation.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>gif</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>gif_url</td> +<td>String</td> +<td>A valid URL for the GIF file. File size must not exceed 1MB</td> +</tr> +<tr> +<td>gif_width</td> +<td>Integer</td> +<td><em>Optional</em>. Width of the GIF</td> +</tr> +<tr> +<td>gif_height</td> +<td>Integer</td> +<td><em>Optional</em>. Height of the GIF</td> +</tr> +<tr> +<td>gif_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Duration of the GIF in seconds</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td>URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for the result</td> +</tr> +<tr> +<td>thumb_mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the thumbnail, must be one of "image/jpeg", "image/gif", or "video/mp4". Defaults to "image/jpeg"</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the GIF file to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the GIF animation</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresultmpeg4gif" id="inlinequeryresultmpeg4gif" name="inlinequeryresultmpeg4gif"><i class="anchor-icon"></i></a>InlineQueryResultMpeg4Gif</h4> +<p>Represents a link to a video animation (H.264/MPEG-4 AVC video without sound). By default, this animated MPEG-4 file will be sent by the user with optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the animation.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>mpeg4_gif</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>mpeg4_url</td> +<td>String</td> +<td>A valid URL for the MP4 file. File size must not exceed 1MB</td> +</tr> +<tr> +<td>mpeg4_width</td> +<td>Integer</td> +<td><em>Optional</em>. Video width</td> +</tr> +<tr> +<td>mpeg4_height</td> +<td>Integer</td> +<td><em>Optional</em>. Video height</td> +</tr> +<tr> +<td>mpeg4_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Video duration in seconds</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td>URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for the result</td> +</tr> +<tr> +<td>thumb_mime_type</td> +<td>String</td> +<td><em>Optional</em>. MIME type of the thumbnail, must be one of "image/jpeg", "image/gif", or "video/mp4". Defaults to "image/jpeg"</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the MPEG-4 file to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the video animation</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresultvideo" id="inlinequeryresultvideo" name="inlinequeryresultvideo"><i class="anchor-icon"></i></a>InlineQueryResultVideo</h4> +<p>Represents a link to a page containing an embedded video player or a video file. By default, this video file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the video.</p> +<blockquote> +<p>If an InlineQueryResultVideo message contains an embedded video (e.g., YouTube), you <strong>must</strong> replace its content using <em>input_message_content</em>.</p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>video</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>video_url</td> +<td>String</td> +<td>A valid URL for the embedded video player or video file</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td>Mime type of the content of video url, "text/html" or "video/mp4"</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td>URL of the thumbnail (JPEG only) for the video</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the video to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the video caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>video_width</td> +<td>Integer</td> +<td><em>Optional</em>. Video width</td> +</tr> +<tr> +<td>video_height</td> +<td>Integer</td> +<td><em>Optional</em>. Video height</td> +</tr> +<tr> +<td>video_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Video duration in seconds</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the video. This field is <strong>required</strong> if InlineQueryResultVideo is used to send an HTML-page as a result (e.g., a YouTube video).</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresultaudio" id="inlinequeryresultaudio" name="inlinequeryresultaudio"><i class="anchor-icon"></i></a>InlineQueryResultAudio</h4> +<p>Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>audio</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>audio_url</td> +<td>String</td> +<td>A valid URL for the audio file</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the audio caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>performer</td> +<td>String</td> +<td><em>Optional</em>. Performer</td> +</tr> +<tr> +<td>audio_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Audio duration in seconds</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the audio</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inlinequeryresultvoice" id="inlinequeryresultvoice" name="inlinequeryresultvoice"><i class="anchor-icon"></i></a>InlineQueryResultVoice</h4> +<p>Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the the voice message.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>voice</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>voice_url</td> +<td>String</td> +<td>A valid URL for the voice recording</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Recording title</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the voice message caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>voice_duration</td> +<td>Integer</td> +<td><em>Optional</em>. Recording duration in seconds</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the voice recording</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inlinequeryresultdocument" id="inlinequeryresultdocument" name="inlinequeryresultdocument"><i class="anchor-icon"></i></a>InlineQueryResultDocument</h4> +<p>Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file. Currently, only <strong>.PDF</strong> and <strong>.ZIP</strong> files can be sent using this method.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>document</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the document to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the document caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>document_url</td> +<td>String</td> +<td>A valid URL for the file</td> +</tr> +<tr> +<td>mime_type</td> +<td>String</td> +<td>Mime type of the content of the file, either "application/pdf" or "application/zip"</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. Inline keyboard attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the file</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. URL of the thumbnail (JPEG only) for the file</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inlinequeryresultlocation" id="inlinequeryresultlocation" name="inlinequeryresultlocation"><i class="anchor-icon"></i></a>InlineQueryResultLocation</h4> +<p>Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the location.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>location</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 Bytes</td> +</tr> +<tr> +<td>latitude</td> +<td>Float number</td> +<td>Location latitude in degrees</td> +</tr> +<tr> +<td>longitude</td> +<td>Float number</td> +<td>Location longitude in degrees</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Location title</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>live_period</td> +<td>Integer</td> +<td><em>Optional</em>. Period in seconds for which the location can be updated, should be between 60 and 86400.</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td><em>Optional</em>. For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td><em>Optional</em>. For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the location</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. Url of the thumbnail for the result</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inlinequeryresultvenue" id="inlinequeryresultvenue" name="inlinequeryresultvenue"><i class="anchor-icon"></i></a>InlineQueryResultVenue</h4> +<p>Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the venue.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>venue</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 Bytes</td> +</tr> +<tr> +<td>latitude</td> +<td>Float</td> +<td>Latitude of the venue location in degrees</td> +</tr> +<tr> +<td>longitude</td> +<td>Float</td> +<td>Longitude of the venue location in degrees</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title of the venue</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Address of the venue</td> +</tr> +<tr> +<td>foursquare_id</td> +<td>String</td> +<td><em>Optional</em>. Foursquare identifier of the venue if known</td> +</tr> +<tr> +<td>foursquare_type</td> +<td>String</td> +<td><em>Optional</em>. Foursquare type of the venue, if known. (For example, "arts_entertainment/default", "arts_entertainment/aquarium" or "food/icecream".)</td> +</tr> +<tr> +<td>google_place_id</td> +<td>String</td> +<td><em>Optional</em>. Google Places identifier of the venue</td> +</tr> +<tr> +<td>google_place_type</td> +<td>String</td> +<td><em>Optional</em>. Google Places type of the venue. (See <a href="https://developers.google.com/places/web-service/supported_types">supported types</a>.)</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the venue</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. Url of the thumbnail for the result</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inlinequeryresultcontact" id="inlinequeryresultcontact" name="inlinequeryresultcontact"><i class="anchor-icon"></i></a>InlineQueryResultContact</h4> +<p>Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the contact.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>contact</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 Bytes</td> +</tr> +<tr> +<td>phone_number</td> +<td>String</td> +<td>Contact's phone number</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>Contact's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. Contact's last name</td> +</tr> +<tr> +<td>vcard</td> +<td>String</td> +<td><em>Optional</em>. Additional data about the contact in the form of a <a href="https://en.wikipedia.org/wiki/VCard">vCard</a>, 0-2048 bytes</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the contact</td> +</tr> +<tr> +<td>thumb_url</td> +<td>String</td> +<td><em>Optional</em>. Url of the thumbnail for the result</td> +</tr> +<tr> +<td>thumb_width</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail width</td> +</tr> +<tr> +<td>thumb_height</td> +<td>Integer</td> +<td><em>Optional</em>. Thumbnail height</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inlinequeryresultgame" id="inlinequeryresultgame" name="inlinequeryresultgame"><i class="anchor-icon"></i></a>InlineQueryResultGame</h4> +<p>Represents a <a href="#games">Game</a>.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>game</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>game_short_name</td> +<td>String</td> +<td>Short name of the game</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after October 1, 2016. Older clients will not display any inline results if a game result is among them.</p> +<h4><a class="anchor" href="#inlinequeryresultcachedphoto" id="inlinequeryresultcachedphoto" name="inlinequeryresultcachedphoto"><i class="anchor-icon"></i></a>InlineQueryResultCachedPhoto</h4> +<p>Represents a link to a photo stored on the Telegram servers. By default, this photo will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the photo.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>photo</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>photo_file_id</td> +<td>String</td> +<td>A valid file identifier of the photo</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the photo to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the photo caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the photo</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresultcachedgif" id="inlinequeryresultcachedgif" name="inlinequeryresultcachedgif"><i class="anchor-icon"></i></a>InlineQueryResultCachedGif</h4> +<p>Represents a link to an animated GIF file stored on the Telegram servers. By default, this animated GIF file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with specified content instead of the animation.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>gif</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>gif_file_id</td> +<td>String</td> +<td>A valid file identifier for the GIF file</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the GIF file to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the GIF animation</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresultcachedmpeg4gif" id="inlinequeryresultcachedmpeg4gif" name="inlinequeryresultcachedmpeg4gif"><i class="anchor-icon"></i></a>InlineQueryResultCachedMpeg4Gif</h4> +<p>Represents a link to a video animation (H.264/MPEG-4 AVC video without sound) stored on the Telegram servers. By default, this animated MPEG-4 file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the animation.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>mpeg4_gif</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>mpeg4_file_id</td> +<td>String</td> +<td>A valid file identifier for the MP4 file</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td><em>Optional</em>. Title for the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the MPEG-4 file to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the video animation</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresultcachedsticker" id="inlinequeryresultcachedsticker" name="inlinequeryresultcachedsticker"><i class="anchor-icon"></i></a>InlineQueryResultCachedSticker</h4> +<p>Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the sticker.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>sticker</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>sticker_file_id</td> +<td>String</td> +<td>A valid file identifier of the sticker</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the sticker</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016 for static stickers and after 06 July, 2019 for <a href="https://telegram.org/blog/animated-stickers">animated stickers</a>. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inlinequeryresultcacheddocument" id="inlinequeryresultcacheddocument" name="inlinequeryresultcacheddocument"><i class="anchor-icon"></i></a>InlineQueryResultCachedDocument</h4> +<p>Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>document</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title for the result</td> +</tr> +<tr> +<td>document_file_id</td> +<td>String</td> +<td>A valid file identifier for the file</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the document to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the document caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the file</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inlinequeryresultcachedvideo" id="inlinequeryresultcachedvideo" name="inlinequeryresultcachedvideo"><i class="anchor-icon"></i></a>InlineQueryResultCachedVideo</h4> +<p>Represents a link to a video file stored on the Telegram servers. By default, this video file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the video.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>video</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>video_file_id</td> +<td>String</td> +<td>A valid file identifier for the video file</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Title for the result</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td><em>Optional</em>. Short description of the result</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption of the video to be sent, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the video caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the video</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inlinequeryresultcachedvoice" id="inlinequeryresultcachedvoice" name="inlinequeryresultcachedvoice"><i class="anchor-icon"></i></a>InlineQueryResultCachedVoice</h4> +<p>Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the voice message.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>voice</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>voice_file_id</td> +<td>String</td> +<td>A valid file identifier for the voice message</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Voice message title</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the voice message caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the voice message</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inlinequeryresultcachedaudio" id="inlinequeryresultcachedaudio" name="inlinequeryresultcachedaudio"><i class="anchor-icon"></i></a>InlineQueryResultCachedAudio</h4> +<p>Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Type of the result, must be <em>audio</em></td> +</tr> +<tr> +<td>id</td> +<td>String</td> +<td>Unique identifier for this result, 1-64 bytes</td> +</tr> +<tr> +<td>audio_file_id</td> +<td>String</td> +<td>A valid file identifier for the audio file</td> +</tr> +<tr> +<td>caption</td> +<td>String</td> +<td><em>Optional</em>. Caption, 0-1024 characters after entities parsing</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the audio caption. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>caption_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td><em>Optional</em>. <a href="/bots#inline-keyboards-and-on-the-fly-updating">Inline keyboard</a> attached to the message</td> +</tr> +<tr> +<td>input_message_content</td> +<td><a href="#inputmessagecontent">InputMessageContent</a></td> +<td><em>Optional</em>. Content of the message to be sent instead of the audio</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p> +<h4><a class="anchor" href="#inputmessagecontent" id="inputmessagecontent" name="inputmessagecontent"><i class="anchor-icon"></i></a>InputMessageContent</h4> +<p>This object represents the content of a message to be sent as a result of an inline query. Telegram clients currently support the following 5 types:</p> +<ul> +<li><a href="#inputtextmessagecontent">InputTextMessageContent</a></li> +<li><a href="#inputlocationmessagecontent">InputLocationMessageContent</a></li> +<li><a href="#inputvenuemessagecontent">InputVenueMessageContent</a></li> +<li><a href="#inputcontactmessagecontent">InputContactMessageContent</a></li> +<li><a href="#inputinvoicemessagecontent">InputInvoiceMessageContent</a></li> +</ul> +<h4><a class="anchor" href="#inputtextmessagecontent" id="inputtextmessagecontent" name="inputtextmessagecontent"><i class="anchor-icon"></i></a>InputTextMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of a text message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>message_text</td> +<td>String</td> +<td>Text of the message to be sent, 1-4096 characters</td> +</tr> +<tr> +<td>parse_mode</td> +<td>String</td> +<td><em>Optional</em>. Mode for parsing entities in the message text. See <a href="#formatting-options">formatting options</a> for more details.</td> +</tr> +<tr> +<td>entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. List of special entities that appear in message text, which can be specified instead of <em>parse_mode</em></td> +</tr> +<tr> +<td>disable_web_page_preview</td> +<td>Boolean</td> +<td><em>Optional</em>. Disables link previews for links in the sent message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputlocationmessagecontent" id="inputlocationmessagecontent" name="inputlocationmessagecontent"><i class="anchor-icon"></i></a>InputLocationMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of a location message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>latitude</td> +<td>Float</td> +<td>Latitude of the location in degrees</td> +</tr> +<tr> +<td>longitude</td> +<td>Float</td> +<td>Longitude of the location in degrees</td> +</tr> +<tr> +<td>horizontal_accuracy</td> +<td>Float number</td> +<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td> +</tr> +<tr> +<td>live_period</td> +<td>Integer</td> +<td><em>Optional</em>. Period in seconds for which the location can be updated, should be between 60 and 86400.</td> +</tr> +<tr> +<td>heading</td> +<td>Integer</td> +<td><em>Optional</em>. For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.</td> +</tr> +<tr> +<td>proximity_alert_radius</td> +<td>Integer</td> +<td><em>Optional</em>. For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputvenuemessagecontent" id="inputvenuemessagecontent" name="inputvenuemessagecontent"><i class="anchor-icon"></i></a>InputVenueMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of a venue message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>latitude</td> +<td>Float</td> +<td>Latitude of the venue in degrees</td> +</tr> +<tr> +<td>longitude</td> +<td>Float</td> +<td>Longitude of the venue in degrees</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Name of the venue</td> +</tr> +<tr> +<td>address</td> +<td>String</td> +<td>Address of the venue</td> +</tr> +<tr> +<td>foursquare_id</td> +<td>String</td> +<td><em>Optional</em>. Foursquare identifier of the venue, if known</td> +</tr> +<tr> +<td>foursquare_type</td> +<td>String</td> +<td><em>Optional</em>. Foursquare type of the venue, if known. (For example, "arts_entertainment/default", "arts_entertainment/aquarium" or "food/icecream".)</td> +</tr> +<tr> +<td>google_place_id</td> +<td>String</td> +<td><em>Optional</em>. Google Places identifier of the venue</td> +</tr> +<tr> +<td>google_place_type</td> +<td>String</td> +<td><em>Optional</em>. Google Places type of the venue. (See <a href="https://developers.google.com/places/web-service/supported_types">supported types</a>.)</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputcontactmessagecontent" id="inputcontactmessagecontent" name="inputcontactmessagecontent"><i class="anchor-icon"></i></a>InputContactMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of a contact message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>phone_number</td> +<td>String</td> +<td>Contact's phone number</td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>Contact's first name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td><em>Optional</em>. Contact's last name</td> +</tr> +<tr> +<td>vcard</td> +<td>String</td> +<td><em>Optional</em>. Additional data about the contact in the form of a <a href="https://en.wikipedia.org/wiki/VCard">vCard</a>, 0-2048 bytes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#inputinvoicemessagecontent" id="inputinvoicemessagecontent" name="inputinvoicemessagecontent"><i class="anchor-icon"></i></a>InputInvoiceMessageContent</h4> +<p>Represents the <a href="#inputmessagecontent">content</a> of an invoice message to be sent as the result of an inline query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>title</td> +<td>String</td> +<td>Product name, 1-32 characters</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Product description, 1-255 characters</td> +</tr> +<tr> +<td>payload</td> +<td>String</td> +<td>Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.</td> +</tr> +<tr> +<td>provider_token</td> +<td>String</td> +<td>Payment provider token, obtained via <a href="https://t.me/botfather">Botfather</a></td> +</tr> +<tr> +<td>currency</td> +<td>String</td> +<td>Three-letter ISO 4217 currency code, see <a href="/bots/payments#supported-currencies">more on currencies</a></td> +</tr> +<tr> +<td>prices</td> +<td>Array of <a href="#labeledprice">LabeledPrice</a></td> +<td>Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)</td> +</tr> +<tr> +<td>max_tip_amount</td> +<td>Integer</td> +<td><em>Optional</em>. The maximum accepted amount for tips in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a maximum tip of <code>US$ 1.45</code> pass <code>max_tip_amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0</td> +</tr> +<tr> +<td>suggested_tip_amounts</td> +<td>Array of Integer</td> +<td><em>Optional</em>. A JSON-serialized array of suggested amounts of tip in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed <em>max_tip_amount</em>.</td> +</tr> +<tr> +<td>provider_data</td> +<td>String</td> +<td><em>Optional</em>. A JSON-serialized object for data about the invoice, which will be shared with the payment provider. A detailed description of the required fields should be provided by the payment provider.</td> +</tr> +<tr> +<td>photo_url</td> +<td>String</td> +<td><em>Optional</em>. URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.</td> +</tr> +<tr> +<td>photo_size</td> +<td>Integer</td> +<td><em>Optional</em>. Photo size</td> +</tr> +<tr> +<td>photo_width</td> +<td>Integer</td> +<td><em>Optional</em>. Photo width</td> +</tr> +<tr> +<td>photo_height</td> +<td>Integer</td> +<td><em>Optional</em>. Photo height</td> +</tr> +<tr> +<td>need_name</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you require the user's full name to complete the order</td> +</tr> +<tr> +<td>need_phone_number</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you require the user's phone number to complete the order</td> +</tr> +<tr> +<td>need_email</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you require the user's email address to complete the order</td> +</tr> +<tr> +<td>need_shipping_address</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if you require the user's shipping address to complete the order</td> +</tr> +<tr> +<td>send_phone_number_to_provider</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if user's phone number should be sent to provider</td> +</tr> +<tr> +<td>send_email_to_provider</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if user's email address should be sent to provider</td> +</tr> +<tr> +<td>is_flexible</td> +<td>Boolean</td> +<td><em>Optional</em>. Pass <em>True</em>, if the final price depends on the shipping method</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#choseninlineresult" id="choseninlineresult" name="choseninlineresult"><i class="anchor-icon"></i></a>ChosenInlineResult</h4> +<p>Represents a <a href="#inlinequeryresult">result</a> of an inline query that was chosen by the user and sent to their chat partner.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>result_id</td> +<td>String</td> +<td>The unique identifier for the result that was chosen</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>The user that chose the result</td> +</tr> +<tr> +<td>location</td> +<td><a href="#location">Location</a></td> +<td><em>Optional</em>. Sender location, only for bots that require user location</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td><em>Optional</em>. Identifier of the sent inline message. Available only if there is an <a href="#inlinekeyboardmarkup">inline keyboard</a> attached to the message. Will be also received in <a href="#callbackquery">callback queries</a> and can be used to <a href="#updating-messages">edit</a> the message.</td> +</tr> +<tr> +<td>query</td> +<td>String</td> +<td>The query that was used to obtain the result</td> +</tr> +</tbody> +</table> +<p><strong>Note:</strong> It is necessary to enable <a href="/bots/inline#collecting-feedback">inline feedback</a> via <a href="https://t.me/botfather">@Botfather</a> in order to receive these objects in updates.</p> +<h3><a class="anchor" href="#payments" id="payments" name="payments"><i class="anchor-icon"></i></a>Payments</h3> +<p>Your bot can accept payments from Telegram users. Please see the <a href="/bots/payments">introduction to payments</a> for more details on the process and how to set up payments for your bot. Please note that users will need Telegram v.4.0 or higher to use payments (released on May 18, 2017).</p> +<h4><a class="anchor" href="#sendinvoice" id="sendinvoice" name="sendinvoice"><i class="anchor-icon"></i></a>sendInvoice</h4> +<p>Use this method to send invoices. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer or String</td> +<td>Yes</td> +<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Yes</td> +<td>Product name, 1-32 characters</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Yes</td> +<td>Product description, 1-255 characters</td> +</tr> +<tr> +<td>payload</td> +<td>String</td> +<td>Yes</td> +<td>Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.</td> +</tr> +<tr> +<td>provider_token</td> +<td>String</td> +<td>Yes</td> +<td>Payments provider token, obtained via <a href="https://t.me/botfather">Botfather</a></td> +</tr> +<tr> +<td>currency</td> +<td>String</td> +<td>Yes</td> +<td>Three-letter ISO 4217 currency code, see <a href="/bots/payments#supported-currencies">more on currencies</a></td> +</tr> +<tr> +<td>prices</td> +<td>Array of <a href="#labeledprice">LabeledPrice</a></td> +<td>Yes</td> +<td>Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)</td> +</tr> +<tr> +<td>max_tip_amount</td> +<td>Integer</td> +<td>Optional</td> +<td>The maximum accepted amount for tips in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a maximum tip of <code>US$ 1.45</code> pass <code>max_tip_amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0</td> +</tr> +<tr> +<td>suggested_tip_amounts</td> +<td>Array of Integer</td> +<td>Optional</td> +<td>A JSON-serialized array of suggested amounts of tips in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed <em>max_tip_amount</em>.</td> +</tr> +<tr> +<td>start_parameter</td> +<td>String</td> +<td>Optional</td> +<td>Unique deep-linking parameter. If left empty, <strong>forwarded copies</strong> of the sent message will have a <em>Pay</em> button, allowing multiple users to pay directly from the forwarded message, using the same invoice. If non-empty, forwarded copies of the sent message will have a <em>URL</em> button with a deep link to the bot (instead of a <em>Pay</em> button), with the value used as the start parameter</td> +</tr> +<tr> +<td>provider_data</td> +<td>String</td> +<td>Optional</td> +<td>A JSON-serialized data about the invoice, which will be shared with the payment provider. A detailed description of required fields should be provided by the payment provider.</td> +</tr> +<tr> +<td>photo_url</td> +<td>String</td> +<td>Optional</td> +<td>URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.</td> +</tr> +<tr> +<td>photo_size</td> +<td>Integer</td> +<td>Optional</td> +<td>Photo size</td> +</tr> +<tr> +<td>photo_width</td> +<td>Integer</td> +<td>Optional</td> +<td>Photo width</td> +</tr> +<tr> +<td>photo_height</td> +<td>Integer</td> +<td>Optional</td> +<td>Photo height</td> +</tr> +<tr> +<td>need_name</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if you require the user's full name to complete the order</td> +</tr> +<tr> +<td>need_phone_number</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if you require the user's phone number to complete the order</td> +</tr> +<tr> +<td>need_email</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if you require the user's email address to complete the order</td> +</tr> +<tr> +<td>need_shipping_address</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if you require the user's shipping address to complete the order</td> +</tr> +<tr> +<td>send_phone_number_to_provider</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if user's phone number should be sent to provider</td> +</tr> +<tr> +<td>send_email_to_provider</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if user's email address should be sent to provider</td> +</tr> +<tr> +<td>is_flexible</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the final price depends on the shipping method</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>. If empty, one 'Pay <code>total price</code>' button will be shown. If not empty, the first button must be a Pay button.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#answershippingquery" id="answershippingquery" name="answershippingquery"><i class="anchor-icon"></i></a>answerShippingQuery</h4> +<p>If you sent an invoice requesting a shipping address and the parameter <em>is_flexible</em> was specified, the Bot API will send an <a href="#update">Update</a> with a <em>shipping_query</em> field to the bot. Use this method to reply to shipping queries. On success, True is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>shipping_query_id</td> +<td>String</td> +<td>Yes</td> +<td>Unique identifier for the query to be answered</td> +</tr> +<tr> +<td>ok</td> +<td>Boolean</td> +<td>Yes</td> +<td>Specify True if delivery to the specified address is possible and False if there are any problems (for example, if delivery to the specified address is not possible)</td> +</tr> +<tr> +<td>shipping_options</td> +<td>Array of <a href="#shippingoption">ShippingOption</a></td> +<td>Optional</td> +<td>Required if <em>ok</em> is True. A JSON-serialized array of available shipping options.</td> +</tr> +<tr> +<td>error_message</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>ok</em> is False. Error message in human readable form that explains why it is impossible to complete the order (e.g. "Sorry, delivery to your desired address is unavailable'). Telegram will display this message to the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#answerprecheckoutquery" id="answerprecheckoutquery" name="answerprecheckoutquery"><i class="anchor-icon"></i></a>answerPreCheckoutQuery</h4> +<p>Once the user has confirmed their payment and shipping details, the Bot API sends the final confirmation in the form of an <a href="#update">Update</a> with the field <em>pre_checkout_query</em>. Use this method to respond to such pre-checkout queries. On success, True is returned. <strong>Note:</strong> The Bot API must receive an answer within 10 seconds after the pre-checkout query was sent.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>pre_checkout_query_id</td> +<td>String</td> +<td>Yes</td> +<td>Unique identifier for the query to be answered</td> +</tr> +<tr> +<td>ok</td> +<td>Boolean</td> +<td>Yes</td> +<td>Specify <em>True</em> if everything is alright (goods are available, etc.) and the bot is ready to proceed with the order. Use <em>False</em> if there are any problems.</td> +</tr> +<tr> +<td>error_message</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>ok</em> is <em>False</em>. Error message in human readable form that explains the reason for failure to proceed with the checkout (e.g. "Sorry, somebody just bought the last of our amazing black T-shirts while you were busy filling out your payment details. Please choose a different color or garment!"). Telegram will display this message to the user.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#labeledprice" id="labeledprice" name="labeledprice"><i class="anchor-icon"></i></a>LabeledPrice</h4> +<p>This object represents a portion of the price for goods or services.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>label</td> +<td>String</td> +<td>Portion label</td> +</tr> +<tr> +<td>amount</td> +<td>Integer</td> +<td>Price of the product in the <em>smallest units</em> of the <a href="/bots/payments#supported-currencies">currency</a> (integer, <strong>not</strong> float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#invoice" id="invoice" name="invoice"><i class="anchor-icon"></i></a>Invoice</h4> +<p>This object contains basic information about an invoice.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>title</td> +<td>String</td> +<td>Product name</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Product description</td> +</tr> +<tr> +<td>start_parameter</td> +<td>String</td> +<td>Unique bot deep-linking parameter that can be used to generate this invoice</td> +</tr> +<tr> +<td>currency</td> +<td>String</td> +<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td> +</tr> +<tr> +<td>total_amount</td> +<td>Integer</td> +<td>Total price in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#shippingaddress" id="shippingaddress" name="shippingaddress"><i class="anchor-icon"></i></a>ShippingAddress</h4> +<p>This object represents a shipping address.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>country_code</td> +<td>String</td> +<td>ISO 3166-1 alpha-2 country code</td> +</tr> +<tr> +<td>state</td> +<td>String</td> +<td>State, if applicable</td> +</tr> +<tr> +<td>city</td> +<td>String</td> +<td>City</td> +</tr> +<tr> +<td>street_line1</td> +<td>String</td> +<td>First line for the address</td> +</tr> +<tr> +<td>street_line2</td> +<td>String</td> +<td>Second line for the address</td> +</tr> +<tr> +<td>post_code</td> +<td>String</td> +<td>Address post code</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#orderinfo" id="orderinfo" name="orderinfo"><i class="anchor-icon"></i></a>OrderInfo</h4> +<p>This object represents information about an order.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>name</td> +<td>String</td> +<td><em>Optional</em>. User name</td> +</tr> +<tr> +<td>phone_number</td> +<td>String</td> +<td><em>Optional</em>. User's phone number</td> +</tr> +<tr> +<td>email</td> +<td>String</td> +<td><em>Optional</em>. User email</td> +</tr> +<tr> +<td>shipping_address</td> +<td><a href="#shippingaddress">ShippingAddress</a></td> +<td><em>Optional</em>. User shipping address</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#shippingoption" id="shippingoption" name="shippingoption"><i class="anchor-icon"></i></a>ShippingOption</h4> +<p>This object represents one shipping option.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Shipping option identifier</td> +</tr> +<tr> +<td>title</td> +<td>String</td> +<td>Option title</td> +</tr> +<tr> +<td>prices</td> +<td>Array of <a href="#labeledprice">LabeledPrice</a></td> +<td>List of price portions</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#successfulpayment" id="successfulpayment" name="successfulpayment"><i class="anchor-icon"></i></a>SuccessfulPayment</h4> +<p>This object contains basic information about a successful payment.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>currency</td> +<td>String</td> +<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td> +</tr> +<tr> +<td>total_amount</td> +<td>Integer</td> +<td>Total price in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +</tr> +<tr> +<td>invoice_payload</td> +<td>String</td> +<td>Bot specified invoice payload</td> +</tr> +<tr> +<td>shipping_option_id</td> +<td>String</td> +<td><em>Optional</em>. Identifier of the shipping option chosen by the user</td> +</tr> +<tr> +<td>order_info</td> +<td><a href="#orderinfo">OrderInfo</a></td> +<td><em>Optional</em>. Order info provided by the user</td> +</tr> +<tr> +<td>telegram_payment_charge_id</td> +<td>String</td> +<td>Telegram payment identifier</td> +</tr> +<tr> +<td>provider_payment_charge_id</td> +<td>String</td> +<td>Provider payment identifier</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#shippingquery" id="shippingquery" name="shippingquery"><i class="anchor-icon"></i></a>ShippingQuery</h4> +<p>This object contains information about an incoming shipping query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique query identifier</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>User who sent the query</td> +</tr> +<tr> +<td>invoice_payload</td> +<td>String</td> +<td>Bot specified invoice payload</td> +</tr> +<tr> +<td>shipping_address</td> +<td><a href="#shippingaddress">ShippingAddress</a></td> +<td>User specified shipping address</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#precheckoutquery" id="precheckoutquery" name="precheckoutquery"><i class="anchor-icon"></i></a>PreCheckoutQuery</h4> +<p>This object contains information about an incoming pre-checkout query.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>id</td> +<td>String</td> +<td>Unique query identifier</td> +</tr> +<tr> +<td>from</td> +<td><a href="#user">User</a></td> +<td>User who sent the query</td> +</tr> +<tr> +<td>currency</td> +<td>String</td> +<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td> +</tr> +<tr> +<td>total_amount</td> +<td>Integer</td> +<td>Total price in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the <em>exp</em> parameter in <a href="https://core.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +</tr> +<tr> +<td>invoice_payload</td> +<td>String</td> +<td>Bot specified invoice payload</td> +</tr> +<tr> +<td>shipping_option_id</td> +<td>String</td> +<td><em>Optional</em>. Identifier of the shipping option chosen by the user</td> +</tr> +<tr> +<td>order_info</td> +<td><a href="#orderinfo">OrderInfo</a></td> +<td><em>Optional</em>. Order info provided by the user</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#telegram-passport" id="telegram-passport" name="telegram-passport"><i class="anchor-icon"></i></a>Telegram Passport</h3> +<p><strong>Telegram Passport</strong> is a unified authorization method for services that require personal identification. Users can upload their documents once, then instantly share their data with services that require real-world ID (finance, ICOs, etc.). Please see the <a href="/passport">manual</a> for details.</p> +<h4><a class="anchor" href="#passportdata" id="passportdata" name="passportdata"><i class="anchor-icon"></i></a>PassportData</h4> +<p>Contains information about Telegram Passport data shared with the bot by the user.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>data</td> +<td>Array of <a href="#encryptedpassportelement">EncryptedPassportElement</a></td> +<td>Array with information about documents and other Telegram Passport elements that was shared with the bot</td> +</tr> +<tr> +<td>credentials</td> +<td><a href="#encryptedcredentials">EncryptedCredentials</a></td> +<td>Encrypted credentials required to decrypt the data</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportfile" id="passportfile" name="passportfile"><i class="anchor-icon"></i></a>PassportFile</h4> +<p>This object represents a file uploaded to Telegram Passport. Currently all Telegram Passport files are in JPEG format when decrypted and don't exceed 10MB.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>file_id</td> +<td>String</td> +<td>Identifier for this file, which can be used to download or reuse the file</td> +</tr> +<tr> +<td>file_unique_id</td> +<td>String</td> +<td>Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.</td> +</tr> +<tr> +<td>file_size</td> +<td>Integer</td> +<td>File size in bytes</td> +</tr> +<tr> +<td>file_date</td> +<td>Integer</td> +<td>Unix time when the file was uploaded</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#encryptedpassportelement" id="encryptedpassportelement" name="encryptedpassportelement"><i class="anchor-icon"></i></a>EncryptedPassportElement</h4> +<p>Contains information about documents or other Telegram Passport elements shared with the bot by the user.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>type</td> +<td>String</td> +<td>Element type. One of "personal_details", "passport", "driver_license", "identity_card", "internal_passport", "address", "utility_bill", "bank_statement", "rental_agreement", "passport_registration", "temporary_registration", "phone_number", "email".</td> +</tr> +<tr> +<td>data</td> +<td>String</td> +<td><em>Optional</em>. Base64-encoded encrypted Telegram Passport element data provided by the user, available for "personal_details", "passport", "driver_license", "identity_card", "internal_passport" and "address" types. Can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>phone_number</td> +<td>String</td> +<td><em>Optional</em>. User's verified phone number, available only for "phone_number" type</td> +</tr> +<tr> +<td>email</td> +<td>String</td> +<td><em>Optional</em>. User's verified email address, available only for "email" type</td> +</tr> +<tr> +<td>files</td> +<td>Array of <a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Array of encrypted files with documents provided by the user, available for "utility_bill", "bank_statement", "rental_agreement", "passport_registration" and "temporary_registration" types. Files can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>front_side</td> +<td><a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Encrypted file with the front side of the document, provided by the user. Available for "passport", "driver_license", "identity_card" and "internal_passport". The file can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>reverse_side</td> +<td><a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Encrypted file with the reverse side of the document, provided by the user. Available for "driver_license" and "identity_card". The file can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>selfie</td> +<td><a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Encrypted file with the selfie of the user holding a document, provided by the user; available for "passport", "driver_license", "identity_card" and "internal_passport". The file can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>translation</td> +<td>Array of <a href="#passportfile">PassportFile</a></td> +<td><em>Optional</em>. Array of encrypted files with translated versions of documents provided by the user. Available if requested for "passport", "driver_license", "identity_card", "internal_passport", "utility_bill", "bank_statement", "rental_agreement", "passport_registration" and "temporary_registration" types. Files can be decrypted and verified using the accompanying <a href="#encryptedcredentials">EncryptedCredentials</a>.</td> +</tr> +<tr> +<td>hash</td> +<td>String</td> +<td>Base64-encoded element hash for using in <a href="#passportelementerrorunspecified">PassportElementErrorUnspecified</a></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#encryptedcredentials" id="encryptedcredentials" name="encryptedcredentials"><i class="anchor-icon"></i></a>EncryptedCredentials</h4> +<p>Contains data required for decrypting and authenticating <a href="#encryptedpassportelement">EncryptedPassportElement</a>. See the <a href="https://core.telegram.org/passport#receiving-information">Telegram Passport Documentation</a> for a complete description of the data decryption and authentication processes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>data</td> +<td>String</td> +<td>Base64-encoded encrypted JSON-serialized data with unique user's payload, data hashes and secrets required for <a href="#encryptedpassportelement">EncryptedPassportElement</a> decryption and authentication</td> +</tr> +<tr> +<td>hash</td> +<td>String</td> +<td>Base64-encoded data hash for data authentication</td> +</tr> +<tr> +<td>secret</td> +<td>String</td> +<td>Base64-encoded secret, encrypted with the bot's public RSA key, required for data decryption</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#setpassportdataerrors" id="setpassportdataerrors" name="setpassportdataerrors"><i class="anchor-icon"></i></a>setPassportDataErrors</h4> +<p>Informs a user that some of the Telegram Passport elements they provided contains errors. The user will not be able to re-submit their Passport to you until the errors are fixed (the contents of the field for which you returned the error must change). Returns <em>True</em> on success.</p> +<p>Use this if the data submitted by the user doesn't satisfy the standards your service requires for any reason. For example, if a birthday date seems invalid, a submitted document is blurry, a scan shows evidence of tampering, etc. Supply some details in the error message to make sure the user knows how to correct the issues.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier</td> +</tr> +<tr> +<td>errors</td> +<td>Array of <a href="#passportelementerror">PassportElementError</a></td> +<td>Yes</td> +<td>A JSON-serialized array describing the errors</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportelementerror" id="passportelementerror" name="passportelementerror"><i class="anchor-icon"></i></a>PassportElementError</h4> +<p>This object represents an error in the Telegram Passport element which was submitted that should be resolved by the user. It should be one of:</p> +<ul> +<li><a href="#passportelementerrordatafield">PassportElementErrorDataField</a></li> +<li><a href="#passportelementerrorfrontside">PassportElementErrorFrontSide</a></li> +<li><a href="#passportelementerrorreverseside">PassportElementErrorReverseSide</a></li> +<li><a href="#passportelementerrorselfie">PassportElementErrorSelfie</a></li> +<li><a href="#passportelementerrorfile">PassportElementErrorFile</a></li> +<li><a href="#passportelementerrorfiles">PassportElementErrorFiles</a></li> +<li><a href="#passportelementerrortranslationfile">PassportElementErrorTranslationFile</a></li> +<li><a href="#passportelementerrortranslationfiles">PassportElementErrorTranslationFiles</a></li> +<li><a href="#passportelementerrorunspecified">PassportElementErrorUnspecified</a></li> +</ul> +<h4><a class="anchor" href="#passportelementerrordatafield" id="passportelementerrordatafield" name="passportelementerrordatafield"><i class="anchor-icon"></i></a>PassportElementErrorDataField</h4> +<p>Represents an issue in one of the data fields that was provided by the user. The error is considered resolved when the field's value changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>data</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the error, one of "personal_details", "passport", "driver_license", "identity_card", "internal_passport", "address"</td> +</tr> +<tr> +<td>field_name</td> +<td>String</td> +<td>Name of the data field which has the error</td> +</tr> +<tr> +<td>data_hash</td> +<td>String</td> +<td>Base64-encoded data hash</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportelementerrorfrontside" id="passportelementerrorfrontside" name="passportelementerrorfrontside"><i class="anchor-icon"></i></a>PassportElementErrorFrontSide</h4> +<p>Represents an issue with the front side of a document. The error is considered resolved when the file with the front side of the document changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>front_side</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of "passport", "driver_license", "identity_card", "internal_passport"</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded hash of the file with the front side of the document</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportelementerrorreverseside" id="passportelementerrorreverseside" name="passportelementerrorreverseside"><i class="anchor-icon"></i></a>PassportElementErrorReverseSide</h4> +<p>Represents an issue with the reverse side of a document. The error is considered resolved when the file with reverse side of the document changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>reverse_side</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of "driver_license", "identity_card"</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded hash of the file with the reverse side of the document</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportelementerrorselfie" id="passportelementerrorselfie" name="passportelementerrorselfie"><i class="anchor-icon"></i></a>PassportElementErrorSelfie</h4> +<p>Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>selfie</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of "passport", "driver_license", "identity_card", "internal_passport"</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded hash of the file with the selfie</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportelementerrorfile" id="passportelementerrorfile" name="passportelementerrorfile"><i class="anchor-icon"></i></a>PassportElementErrorFile</h4> +<p>Represents an issue with a document scan. The error is considered resolved when the file with the document scan changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>file</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of "utility_bill", "bank_statement", "rental_agreement", "passport_registration", "temporary_registration"</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded file hash</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportelementerrorfiles" id="passportelementerrorfiles" name="passportelementerrorfiles"><i class="anchor-icon"></i></a>PassportElementErrorFiles</h4> +<p>Represents an issue with a list of scans. The error is considered resolved when the list of files containing the scans changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>files</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>The section of the user's Telegram Passport which has the issue, one of "utility_bill", "bank_statement", "rental_agreement", "passport_registration", "temporary_registration"</td> +</tr> +<tr> +<td>file_hashes</td> +<td>Array of String</td> +<td>List of base64-encoded file hashes</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportelementerrortranslationfile" id="passportelementerrortranslationfile" name="passportelementerrortranslationfile"><i class="anchor-icon"></i></a>PassportElementErrorTranslationFile</h4> +<p>Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>translation_file</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Type of element of the user's Telegram Passport which has the issue, one of "passport", "driver_license", "identity_card", "internal_passport", "utility_bill", "bank_statement", "rental_agreement", "passport_registration", "temporary_registration"</td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Base64-encoded file hash</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportelementerrortranslationfiles" id="passportelementerrortranslationfiles" name="passportelementerrortranslationfiles"><i class="anchor-icon"></i></a>PassportElementErrorTranslationFiles</h4> +<p>Represents an issue with the translated version of a document. The error is considered resolved when a file with the document translation change.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>translation_files</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Type of element of the user's Telegram Passport which has the issue, one of "passport", "driver_license", "identity_card", "internal_passport", "utility_bill", "bank_statement", "rental_agreement", "passport_registration", "temporary_registration"</td> +</tr> +<tr> +<td>file_hashes</td> +<td>Array of String</td> +<td>List of base64-encoded file hashes</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportelementerrorunspecified" id="passportelementerrorunspecified" name="passportelementerrorunspecified"><i class="anchor-icon"></i></a>PassportElementErrorUnspecified</h4> +<p>Represents an issue in an unspecified place. The error is considered resolved when new data is added.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>source</td> +<td>String</td> +<td>Error source, must be <em>unspecified</em></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Type of element of the user's Telegram Passport which has the issue</td> +</tr> +<tr> +<td>element_hash</td> +<td>String</td> +<td>Base64-encoded element hash</td> +</tr> +<tr> +<td>message</td> +<td>String</td> +<td>Error message</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#games" id="games" name="games"><i class="anchor-icon"></i></a>Games</h3> +<p>Your bot can offer users <strong>HTML5 games</strong> to play solo or to compete against each other in groups and one-on-one chats. Create games via <a href="https://t.me/botfather">@BotFather</a> using the <em>/newgame</em> command. Please note that this kind of power requires responsibility: you will need to accept the terms for each game that your bots will be offering.</p> +<ul> +<li>Games are a new type of content on Telegram, represented by the <a href="#game">Game</a> and <a href="#inlinequeryresultgame">InlineQueryResultGame</a> objects.</li> +<li>Once you've created a game via <a href="https://t.me/botfather">BotFather</a>, you can send games to chats as regular messages using the <a href="#sendgame">sendGame</a> method, or use <a href="#inline-mode">inline mode</a> with <a href="#inlinequeryresultgame">InlineQueryResultGame</a>.</li> +<li>If you send the game message without any buttons, it will automatically have a 'Play <em>GameName</em>' button. When this button is pressed, your bot gets a <a href="#callbackquery">CallbackQuery</a> with the <em>game_short_name</em> of the requested game. You provide the correct URL for this particular user and the app opens the game in the in-app browser.</li> +<li>You can manually add multiple buttons to your game message. Please note that the first button in the first row <strong>must always</strong> launch the game, using the field <em>callback_game</em> in <a href="#inlinekeyboardbutton">InlineKeyboardButton</a>. You can add extra buttons according to taste: e.g., for a description of the rules, or to open the game's official community.</li> +<li>To make your game more attractive, you can upload a GIF animation that demostrates the game to the users via <a href="https://t.me/botfather">BotFather</a> (see <a href="https://t.me/gamebot?game=lumberjack">Lumberjack</a> for example).</li> +<li>A game message will also display high scores for the current chat. Use <a href="#setgamescore">setGameScore</a> to post high scores to the chat with the game, add the <em>edit_message</em> parameter to automatically update the message with the current scoreboard.</li> +<li>Use <a href="#getgamehighscores">getGameHighScores</a> to get data for in-game high score tables.</li> +<li>You can also add an extra <a href="/bots/games#sharing-your-game-to-telegram-chats">sharing button</a> for users to share their best score to different chats.</li> +<li>For examples of what can be done using this new stuff, check the <a href="https://t.me/gamebot">@gamebot</a> and <a href="https://t.me/gamee">@gamee</a> bots.</li> +</ul> +<h4><a class="anchor" href="#sendgame" id="sendgame" name="sendgame"><i class="anchor-icon"></i></a>sendGame</h4> +<p>Use this method to send a game. On success, the sent <a href="#message">Message</a> is returned.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>chat_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Unique identifier for the target chat</td> +</tr> +<tr> +<td>game_short_name</td> +<td>String</td> +<td>Yes</td> +<td>Short name of the game, serves as the unique identifier for the game. Set up your games via <a href="https://t.me/botfather">Botfather</a>.</td> +</tr> +<tr> +<td>disable_notification</td> +<td>Boolean</td> +<td>Optional</td> +<td>Sends the message <a href="https://telegram.org/blog/channels-2-0#silent-messages">silently</a>. Users will receive a notification with no sound.</td> +</tr> +<tr> +<td>reply_to_message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>If the message is a reply, ID of the original message</td> +</tr> +<tr> +<td>allow_sending_without_reply</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass <em>True</em>, if the message should be sent even if the specified replied-to message is not found</td> +</tr> +<tr> +<td>reply_markup</td> +<td><a href="#inlinekeyboardmarkup">InlineKeyboardMarkup</a></td> +<td>Optional</td> +<td>A JSON-serialized object for an <a href="https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating">inline keyboard</a>. If empty, one 'Play game_title' button will be shown. If not empty, the first button must launch the game.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#game" id="game" name="game"><i class="anchor-icon"></i></a>Game</h4> +<p>This object represents a game. Use BotFather to create and edit games, their short names will act as unique identifiers.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>title</td> +<td>String</td> +<td>Title of the game</td> +</tr> +<tr> +<td>description</td> +<td>String</td> +<td>Description of the game</td> +</tr> +<tr> +<td>photo</td> +<td>Array of <a href="#photosize">PhotoSize</a></td> +<td>Photo that will be displayed in the game message in chats.</td> +</tr> +<tr> +<td>text</td> +<td>String</td> +<td><em>Optional</em>. Brief description of the game or high scores included in the game message. Can be automatically edited to include current high scores for the game when the bot calls <a href="#setgamescore">setGameScore</a>, or manually edited using <a href="#editmessagetext">editMessageText</a>. 0-4096 characters.</td> +</tr> +<tr> +<td>text_entities</td> +<td>Array of <a href="#messageentity">MessageEntity</a></td> +<td><em>Optional</em>. Special entities that appear in <em>text</em>, such as usernames, URLs, bot commands, etc.</td> +</tr> +<tr> +<td>animation</td> +<td><a href="#animation">Animation</a></td> +<td><em>Optional</em>. Animation that will be displayed in the game message in chats. Upload via <a href="https://t.me/botfather">BotFather</a></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#callbackgame" id="callbackgame" name="callbackgame"><i class="anchor-icon"></i></a>CallbackGame</h4> +<p>A placeholder, currently holds no information. Use <a href="https://t.me/botfather">BotFather</a> to set up your game.</p> +<h4><a class="anchor" href="#setgamescore" id="setgamescore" name="setgamescore"><i class="anchor-icon"></i></a>setGameScore</h4> +<p>Use this method to set the score of the specified user in a game message. On success, if the message is not an inline message, the <a href="#message">Message</a> is returned, otherwise <em>True</em> is returned. Returns an error, if the new score is not greater than the user's current score in the chat and <em>force</em> is <em>False</em>.</p> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>User identifier</td> +</tr> +<tr> +<td>score</td> +<td>Integer</td> +<td>Yes</td> +<td>New score, must be non-negative</td> +</tr> +<tr> +<td>force</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters</td> +</tr> +<tr> +<td>disable_edit_message</td> +<td>Boolean</td> +<td>Optional</td> +<td>Pass True, if the game message should not be automatically edited to include the current scoreboard</td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the sent message</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#getgamehighscores" id="getgamehighscores" name="getgamehighscores"><i class="anchor-icon"></i></a>getGameHighScores</h4> +<p>Use this method to get data for high score tables. Will return the score of the specified user and several of their neighbors in a game. On success, returns an <em>Array</em> of <a href="#gamehighscore">GameHighScore</a> objects.</p> +<blockquote> +<p>This method will currently return scores for the target user, plus two of their closest neighbors on each side. Will also return the top three users if the user and his neighbors are not among them. Please note that this behavior is subject to change.</p> +</blockquote> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Type</th> +<th>Required</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>user_id</td> +<td>Integer</td> +<td>Yes</td> +<td>Target user id</td> +</tr> +<tr> +<td>chat_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Unique identifier for the target chat</td> +</tr> +<tr> +<td>message_id</td> +<td>Integer</td> +<td>Optional</td> +<td>Required if <em>inline_message_id</em> is not specified. Identifier of the sent message</td> +</tr> +<tr> +<td>inline_message_id</td> +<td>String</td> +<td>Optional</td> +<td>Required if <em>chat_id</em> and <em>message_id</em> are not specified. Identifier of the inline message</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#gamehighscore" id="gamehighscore" name="gamehighscore"><i class="anchor-icon"></i></a>GameHighScore</h4> +<p>This object represents one row of the high scores table for a game.</p> +<table class="table"> +<thead> +<tr> +<th>Field</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>position</td> +<td>Integer</td> +<td>Position in high score table for the game</td> +</tr> +<tr> +<td>user</td> +<td><a href="#user">User</a></td> +<td>User</td> +</tr> +<tr> +<td>score</td> +<td>Integer</td> +<td>Score</td> +</tr> +</tbody> +</table> +<hr> +<p>And that's about all we've got for now. +If you've got any questions, please check out our <a href="/bots/faq"><strong>Bot FAQ »</strong></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="//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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/phone.groupParticipants b/data/corefork.telegram.org/constructor/account.authorizationForm similarity index 77% rename from data/corefork.telegram.org/constructor/phone.groupParticipants rename to data/corefork.telegram.org/constructor/account.authorizationForm index 5d938f50b1..7e64f72a2c 100644 --- a/data/corefork.telegram.org/constructor/phone.groupParticipants +++ b/data/corefork.telegram.org/constructor/account.authorizationForm @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>phone.groupParticipants</title> + <title>account.authorizationForm</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Info about the participants of a group call or livestream"> - <meta property="og:title" content="phone.groupParticipants"> + <meta property="description" content="Telegram Passport authorization form"> + <meta property="og:title" content="account.authorizationForm"> <meta property="og:image" content=""> - <meta property="og:description" content="Info about the participants of a group call or livestream"> + <meta property="og:description" content="Telegram Passport authorization form"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/phone.groupParticipants" >phone.groupParticipants</a></li></ul></div> - <h1 id="dev_page_title">phone.groupParticipants</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/account.authorizationForm" >account.authorizationForm</a></li></ul></div> + <h1 id="dev_page_title">account.authorizationForm</h1> - <div id="dev_page_content"><p>Info about the participants of a group call or livestream</p> + <div id="dev_page_content"><p><a href="/passport">Telegram Passport</a> authorization form</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/phone.groupParticipants" class="current_page_link" >phone.groupParticipants</a>#f47751b6 count:<a href="/type/int" >int</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/GroupCallParticipant" >GroupCallParticipant</a>> next_offset:<a href="/type/string" >string</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> version:<a href="/type/int" >int</a> = <a href="/type/phone.GroupParticipants" >phone.GroupParticipants</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/account.authorizationForm" class="current_page_link" >account.authorizationForm</a>#ad2e1cd8 flags:<a href="/type/%23" >#</a> required_types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureRequiredType" >SecureRequiredType</a>> values:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValue" >SecureValue</a>> errors:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueError" >SecureValueError</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> privacy_policy_url:flags.0?<a href="/type/string" >string</a> = <a href="/type/account.AuthorizationForm" >account.AuthorizationForm</a>;</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> @@ -64,42 +64,41 @@ </thead> <tbody> <tr> -<td><strong>count</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of participants</td> +<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>participants</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/GroupCallParticipant">GroupCallParticipant</a>></td> -<td>List of participants</td> +<td><strong>required_types</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/SecureRequiredType">SecureRequiredType</a>></td> +<td>Required <a href="/passport">Telegram Passport</a> documents</td> </tr> <tr> -<td><strong>next_offset</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>If not empty, the specified list of participants is partial, and more participants can be fetched specifying this parameter as <code>offset</code> in <a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a>.</td> +<td><strong>values</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/SecureValue">SecureValue</a>></td> +<td>Already submitted <a href="/passport">Telegram Passport</a> documents</td> </tr> <tr> -<td><strong>chats</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> -<td>Mentioned chats</td> +<td><strong>errors</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/SecureValueError">SecureValueError</a>></td> +<td><a href="/passport">Telegram Passport</a> errors</td> </tr> <tr> <td><strong>users</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>Mentioned users</td> +<td>Info about the bot to which the form will be submitted</td> </tr> <tr> -<td><strong>version</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Version info</td> +<td><strong>privacy_policy_url</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/string">string</a></td> +<td>URL of the service's privacy policy</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/phone.GroupParticipants">phone.GroupParticipants</a></p> +<p><a href="/type/account.AuthorizationForm">account.AuthorizationForm</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="#phonegetgroupparticipants" id="phonegetgroupparticipants" name="phonegetgroupparticipants"><i class="anchor-icon"></i></a><a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a></h4> -<p>Get group call participants</p></div> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></div> </div> diff --git a/data/corefork.telegram.org/constructor/account.password b/data/corefork.telegram.org/constructor/account.password new file mode 100644 index 0000000000..3d030ade78 --- /dev/null +++ b/data/corefork.telegram.org/constructor/account.password @@ -0,0 +1,213 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.password</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Configuration for two-factor authorization"> + <meta property="og:title" content="account.password"> + <meta property="og:image" content=""> + <meta property="og:description" content="Configuration for two-factor authorization"> + <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?215" 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/account.password" >account.password</a></li></ul></div> + <h1 id="dev_page_title">account.password</h1> + + <div id="dev_page_content"><p>Configuration for two-factor authorization</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/account.password" class="current_page_link" >account.password</a>#185b184f flags:<a href="/type/%23" >#</a> has_recovery:flags.0?true has_secure_values:flags.1?true has_password:flags.2?true current_algo:flags.2?<a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</a> srp_B:flags.2?<a href="/type/bytes" >bytes</a> srp_id:flags.2?<a href="/type/long" >long</a> hint:flags.3?<a href="/type/string" >string</a> email_unconfirmed_pattern:flags.4?<a href="/type/string" >string</a> new_algo:<a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</a> new_secure_algo:<a href="/type/SecurePasswordKdfAlgo" >SecurePasswordKdfAlgo</a> secure_random:<a href="/type/bytes" >bytes</a> pending_reset_date:flags.5?<a href="/type/int" >int</a> = <a href="/type/account.Password" >account.Password</a>;</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>has_recovery</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 the user has a recovery method configured</td> +</tr> +<tr> +<td><strong>has_secure_values</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>Whether telegram <a href="/passport">passport</a> is enabled</td> +</tr> +<tr> +<td><strong>has_password</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>Whether the user has a password</td> +</tr> +<tr> +<td><strong>current_algo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/PasswordKdfAlgo">PasswordKdfAlgo</a></td> +<td>The <a href="/api/srp">KDF algorithm for SRP two-factor authentication</a> of the current password</td> +</tr> +<tr> +<td><strong>srp_B</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/bytes">bytes</a></td> +<td>Srp B param for <a href="/api/srp">SRP authorization</a></td> +</tr> +<tr> +<td><strong>srp_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/long">long</a></td> +<td>Srp ID param for <a href="/api/srp">SRP authorization</a></td> +</tr> +<tr> +<td><strong>hint</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td> +<td>Text hint for the password</td> +</tr> +<tr> +<td><strong>email_unconfirmed_pattern</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/string">string</a></td> +<td>A <a href="/api/srp#email-verification">password recovery email</a> with the specified <a href="/api/pattern">pattern</a> is still awaiting verification</td> +</tr> +<tr> +<td><strong>new_algo</strong></td> +<td style="text-align: center;"><a href="/type/PasswordKdfAlgo">PasswordKdfAlgo</a></td> +<td>The <a href="/api/srp">KDF algorithm for SRP two-factor authentication</a> to use when creating new passwords</td> +</tr> +<tr> +<td><strong>new_secure_algo</strong></td> +<td style="text-align: center;"><a href="/type/SecurePasswordKdfAlgo">SecurePasswordKdfAlgo</a></td> +<td>The KDF algorithm for telegram <a href="/passport">passport</a></td> +</tr> +<tr> +<td><strong>secure_random</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Secure random string</td> +</tr> +<tr> +<td><strong>pending_reset_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/int">int</a></td> +<td>The 2FA password will be automatically removed at this date, unless the user cancels the operation</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/account.Password">account.Password</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4> +<h4><a class="anchor" href="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p> +<h4><a class="anchor" href="#pattern-matching" id="pattern-matching" name="pattern-matching"><i class="anchor-icon"></i></a><a href="/api/pattern">Pattern matching</a></h4> +<p>Some methods require the client to verify if the data obtained from an external source matches a certain pattern.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/account.passwordInputSettings b/data/corefork.telegram.org/constructor/account.passwordInputSettings new file mode 100644 index 0000000000..b26e9ebc31 --- /dev/null +++ b/data/corefork.telegram.org/constructor/account.passwordInputSettings @@ -0,0 +1,176 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.passwordInputSettings</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Settings for setting up a new password"> + <meta property="og:title" content="account.passwordInputSettings"> + <meta property="og:image" content=""> + <meta property="og:description" content="Settings for setting up a new 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?215" 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/account.passwordInputSettings" >account.passwordInputSettings</a></li></ul></div> + <h1 id="dev_page_title">account.passwordInputSettings</h1> + + <div id="dev_page_content"><p>Settings for setting up a new 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/account.passwordInputSettings" class="current_page_link" >account.passwordInputSettings</a>#c23727c9 flags:<a href="/type/%23" >#</a> new_algo:flags.0?<a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</a> new_password_hash:flags.0?<a href="/type/bytes" >bytes</a> hint:flags.0?<a href="/type/string" >string</a> email:flags.1?<a href="/type/string" >string</a> new_secure_settings:flags.2?<a href="/type/SecureSecretSettings" >SecureSecretSettings</a> = <a href="/type/account.PasswordInputSettings" >account.PasswordInputSettings</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>new_algo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/PasswordKdfAlgo">PasswordKdfAlgo</a></td> +<td>The <a href="/api/srp">SRP algorithm</a> to use</td> +</tr> +<tr> +<td><strong>new_password_hash</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/bytes">bytes</a></td> +<td>The <a href="/api/srp">computed password hash</a></td> +</tr> +<tr> +<td><strong>hint</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/string">string</a></td> +<td>Text hint for the password</td> +</tr> +<tr> +<td><strong>email</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/string">string</a></td> +<td>Password recovery email</td> +</tr> +<tr> +<td><strong>new_secure_settings</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/SecureSecretSettings">SecureSecretSettings</a></td> +<td>Telegram <a href="/passport">passport</a> settings</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/account.PasswordInputSettings">account.PasswordInputSettings</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/account.resetPasswordRequestedWait b/data/corefork.telegram.org/constructor/account.resetPasswordRequestedWait new file mode 100644 index 0000000000..2f3a926f76 --- /dev/null +++ b/data/corefork.telegram.org/constructor/account.resetPasswordRequestedWait @@ -0,0 +1,147 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.resetPasswordRequestedWait</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="You successfully requested a password reset, please wait until the specified date before finalizing the reset."> + <meta property="og:title" content="account.resetPasswordRequestedWait"> + <meta property="og:image" content=""> + <meta property="og:description" content="You successfully requested a password reset, please wait until the specified date before finalizing the reset."> + <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?215" 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/account.resetPasswordRequestedWait" >account.resetPasswordRequestedWait</a></li></ul></div> + <h1 id="dev_page_title">account.resetPasswordRequestedWait</h1> + + <div id="dev_page_content"><p>You successfully requested a password reset, please wait until the specified date before finalizing the reset.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/account.resetPasswordRequestedWait" class="current_page_link" >account.resetPasswordRequestedWait</a>#e9effc7d until_date:<a href="/type/int" >int</a> = <a href="/type/account.ResetPasswordResult" >account.ResetPasswordResult</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>until_date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Wait until this date before finalizing the reset.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/account.ResetPasswordResult">account.ResetPasswordResult</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/auth.authorizationSignUpRequired b/data/corefork.telegram.org/constructor/auth.authorizationSignUpRequired new file mode 100644 index 0000000000..380b3b31a3 --- /dev/null +++ b/data/corefork.telegram.org/constructor/auth.authorizationSignUpRequired @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.authorizationSignUpRequired</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="An account with this phone number doesn't exist on telegram: the user has to enter basic information and sign up"> + <meta property="og:title" content="auth.authorizationSignUpRequired"> + <meta property="og:image" content=""> + <meta property="og:description" content="An account with this phone number doesn't exist on telegram: the user has to enter basic information and sign up"> + <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?215" 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/auth.authorizationSignUpRequired" >auth.authorizationSignUpRequired</a></li></ul></div> + <h1 id="dev_page_title">auth.authorizationSignUpRequired</h1> + + <div id="dev_page_content"><p>An account with this phone number doesn't exist on telegram: the user has to <a href="/api/auth">enter basic information and sign up</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.authorizationSignUpRequired" class="current_page_link" >auth.authorizationSignUpRequired</a>#44747e9a flags:<a href="/type/%23" >#</a> terms_of_service:flags.0?<a href="/type/help.TermsOfService" >help.TermsOfService</a> = <a href="/type/auth.Authorization" >auth.Authorization</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>terms_of_service</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/help.TermsOfService">help.TermsOfService</a></td> +<td>Telegram's terms of service: the user must read and accept the terms of service before signing up to telegram</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/auth.Authorization">auth.Authorization</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="#user-authorization" id="user-authorization" name="user-authorization"><i class="anchor-icon"></i></a><a href="/api/auth">User Authorization</a></h4> +<p>How to register a user's phone to start using the API.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/auth.loginToken b/data/corefork.telegram.org/constructor/auth.loginToken new file mode 100644 index 0000000000..b50034225b --- /dev/null +++ b/data/corefork.telegram.org/constructor/auth.loginToken @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.loginToken</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Login token (for QR code login)"> + <meta property="og:title" content="auth.loginToken"> + <meta property="og:image" content=""> + <meta property="og:description" content="Login token (for QR code login)"> + <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?215" 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/auth.loginToken" >auth.loginToken</a></li></ul></div> + <h1 id="dev_page_title">auth.loginToken</h1> + + <div id="dev_page_content"><p>Login token (for <a href="/api/qr-login">QR code login</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.loginToken" class="current_page_link" >auth.loginToken</a>#629f1980 expires:<a href="/type/int" >int</a> token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</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>expires</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Expiry date of QR code</td> +</tr> +<tr> +<td><strong>token</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Token to render in QR code</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/auth.LoginToken">auth.LoginToken</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="#login-via-qr-code" id="login-via-qr-code" name="login-via-qr-code"><i class="anchor-icon"></i></a><a href="/api/qr-login">Login via QR code</a></h4> +<p>QR code login flow</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inputGroupCall.html b/data/corefork.telegram.org/constructor/auth.loginTokenMigrateTo similarity index 88% rename from data/corefork.telegram.org/constructor/inputGroupCall.html rename to data/corefork.telegram.org/constructor/auth.loginTokenMigrateTo index 7cd8b17c93..4566afdc13 100644 --- a/data/corefork.telegram.org/constructor/inputGroupCall.html +++ b/data/corefork.telegram.org/constructor/auth.loginTokenMigrateTo @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputGroupCall</title> + <title>auth.loginTokenMigrateTo</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Points to a specific group call"> - <meta property="og:title" content="inputGroupCall"> + <meta property="description" content="Repeat the query to the specified DC"> + <meta property="og:title" content="auth.loginTokenMigrateTo"> <meta property="og:image" content=""> - <meta property="og:description" content="Points to a specific group call"> + <meta property="og:description" content="Repeat the query to the specified DC"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputGroupCall" >inputGroupCall</a></li></ul></div> - <h1 id="dev_page_title">inputGroupCall</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/auth.loginTokenMigrateTo" >auth.loginTokenMigrateTo</a></li></ul></div> + <h1 id="dev_page_title">auth.loginTokenMigrateTo</h1> - <div id="dev_page_content"><p>Points to a specific group call</p> + <div id="dev_page_content"><p>Repeat the query to the specified DC</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputGroupCall" class="current_page_link" >inputGroupCall</a>#d8aa840f id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputGroupCall" >InputGroupCall</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/auth.loginTokenMigrateTo" class="current_page_link" >auth.loginTokenMigrateTo</a>#68e9916 dc_id:<a href="/type/int" >int</a> token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</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> @@ -64,19 +64,19 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Group call ID</td> +<td><strong>dc_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>DC ID</td> </tr> <tr> -<td><strong>access_hash</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Group call access hash</td> +<td><strong>token</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Token to use for login</td> </tr> </tbody> </table> <h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> -<p><a href="/type/InputGroupCall">InputGroupCall</a></p></div> +<p><a href="/type/auth.LoginToken">auth.LoginToken</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/auth.loginTokenSuccess b/data/corefork.telegram.org/constructor/auth.loginTokenSuccess new file mode 100644 index 0000000000..5de5f5b8f6 --- /dev/null +++ b/data/corefork.telegram.org/constructor/auth.loginTokenSuccess @@ -0,0 +1,147 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.loginTokenSuccess</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Login via token (QR code) succeded!"> + <meta property="og:title" content="auth.loginTokenSuccess"> + <meta property="og:image" content=""> + <meta property="og:description" content="Login via token (QR code) succeded!"> + <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?215" 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/auth.loginTokenSuccess" >auth.loginTokenSuccess</a></li></ul></div> + <h1 id="dev_page_title">auth.loginTokenSuccess</h1> + + <div id="dev_page_content"><p>Login via token (QR code) succeded!</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.loginTokenSuccess" class="current_page_link" >auth.loginTokenSuccess</a>#390d5c5e authorization:<a href="/type/auth.Authorization" >auth.Authorization</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</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>authorization</strong></td> +<td style="text-align: center;"><a href="/type/auth.Authorization">auth.Authorization</a></td> +<td>Authorization info</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/auth.LoginToken">auth.LoginToken</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/messageMediaInvoice.html b/data/corefork.telegram.org/constructor/authorization.html similarity index 73% rename from data/corefork.telegram.org/constructor/messageMediaInvoice.html rename to data/corefork.telegram.org/constructor/authorization.html index 4a84ca670d..07db698688 100644 --- a/data/corefork.telegram.org/constructor/messageMediaInvoice.html +++ b/data/corefork.telegram.org/constructor/authorization.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messageMediaInvoice</title> + <title>authorization</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Invoice"> - <meta property="og:title" content="messageMediaInvoice"> + <meta property="description" content="Logged-in session"> + <meta property="og:title" content="authorization"> <meta property="og:image" content=""> - <meta property="og:description" content="Invoice"> + <meta property="og:description" content="Logged-in session"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/messageMediaInvoice" >messageMediaInvoice</a></li></ul></div> - <h1 id="dev_page_title">messageMediaInvoice</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/authorization" >authorization</a></li></ul></div> + <h1 id="dev_page_title">authorization</h1> - <div id="dev_page_content"><p>Invoice</p> + <div id="dev_page_content"><p>Logged-in session</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messageMediaInvoice" class="current_page_link" >messageMediaInvoice</a>#84551347 flags:<a href="/type/%23" >#</a> shipping_address_requested:flags.1?true test:flags.3?true title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.0?<a href="/type/WebDocument" >WebDocument</a> receipt_msg_id:flags.2?<a href="/type/int" >int</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> start_param:<a href="/type/string" >string</a> = <a href="/type/MessageMedia" >MessageMedia</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/authorization" class="current_page_link" >authorization</a>#ad01d61d flags:<a href="/type/%23" >#</a> current:flags.0?true official_app:flags.1?true password_pending:flags.2?true encrypted_requests_disabled:flags.3?true call_requests_disabled:flags.4?true hash:<a href="/type/long" >long</a> device_model:<a href="/type/string" >string</a> platform:<a href="/type/string" >string</a> system_version:<a href="/type/string" >string</a> api_id:<a href="/type/int" >int</a> app_name:<a href="/type/string" >string</a> app_version:<a href="/type/string" >string</a> date_created:<a href="/type/int" >int</a> date_active:<a href="/type/int" >int</a> ip:<a href="/type/string" >string</a> country:<a href="/type/string" >string</a> region:<a href="/type/string" >string</a> = <a href="/type/Authorization" >Authorization</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> @@ -69,60 +69,87 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>shipping_address_requested</strong></td> +<td><strong>current</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 this is the current session</td> +</tr> +<tr> +<td><strong>official_app</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>Whether the shipping address was requested</td> +<td>Whether the session is from an official app</td> </tr> <tr> -<td><strong>test</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>Whether this is an example invoice</td> +<td><strong>password_pending</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>Whether the session is still waiting for a 2FA password</td> </tr> <tr> -<td><strong>title</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Product name, 1-32 characters</td> -</tr> -<tr> -<td><strong>description</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Product description, 1-255 characters</td> -</tr> -<tr> -<td><strong>photo</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/WebDocument">WebDocument</a></td> -<td>URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.</td> -</tr> -<tr> -<td><strong>receipt_msg_id</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> -<td>Message ID of receipt: if set, clients should change the text of the first <a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a> button always attached to the <a href="/constructor/message">message</a> to a localized version of the word <code>Receipt</code></td> -</tr> -<tr> -<td><strong>currency</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td> -</tr> -<tr> -<td><strong>total_amount</strong></td> +<td><strong>hash</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Total price in the smallest units of the currency (integer, not float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the exp parameter in <a href="/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +<td>Identifier</td> </tr> <tr> -<td><strong>start_param</strong></td> +<td><strong>device_model</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Unique bot deep-linking parameter that can be used to generate this invoice</td> +<td>Device model</td> +</tr> +<tr> +<td><strong>platform</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Platform</td> +</tr> +<tr> +<td><strong>system_version</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>System version</td> +</tr> +<tr> +<td><strong>api_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/obtaining_api_id">API ID</a></td> +</tr> +<tr> +<td><strong>app_name</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>App name</td> +</tr> +<tr> +<td><strong>app_version</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>App version</td> +</tr> +<tr> +<td><strong>date_created</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>When was the session created</td> +</tr> +<tr> +<td><strong>date_active</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>When was the session last active</td> +</tr> +<tr> +<td><strong>ip</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Last known IP</td> +</tr> +<tr> +<td><strong>country</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Country determined from IP</td> +</tr> +<tr> +<td><strong>region</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Region determined from IP</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/MessageMedia">MessageMedia</a></p> +<p><a href="/type/Authorization">Authorization</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="#keyboardbuttonbuy" id="keyboardbuttonbuy" name="keyboardbuttonbuy"><i class="anchor-icon"></i></a><a href="/constructor/keyboardButtonBuy">keyboardButtonBuy</a></h4> -<p>Button to buy a product</p> -<h4><a class="anchor" href="#message" id="message" name="message"><i class="anchor-icon"></i></a><a href="/constructor/message">message</a></h4> -<p>A message</p> -<h4><a class="anchor" href="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4></div> +<h4><a class="anchor" href="#creating-your-telegram-application" id="creating-your-telegram-application" name="creating-your-telegram-application"><i class="anchor-icon"></i></a><a href="/api/obtaining_api_id">Creating your Telegram Application</a></h4> +<p>How to get your application identifier and create a new Telegram app.</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/channel.html b/data/corefork.telegram.org/constructor/channel.html new file mode 100644 index 0000000000..f1a4bd2e91 --- /dev/null +++ b/data/corefork.telegram.org/constructor/channel.html @@ -0,0 +1,289 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>channel</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Channel/supergroup info"> + <meta property="og:title" content="channel"> + <meta property="og:image" content=""> + <meta property="og:description" content="Channel/supergroup 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?215" 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/channel" >channel</a></li></ul></div> + <h1 id="dev_page_title">channel</h1> + + <div id="dev_page_content"><p>Channel/supergroup info</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/channel" class="current_page_link" >channel</a>#8261ac61 flags:<a href="/type/%23" >#</a> creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true id:<a href="/type/long" >long</a> access_hash:flags.13?<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> username:flags.6?<a href="/type/string" >string</a> photo:<a href="/type/ChatPhoto" >ChatPhoto</a> date:<a href="/type/int" >int</a> restriction_reason:flags.9?<a href="/type/Vector%20t" >Vector</a><<a href="/type/RestrictionReason" >RestrictionReason</a>> admin_rights:flags.14?<a href="/type/ChatAdminRights" >ChatAdminRights</a> banned_rights:flags.15?<a href="/type/ChatBannedRights" >ChatBannedRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights" >ChatBannedRights</a> participants_count:flags.17?<a href="/type/int" >int</a> = <a href="/type/Chat" >Chat</a>;</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>creator</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 the current user is the creator of this channel</td> +</tr> +<tr> +<td><strong>left</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>Whether the current user has left this channel</td> +</tr> +<tr> +<td><strong>broadcast</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>Is this a channel?</td> +</tr> +<tr> +<td><strong>verified</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>Is this channel verified by telegram?</td> +</tr> +<tr> +<td><strong>megagroup</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>Is this a supergroup?</td> +</tr> +<tr> +<td><strong>restricted</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>Whether viewing/writing in this channel for a reason (see <code>restriction_reason</code></td> +</tr> +<tr> +<td><strong>signatures</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>Whether signatures are enabled (channels)</td> +</tr> +<tr> +<td><strong>min</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>See <a href="/api/min">min</a></td> +</tr> +<tr> +<td><strong>scam</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.19?<a href="/constructor/true">true</a></td> +<td>This channel/supergroup is probably a scam</td> +</tr> +<tr> +<td><strong>has_link</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.20?<a href="/constructor/true">true</a></td> +<td>Whether this channel has a private join link</td> +</tr> +<tr> +<td><strong>has_geo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.21?<a href="/constructor/true">true</a></td> +<td>Whether this chanel has a geoposition</td> +</tr> +<tr> +<td><strong>slowmode_enabled</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.22?<a href="/constructor/true">true</a></td> +<td>Whether slow mode is enabled for groups to prevent flood in chat</td> +</tr> +<tr> +<td><strong>call_active</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.23?<a href="/constructor/true">true</a></td> +<td>Whether a group call or livestream is currently active</td> +</tr> +<tr> +<td><strong>call_not_empty</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.24?<a href="/constructor/true">true</a></td> +<td>Whether there's anyone in the group call or livestream</td> +</tr> +<tr> +<td><strong>fake</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/constructor/true">true</a></td> +<td>If set, this <a href="/api/channel">supergroup/channel</a> was reported by many users as a fake or scam: be careful when interacting with it.</td> +</tr> +<tr> +<td><strong>gigagroup</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.26?<a href="/constructor/true">true</a></td> +<td>Whether this <a href="/api/channel">supergroup</a> is a gigagroup</td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>ID of the channel</td> +</tr> +<tr> +<td><strong>access_hash</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.13?<a href="/type/long">long</a></td> +<td>Access hash</td> +</tr> +<tr> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Title</td> +</tr> +<tr> +<td><strong>username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/string">string</a></td> +<td>Username</td> +</tr> +<tr> +<td><strong>photo</strong></td> +<td style="text-align: center;"><a href="/type/ChatPhoto">ChatPhoto</a></td> +<td>Profile photo</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Date when the user joined the supergroup/channel, or if the user isn't a member, its creation date</td> +</tr> +<tr> +<td><strong>restriction_reason</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.9?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>></td> +<td>Contains the reason why access to this channel must be restricted.</td> +</tr> +<tr> +<td><strong>admin_rights</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/ChatAdminRights">ChatAdminRights</a></td> +<td>Admin rights of the user in this channel (see <a href="/api/rights">rights</a>)</td> +</tr> +<tr> +<td><strong>banned_rights</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.15?<a href="/type/ChatBannedRights">ChatBannedRights</a></td> +<td>Banned rights of the user in this channel (see <a href="/api/rights">rights</a>)</td> +</tr> +<tr> +<td><strong>default_banned_rights</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.18?<a href="/type/ChatBannedRights">ChatBannedRights</a></td> +<td>Default chat rights (see <a href="/api/rights">rights</a>)</td> +</tr> +<tr> +<td><strong>participants_count</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.17?<a href="/type/int">int</a></td> +<td>Participant count</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/Chat">Chat</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="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.</p> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#admin-banned-default-rights" id="admin-banned-default-rights" name="admin-banned-default-rights"><i class="anchor-icon"></i></a><a href="/api/rights">Admin, banned, default rights</a></h4> +<p>How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/channelParticipantsMentions.html b/data/corefork.telegram.org/constructor/channelParticipantsMentions.html new file mode 100644 index 0000000000..cc4d465f7a --- /dev/null +++ b/data/corefork.telegram.org/constructor/channelParticipantsMentions.html @@ -0,0 +1,161 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>channelParticipantsMentions</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="This filter is used when looking for supergroup members to mention. This filter will automatically remove anonymous admins, and return even non-participant users that replied to a specific thread through the comment section of a channel."> + <meta property="og:title" content="channelParticipantsMentions"> + <meta property="og:image" content=""> + <meta property="og:description" content="This filter is used when looking for supergroup members to mention. This filter will automatically remove anonymous admins, and return even non-participant users that replied to a specific thread through the comment section of a channel."> + <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?215" 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/channelParticipantsMentions" >channelParticipantsMentions</a></li></ul></div> + <h1 id="dev_page_title">channelParticipantsMentions</h1> + + <div id="dev_page_content"><p>This filter is used when looking for supergroup members to mention.<br> +This filter will automatically remove anonymous admins, and return even non-participant users that replied to a specific <a href="/api/threads">thread</a> through the <a href="/api/threads#channel-comments">comment section</a> of a channel.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/channelParticipantsMentions" class="current_page_link" >channelParticipantsMentions</a>#e04b5ceb flags:<a href="/type/%23" >#</a> q:flags.0?<a href="/type/string" >string</a> top_msg_id:flags.1?<a href="/type/int" >int</a> = <a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a>;</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>q</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/string">string</a></td> +<td>Filter by user name or username</td> +</tr> +<tr> +<td><strong>top_msg_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/int">int</a></td> +<td>Look only for users that posted in this <a href="/api/threads">thread</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/ChannelParticipantsFilter">ChannelParticipantsFilter</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="#threads" id="threads" name="threads"><i class="anchor-icon"></i></a><a href="/api/threads">Threads</a></h4> +<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></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/channels.channelParticipant b/data/corefork.telegram.org/constructor/channels.channelParticipant deleted file mode 100644 index c1bf80c66d..0000000000 --- a/data/corefork.telegram.org/constructor/channels.channelParticipant +++ /dev/null @@ -1,157 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>channels.channelParticipant</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Represents a channel participant"> - <meta property="og:title" content="channels.channelParticipant"> - <meta property="og:image" content=""> - <meta property="og:description" content="Represents a channel participant"> - <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?215" 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/channels.channelParticipant" >channels.channelParticipant</a></li></ul></div> - <h1 id="dev_page_title">channels.channelParticipant</h1> - - <div id="dev_page_content"><p>Represents a channel participant</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/channels.channelParticipant" class="current_page_link" >channels.channelParticipant</a>#dfb80317 participant:<a href="/type/ChannelParticipant" >ChannelParticipant</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/channels.ChannelParticipant" >channels.ChannelParticipant</a>;</code></pre></p> -<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> -<table class="table"> -<thead> -<tr> -<th>Name</th> -<th style="text-align: center;">Type</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><strong>participant</strong></td> -<td style="text-align: center;"><a href="/type/ChannelParticipant">ChannelParticipant</a></td> -<td>The channel participant</td> -</tr> -<tr> -<td><strong>chats</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> -<td>Mentioned chats</td> -</tr> -<tr> -<td><strong>users</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>Users</td> -</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/channels.ChannelParticipant">channels.ChannelParticipant</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="//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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/core.telegram.org/constructor/updateShortChatMessage.html b/data/corefork.telegram.org/constructor/chat.html similarity index 69% rename from data/core.telegram.org/constructor/updateShortChatMessage.html rename to data/corefork.telegram.org/constructor/chat.html index 39f804e855..f97df0825d 100644 --- a/data/core.telegram.org/constructor/updateShortChatMessage.html +++ b/data/corefork.telegram.org/constructor/chat.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updateShortChatMessage</title> + <title>chat</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Shortened constructor containing info on one new incoming text message from a chat"> - <meta property="og:title" content="updateShortChatMessage"> + <meta property="description" content="Info about a group"> + <meta property="og:title" content="chat"> <meta property="og:image" content=""> - <meta property="og:description" content="Shortened constructor containing info on one new incoming text message from a chat"> + <meta property="og:description" content="Info about a group"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/updateShortChatMessage" >updateShortChatMessage</a></li></ul></div> - <h1 id="dev_page_title">updateShortChatMessage</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/chat" >chat</a></li></ul></div> + <h1 id="dev_page_title">chat</h1> - <div id="dev_page_content"><p>Shortened constructor containing info on one new incoming text message from a chat</p> + <div id="dev_page_content"><p>Info about a group</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updateShortChatMessage" class="current_page_link" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/chat" class="current_page_link" >chat</a>#41cbf256 flags:<a href="/type/%23" >#</a> creator:flags.0?true kicked:flags.1?true left:flags.2?true deactivated:flags.5?true call_active:flags.23?true call_not_empty:flags.24?true noforwards:flags.25?true id:<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> photo:<a href="/type/ChatPhoto" >ChatPhoto</a> participants_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> migrated_to:flags.6?<a href="/type/InputChannel" >InputChannel</a> admin_rights:flags.14?<a href="/type/ChatAdminRights" >ChatAdminRights</a> default_banned_rights:flags.18?<a href="/type/ChatBannedRights" >ChatBannedRights</a> = <a href="/type/Chat" >Chat</a>;</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> @@ -69,94 +69,89 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>out</strong></td> +<td><strong>creator</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 the current user is the creator of the group</td> +</tr> +<tr> +<td><strong>kicked</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>Whether the message is outgoing</td> +<td>Whether the current user was kicked from the group</td> </tr> <tr> -<td><strong>mentioned</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>Whether we were mentioned in this message</td> +<td><strong>left</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>Whether the current user has left the group</td> </tr> <tr> -<td><strong>media_unread</strong></td> +<td><strong>deactivated</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>Whether the message contains some <strong>unread</strong> mentions</td> +<td>Whether the group was <a href="/api/channel">migrated</a></td> </tr> <tr> -<td><strong>silent</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>If true, the message is a silent message, no notifications should be triggered</td> +<td><strong>call_active</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.23?<a href="/constructor/true">true</a></td> +<td>Whether a group call is currently active</td> +</tr> +<tr> +<td><strong>call_not_empty</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.24?<a href="/constructor/true">true</a></td> +<td>Whether there's anyone in the group call</td> </tr> <tr> <td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>ID of the message</td> -</tr> -<tr> -<td><strong>from_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>ID of the sender of the message</td> +<td>ID of the group</td> </tr> <tr> -<td><strong>chat_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>ID of the chat where the message was sent</td> -</tr> -<tr> -<td><strong>message</strong></td> +<td><strong>title</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Message</td> +<td>Title</td> </tr> <tr> -<td><strong>pts</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td><a href="/api/updates">PTS</a></td> +<td><strong>photo</strong></td> +<td style="text-align: center;"><a href="/type/ChatPhoto">ChatPhoto</a></td> +<td>Chat photo</td> </tr> <tr> -<td><strong>pts_count</strong></td> +<td><strong>participants_count</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td><a href="/api/updates">PTS count</a></td> +<td>Participant count</td> </tr> <tr> <td><strong>date</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td><a href="/api/updates">date</a></td> +<td>Date of creation of the group</td> </tr> <tr> -<td><strong>fwd_from</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a></td> -<td>Info about a forwarded message</td> +<td><strong>version</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Used in basic groups to reorder updates and make sure that all of them were received.</td> </tr> <tr> -<td><strong>via_bot_id</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/type/long">long</a></td> -<td>Info about the inline bot used to generate this message</td> +<td><strong>migrated_to</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/InputChannel">InputChannel</a></td> +<td>Means this chat was <a href="/api/channel">upgraded</a> to a supergroup</td> </tr> <tr> -<td><strong>reply_to</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a></td> -<td>Reply (thread) information</td> +<td><strong>admin_rights</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/ChatAdminRights">ChatAdminRights</a></td> +<td><a href="/api/rights">Admin rights</a> of the user in the group</td> </tr> <tr> -<td><strong>entities</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> -<td><a href="/api/entities">Entities</a> for styled text</td> -</tr> -<tr> -<td><strong>ttl_period</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/type/int">int</a></td> -<td>Time To Live of the message, once updateShortChatMessage.date+updateShortChatMessage.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.</td> +<td><strong>default_banned_rights</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.18?<a href="/type/ChatBannedRights">ChatBannedRights</a></td> +<td><a href="/api/rights">Default banned rights</a> of all users in the group</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">Updates</a></p> +<p><a href="/type/Chat">Chat</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> -<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> -<p>How to create styled text with message entities</p></div> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#admin-banned-default-rights" id="admin-banned-default-rights" name="admin-banned-default-rights"><i class="anchor-icon"></i></a><a href="/api/rights">Admin, banned, default rights</a></h4> +<p>How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.</p></div> </div> @@ -195,9 +190,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -214,7 +209,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/constructor/payments.paymentForm b/data/corefork.telegram.org/constructor/chatAdminRights.html similarity index 69% rename from data/corefork.telegram.org/constructor/payments.paymentForm rename to data/corefork.telegram.org/constructor/chatAdminRights.html index 617a6e6fa3..32d62c20c3 100644 --- a/data/corefork.telegram.org/constructor/payments.paymentForm +++ b/data/corefork.telegram.org/constructor/chatAdminRights.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>payments.paymentForm</title> + <title>chatAdminRights</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Payment form"> - <meta property="og:title" content="payments.paymentForm"> + <meta property="description" content="Represents the rights of an admin in a channel/supergroup."> + <meta property="og:title" content="chatAdminRights"> <meta property="og:image" content=""> - <meta property="og:description" content="Payment form"> + <meta property="og:description" content="Represents the rights of an admin in a channel/supergroup."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/payments.paymentForm" >payments.paymentForm</a></li></ul></div> - <h1 id="dev_page_title">payments.paymentForm</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/chatAdminRights" >chatAdminRights</a></li></ul></div> + <h1 id="dev_page_title">chatAdminRights</h1> - <div id="dev_page_content"><p>Payment form</p> + <div id="dev_page_content"><p>Represents the rights of an admin in a <a href="/api/channel">channel/supergroup</a>.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/payments.paymentForm" class="current_page_link" >payments.paymentForm</a>#1694761b flags:<a href="/type/%23" >#</a> can_save_credentials:flags.2?true password_missing:flags.3?true form_id:<a href="/type/long" >long</a> bot_id:<a href="/type/long" >long</a> invoice:<a href="/type/Invoice" >Invoice</a> provider_id:<a href="/type/long" >long</a> url:<a href="/type/string" >string</a> native_provider:flags.4?<a href="/type/string" >string</a> native_params:flags.4?<a href="/type/DataJSON" >DataJSON</a> saved_info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> saved_credentials:flags.1?<a href="/type/PaymentSavedCredentials" >PaymentSavedCredentials</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/payments.PaymentForm" >payments.PaymentForm</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/chatAdminRights" class="current_page_link" >chatAdminRights</a>#5fb224d5 flags:<a href="/type/%23" >#</a> change_info:flags.0?true post_messages:flags.1?true edit_messages:flags.2?true delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true manage_call:flags.11?true other:flags.12?true = <a href="/type/ChatAdminRights" >ChatAdminRights</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> @@ -69,72 +69,67 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>can_save_credentials</strong></td> +<td><strong>change_info</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>If set, allows the admin to modify the description of the <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><strong>post_messages</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>If set, allows the admin to post messages in the <a href="/api/channel">channel</a></td> +</tr> +<tr> +<td><strong>edit_messages</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>Whether the user can choose to save credentials.</td> +<td>If set, allows the admin to also edit messages from other admins in the <a href="/api/channel">channel</a></td> </tr> <tr> -<td><strong>password_missing</strong></td> +<td><strong>delete_messages</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>Indicates that the user can save payment credentials, but only after setting up a <a href="/api/srp">2FA password</a> (currently the account doesn't have a <a href="/api/srp">2FA password</a>)</td> +<td>If set, allows the admin to also delete messages from other admins in the <a href="/api/channel">channel</a></td> </tr> <tr> -<td><strong>form_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Form ID</td> +<td><strong>ban_users</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>If set, allows the admin to ban users from the <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> -<td><strong>bot_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Bot ID</td> +<td><strong>invite_users</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>If set, allows the admin to invite users in the <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> -<td><strong>invoice</strong></td> -<td style="text-align: center;"><a href="/type/Invoice">Invoice</a></td> -<td>Invoice</td> +<td><strong>pin_messages</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>If set, allows the admin to pin messages in the <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> -<td><strong>provider_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Payment provider ID.</td> +<td><strong>add_admins</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>If set, allows the admin to add other admins with the same (or more limited) permissions in the <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> -<td><strong>url</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Payment form URL</td> +<td><strong>anonymous</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>Whether this admin is anonymous</td> </tr> <tr> -<td><strong>native_provider</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/string">string</a></td> -<td>Payment provider name.<br>One of the following:<br>- <code>stripe</code></td> +<td><strong>manage_call</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/constructor/true">true</a></td> +<td>If set, allows the admin to change group call/livestream settings</td> </tr> <tr> -<td><strong>native_params</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/DataJSON">DataJSON</a></td> -<td>Contains information about the payment provider, if available, to support it natively without the need for opening the URL.<br>A JSON object that can contain the following fields:<br><br>- <code>apple_pay_merchant_id</code>: Apple Pay merchant ID<br>- <code>google_pay_public_key</code>: Google Pay public key<br>- <code>need_country</code>: True, if the user country must be provided,<br>- <code>need_zip</code>: True, if the user ZIP/postal code must be provided,<br>- <code>need_cardholder_name</code>: True, if the cardholder name must be provided<br></td> -</tr> -<tr> -<td><strong>saved_info</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/PaymentRequestedInfo">PaymentRequestedInfo</a></td> -<td>Saved server-side order information</td> -</tr> -<tr> -<td><strong>saved_credentials</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/PaymentSavedCredentials">PaymentSavedCredentials</a></td> -<td>Contains information about saved card credentials</td> -</tr> -<tr> -<td><strong>users</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>Users</td> +<td><strong>other</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.12?<a href="/constructor/true">true</a></td> +<td>Set this flag if none of the other flags are set, but you stil want the user to be an admin.</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/payments.PaymentForm">payments.PaymentForm</a></p> +<p><a href="/type/ChatAdminRights">ChatAdminRights</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> -<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/chatBannedRights.html b/data/corefork.telegram.org/constructor/chatBannedRights.html new file mode 100644 index 0000000000..673aa2fe31 --- /dev/null +++ b/data/corefork.telegram.org/constructor/chatBannedRights.html @@ -0,0 +1,216 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>chatBannedRights</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Represents the rights of a normal user in a supergroup/channel/chat. In this case, the flags are inverted: if set, a flag does not allow a user to do X."> + <meta property="og:title" content="chatBannedRights"> + <meta property="og:image" content=""> + <meta property="og:description" content="Represents the rights of a normal user in a supergroup/channel/chat. In this case, the flags are inverted: if set, a flag does not allow a user to do X."> + <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?215" 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/chatBannedRights" >chatBannedRights</a></li></ul></div> + <h1 id="dev_page_title">chatBannedRights</h1> + + <div id="dev_page_content"><p>Represents the rights of a normal user in a <a href="/api/channel">supergroup/channel/chat</a>. In this case, the flags are inverted: if set, a flag <strong>does not allow</strong> a user to do X.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/chatBannedRights" class="current_page_link" >chatBannedRights</a>#9f120418 flags:<a href="/type/%23" >#</a> view_messages:flags.0?true send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true invite_users:flags.15?true pin_messages:flags.17?true until_date:<a href="/type/int" >int</a> = <a href="/type/ChatBannedRights" >ChatBannedRights</a>;</code></pre></p> +<h3><a class="anchor" name="parameters" href="#parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th align="center">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>flags</strong></td> +<td 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>view_messages</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to view messages in a <a href="/api/channel">supergroup/channel/chat</a></td> +</tr> +<tr> +<td><strong>send_messages</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send messages in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_media</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send any media in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_stickers</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send stickers in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_gifs</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send gifs in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_games</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send games in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_inline</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to use inline bots in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>embed_links</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to embed links in the messages of a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>send_polls</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/constructor/true">true</a></td> +<td>If set, does not allow a user to send polls in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>change_info</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/constructor/true">true</a></td> +<td>If set, does not allow any user to change the description of a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>invite_users</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.15?<a href="/constructor/true">true</a></td> +<td>If set, does not allow any user to invite users in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>pin_messages</strong></td> +<td align="center"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.17?<a href="/constructor/true">true</a></td> +<td>If set, does not allow any user to pin messages in a <a href="/api/channel">supergroup/chat</a></td> +</tr> +<tr> +<td><strong>until_date</strong></td> +<td align="center"><a href="/type/int">int</a></td> +<td>Validity of said permissions (it is considered forever any value less then 30 seconds or more then 366 days).</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" name="type" href="#type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/ChatBannedRights">ChatBannedRights</a></p> +<h3><a class="anchor" name="related-pages" href="#related-pages"><i class="anchor-icon"></i></a>Related pages</h3> +<h4><a class="anchor" name="channels" href="#channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/chatFull.html b/data/corefork.telegram.org/constructor/chatFull.html new file mode 100644 index 0000000000..9e961c7abc --- /dev/null +++ b/data/corefork.telegram.org/constructor/chatFull.html @@ -0,0 +1,231 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>chatFull</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Detailed chat info"> + <meta property="og:title" content="chatFull"> + <meta property="og:image" content=""> + <meta property="og:description" content="Detailed chat 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?215" 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/chatFull" >chatFull</a></li></ul></div> + <h1 id="dev_page_title">chatFull</h1> + + <div id="dev_page_content"><p>Detailed chat info</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/chatFull" class="current_page_link" >chatFull</a>#4dbdc099 flags:<a href="/type/%23" >#</a> can_set_username:flags.7?true has_scheduled:flags.8?true id:<a href="/type/long" >long</a> about:<a href="/type/string" >string</a> participants:<a href="/type/ChatParticipants" >ChatParticipants</a> chat_photo:flags.2?<a href="/type/Photo" >Photo</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> exported_invite:flags.13?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> bot_info:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotInfo" >BotInfo</a>> pinned_msg_id:flags.6?<a href="/type/int" >int</a> folder_id:flags.11?<a href="/type/int" >int</a> call:flags.12?<a href="/type/InputGroupCall" >InputGroupCall</a> ttl_period:flags.14?<a href="/type/int" >int</a> groupcall_default_join_as:flags.15?<a href="/type/Peer" >Peer</a> theme_emoticon:flags.16?<a href="/type/string" >string</a> = <a href="/type/ChatFull" >ChatFull</a>;</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>can_set_username</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>Can we change the username of this chat</td> +</tr> +<tr> +<td><strong>has_scheduled</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>Whether <a href="/api/scheduled-messages">scheduled messages</a> are available</td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>ID of the chat</td> +</tr> +<tr> +<td><strong>about</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>About string for this chat</td> +</tr> +<tr> +<td><strong>participants</strong></td> +<td style="text-align: center;"><a href="/type/ChatParticipants">ChatParticipants</a></td> +<td>Participant list</td> +</tr> +<tr> +<td><strong>chat_photo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/Photo">Photo</a></td> +<td>Chat photo</td> +</tr> +<tr> +<td><strong>notify_settings</strong></td> +<td style="text-align: center;"><a href="/type/PeerNotifySettings">PeerNotifySettings</a></td> +<td>Notification settings</td> +</tr> +<tr> +<td><strong>exported_invite</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.13?<a href="/type/ExportedChatInvite">ExportedChatInvite</a></td> +<td>Chat invite</td> +</tr> +<tr> +<td><strong>bot_info</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/BotInfo">BotInfo</a>></td> +<td>Info about bots that are in this chat</td> +</tr> +<tr> +<td><strong>pinned_msg_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/int">int</a></td> +<td>Message ID of the last <a href="/api/pin">pinned message</a></td> +</tr> +<tr> +<td><strong>folder_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/type/int">int</a></td> +<td><a href="/api/folders#peer-folders">Peer folder ID, for more info click here</a></td> +</tr> +<tr> +<td><strong>call</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.12?<a href="/type/InputGroupCall">InputGroupCall</a></td> +<td>Group call information</td> +</tr> +<tr> +<td><strong>ttl_period</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/int">int</a></td> +<td>Time-To-Live of messages sent by the current user to this chat</td> +</tr> +<tr> +<td><strong>groupcall_default_join_as</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.15?<a href="/type/Peer">Peer</a></td> +<td>When using <a href="/method/phone.getGroupCallJoinAs">phone.getGroupCallJoinAs</a> to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.</td> +</tr> +<tr> +<td><strong>theme_emoticon</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.16?<a href="/type/string">string</a></td> +<td>Emoji representing a specific chat theme</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/ChatFull">ChatFull</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="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages</p> +<h4><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a><a href="/api/pin">Pinned messages</a></h4> +<p>Telegram allows pinning multiple messages on top of a specific chat.</p> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</p> +<h4><a class="anchor" href="#phonegetgroupcalljoinas" id="phonegetgroupcalljoinas" name="phonegetgroupcalljoinas"><i class="anchor-icon"></i></a><a href="/method/phone.getGroupCallJoinAs">phone.getGroupCallJoinAs</a></h4> +<p>Get a list of peers that can be used to join a group call, presenting yourself as a specific user/channel.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/config.html b/data/corefork.telegram.org/constructor/config.html new file mode 100644 index 0000000000..9838795bc9 --- /dev/null +++ b/data/corefork.telegram.org/constructor/config.html @@ -0,0 +1,420 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>config</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Current configuration"> + <meta property="og:title" content="config"> + <meta property="og:image" content=""> + <meta property="og:description" content="Current configuration"> + <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?215" 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/config" >config</a></li></ul></div> + <h1 id="dev_page_title">config</h1> + + <div id="dev_page_content"><p>Current configuration</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/config" class="current_page_link" >config</a>#330b4067 flags:<a href="/type/%23" >#</a> phonecalls_enabled:flags.1?true default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true ignore_phone_entities:flags.5?true revoke_pm_inbox:flags.6?true blocked_mode:flags.8?true pfs_enabled:flags.13?true date:<a href="/type/int" >int</a> expires:<a href="/type/int" >int</a> test_mode:<a href="/type/Bool" >Bool</a> this_dc:<a href="/type/int" >int</a> dc_options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DcOption" >DcOption</a>> dc_txt_domain_name:<a href="/type/string" >string</a> chat_size_max:<a href="/type/int" >int</a> megagroup_size_max:<a href="/type/int" >int</a> forwarded_count_max:<a href="/type/int" >int</a> online_update_period_ms:<a href="/type/int" >int</a> offline_blur_timeout_ms:<a href="/type/int" >int</a> offline_idle_timeout_ms:<a href="/type/int" >int</a> online_cloud_timeout_ms:<a href="/type/int" >int</a> notify_cloud_delay_ms:<a href="/type/int" >int</a> notify_default_delay_ms:<a href="/type/int" >int</a> push_chat_period_ms:<a href="/type/int" >int</a> push_chat_limit:<a href="/type/int" >int</a> saved_gifs_limit:<a href="/type/int" >int</a> edit_time_limit:<a href="/type/int" >int</a> revoke_time_limit:<a href="/type/int" >int</a> revoke_pm_time_limit:<a href="/type/int" >int</a> rating_e_decay:<a href="/type/int" >int</a> stickers_recent_limit:<a href="/type/int" >int</a> stickers_faved_limit:<a href="/type/int" >int</a> channels_read_media_period:<a href="/type/int" >int</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> pinned_dialogs_count_max:<a href="/type/int" >int</a> pinned_infolder_count_max:<a href="/type/int" >int</a> call_receive_timeout_ms:<a href="/type/int" >int</a> call_ring_timeout_ms:<a href="/type/int" >int</a> call_connect_timeout_ms:<a href="/type/int" >int</a> call_packet_timeout_ms:<a href="/type/int" >int</a> me_url_prefix:<a href="/type/string" >string</a> autoupdate_url_prefix:flags.7?<a href="/type/string" >string</a> gif_search_username:flags.9?<a href="/type/string" >string</a> venue_search_username:flags.10?<a href="/type/string" >string</a> img_search_username:flags.11?<a href="/type/string" >string</a> static_maps_provider:flags.12?<a href="/type/string" >string</a> caption_length_max:<a href="/type/int" >int</a> message_length_max:<a href="/type/int" >int</a> webfile_dc_id:<a href="/type/int" >int</a> suggested_lang_code:flags.2?<a href="/type/string" >string</a> lang_pack_version:flags.2?<a href="/type/int" >int</a> base_lang_pack_version:flags.2?<a href="/type/int" >int</a> = <a href="/type/Config" >Config</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>phonecalls_enabled</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>Whether phone calls can be used</td> +</tr> +<tr> +<td><strong>default_p2p_contacts</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>Whether the client should use P2P by default for phone calls with contacts</td> +</tr> +<tr> +<td><strong>preload_featured_stickers</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>Whether the client should preload featured stickers</td> +</tr> +<tr> +<td><strong>ignore_phone_entities</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>Whether the client should ignore phone <a href="/api/entities">entities</a></td> +</tr> +<tr> +<td><strong>revoke_pm_inbox</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>Whether incoming private messages can be deleted for both participants</td> +</tr> +<tr> +<td><strong>blocked_mode</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>Indicates that telegram is <em>probably</em> censored by governments/ISPs in the current region</td> +</tr> +<tr> +<td><strong>pfs_enabled</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>Whether <a href="/api/pfs">pfs</a> was used</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Current date at the server</td> +</tr> +<tr> +<td><strong>expires</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Expiration date of this config: when it expires it'll have to be refetched using <a href="/method/help.getConfig">help.getConfig</a></td> +</tr> +<tr> +<td><strong>test_mode</strong></td> +<td style="text-align: center;"><a href="/type/Bool">Bool</a></td> +<td>Whether we're connected to the test DCs</td> +</tr> +<tr> +<td><strong>this_dc</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>ID of the DC that returned the reply</td> +</tr> +<tr> +<td><strong>dc_options</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/DcOption">DcOption</a>></td> +<td>DC IP list</td> +</tr> +<tr> +<td><strong>dc_txt_domain_name</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Domain name for fetching encrypted DC list from DNS TXT record</td> +</tr> +<tr> +<td><strong>chat_size_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum member count for normal <a href="/api/channel">groups</a></td> +</tr> +<tr> +<td><strong>megagroup_size_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum member count for <a href="/api/channel">supergroups</a></td> +</tr> +<tr> +<td><strong>forwarded_count_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum number of messages that can be forwarded at once using <a href="/method/messages.forwardMessages">messages.forwardMessages</a>.</td> +</tr> +<tr> +<td><strong>online_update_period_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The client should <a href="/method/account.updateStatus">update its online status</a> every N milliseconds</td> +</tr> +<tr> +<td><strong>offline_blur_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Delay before offline status needs to be sent to the server</td> +</tr> +<tr> +<td><strong>offline_idle_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Time without any user activity after which it should be treated offline</td> +</tr> +<tr> +<td><strong>online_cloud_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If we are offline, but were online from some other client in last <code>online_cloud_timeout_ms</code> milliseconds after we had gone offline, then delay offline notification for <code>notify_cloud_delay_ms</code> milliseconds.</td> +</tr> +<tr> +<td><strong>notify_cloud_delay_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If we are offline, but online from some other client then delay sending the offline notification for <code>notify_cloud_delay_ms</code> milliseconds.</td> +</tr> +<tr> +<td><strong>notify_default_delay_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If some other client is online, then delay notification for <code>notification_default_delay_ms</code> milliseconds</td> +</tr> +<tr> +<td><strong>push_chat_period_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Not for client use</td> +</tr> +<tr> +<td><strong>push_chat_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Not for client use</td> +</tr> +<tr> +<td><strong>saved_gifs_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum count of saved gifs</td> +</tr> +<tr> +<td><strong>edit_time_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Only messages with age smaller than the one specified can be edited</td> +</tr> +<tr> +<td><strong>revoke_time_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Only channel/supergroup messages with age smaller than the specified can be deleted</td> +</tr> +<tr> +<td><strong>revoke_pm_time_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Only private messages with age smaller than the specified can be deleted</td> +</tr> +<tr> +<td><strong>rating_e_decay</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Exponential decay rate for computing <a href="/api/top-rating">top peer rating</a></td> +</tr> +<tr> +<td><strong>stickers_recent_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum number of recent stickers</td> +</tr> +<tr> +<td><strong>stickers_faved_limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum number of faved stickers</td> +</tr> +<tr> +<td><strong>channels_read_media_period</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Indicates that round videos (video notes) and voice messages sent in channels and older than the specified period must be marked as read</td> +</tr> +<tr> +<td><strong>tmp_sessions</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>Temporary <a href="/passport">passport</a> sessions</td> +</tr> +<tr> +<td><strong>pinned_dialogs_count_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum count of pinned dialogs</td> +</tr> +<tr> +<td><strong>pinned_infolder_count_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum count of dialogs per folder</td> +</tr> +<tr> +<td><strong>call_receive_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum allowed outgoing ring time in VoIP calls: if the user we're calling doesn't reply within the specified time (in milliseconds), we should hang up the call</td> +</tr> +<tr> +<td><strong>call_ring_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum allowed incoming ring time in VoIP calls: if the current user doesn't reply within the specified time (in milliseconds), the call will be automatically refused</td> +</tr> +<tr> +<td><strong>call_connect_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>VoIP connection timeout: if the instance of libtgvoip on the other side of the call doesn't connect to our instance of libtgvoip within the specified time (in milliseconds), the call must be aborted</td> +</tr> +<tr> +<td><strong>call_packet_timeout_ms</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If during a VoIP call a packet isn't received for the specified period of time, the call must be aborted</td> +</tr> +<tr> +<td><strong>me_url_prefix</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The domain to use to parse in-app links.<br>For example t.me indicates that t.me/username links should parsed to @username, t.me/addsticker/name should be parsed to the appropriate stickerset and so on...</td> +</tr> +<tr> +<td><strong>autoupdate_url_prefix</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/type/string">string</a></td> +<td>URL to use to auto-update the current app</td> +</tr> +<tr> +<td><strong>gif_search_username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.9?<a href="/type/string">string</a></td> +<td>Username of the bot to use to search for GIFs</td> +</tr> +<tr> +<td><strong>venue_search_username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/string">string</a></td> +<td>Username of the bot to use to search for venues</td> +</tr> +<tr> +<td><strong>img_search_username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/type/string">string</a></td> +<td>Username of the bot to use for image search</td> +</tr> +<tr> +<td><strong>static_maps_provider</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.12?<a href="/type/string">string</a></td> +<td>ID of the map provider to use for venues</td> +</tr> +<tr> +<td><strong>caption_length_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum length of caption (length in utf8 codepoints)</td> +</tr> +<tr> +<td><strong>message_length_max</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum length of messages (length in utf8 codepoints)</td> +</tr> +<tr> +<td><strong>webfile_dc_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>DC ID to use to download <a href="/api/files">webfiles</a></td> +</tr> +<tr> +<td><strong>suggested_lang_code</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td> +<td>Suggested language code</td> +</tr> +<tr> +<td><strong>lang_pack_version</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> +<td>Language pack version</td> +</tr> +<tr> +<td><strong>base_lang_pack_version</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> +<td>Basic language pack version</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/Config">Config</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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a><a href="/api/pfs">Perfect Forward Secrecy</a></h4> +<p>Binding temporary authorization key to permanent ones.</p> +<h4><a class="anchor" href="#helpgetconfig" id="helpgetconfig" name="helpgetconfig"><i class="anchor-icon"></i></a><a href="/method/help.getConfig">help.getConfig</a></h4> +<p>Returns current configuration, including data center configuration.</p> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#messagesforwardmessages" id="messagesforwardmessages" name="messagesforwardmessages"><i class="anchor-icon"></i></a><a href="/method/messages.forwardMessages">messages.forwardMessages</a></h4> +<p>Forwards messages by their IDs.</p> +<h4><a class="anchor" href="#accountupdatestatus" id="accountupdatestatus" name="accountupdatestatus"><i class="anchor-icon"></i></a><a href="/method/account.updateStatus">account.updateStatus</a></h4> +<p>Updates online user status.</p> +<h4><a class="anchor" href="#top-peer-rating" id="top-peer-rating" name="top-peer-rating"><i class="anchor-icon"></i></a><a href="/api/top-rating">Top peer rating</a></h4> +<p>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).</p> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4> +<h4><a class="anchor" href="#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></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/updates.state b/data/corefork.telegram.org/constructor/decryptedMessageActionNotifyLayer.html similarity index 82% rename from data/corefork.telegram.org/constructor/updates.state rename to data/corefork.telegram.org/constructor/decryptedMessageActionNotifyLayer.html index e67005de57..d1f8f0e6b9 100644 --- a/data/corefork.telegram.org/constructor/updates.state +++ b/data/corefork.telegram.org/constructor/decryptedMessageActionNotifyLayer.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updates.state</title> + <title>decryptedMessageActionNotifyLayer</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Updates state."> - <meta property="og:title" content="updates.state"> + <meta property="description" content="A notification stating the API layer that is used by the client. You should use your current layer and take notice of the layer used on the other side of a conversation when sending messages."> + <meta property="og:title" content="decryptedMessageActionNotifyLayer"> <meta property="og:image" content=""> - <meta property="og:description" content="Updates state."> + <meta property="og:description" content="A notification stating the API layer that is used by the client. You should use your current layer and take notice of the layer used on the other side of a conversation when sending messages."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.state" >updates.state</a></li></ul></div> - <h1 id="dev_page_title">updates.state</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/decryptedMessageActionNotifyLayer" >decryptedMessageActionNotifyLayer</a></li></ul></div> + <h1 id="dev_page_title">decryptedMessageActionNotifyLayer</h1> - <div id="dev_page_content"><p>Updates state.</p> + <div id="dev_page_content"><p>A notification stating the API layer that is used by the client. You should use your current layer and take notice of the layer used on the other side of a conversation when sending messages.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,8 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updates.state" class="current_page_link" >updates.state</a>#a56c2a3e pts:<a href="/type/int" >int</a> qts:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> unread_count:<a href="/type/int" >int</a> = <a href="/type/updates.State" >updates.State</a>;</code></pre></p> +<pre class="page_scheme"><code>===17=== +<a href="/constructor/decryptedMessageActionNotifyLayer" class="current_page_link" >decryptedMessageActionNotifyLayer</a>#f3048883 layer:<a href="/type/int" >int</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</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> @@ -64,37 +65,15 @@ </thead> <tbody> <tr> -<td><strong>pts</strong></td> +<td><strong>layer</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of events occured in a text box</td> -</tr> -<tr> -<td><strong>qts</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Position in a sequence of updates in secret chats. For further detailes refer to article <a href="/api/end-to-end">secret chats</a><br>Parameter was added in <a href="/api/layers#layer-8">eigth layer</a>.</td> -</tr> -<tr> -<td><strong>date</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Date of condition</td> -</tr> -<tr> -<td><strong>seq</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of sent updates</td> -</tr> -<tr> -<td><strong>unread_count</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of unread messages</td> +<td>Layer number, must be <strong>17</strong> or higher (this contructor was introduced in <a href="/api/layers#layer-17">Layer 17</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/updates.State">updates.State</a></p> +<p><a href="/type/DecryptedMessageAction">DecryptedMessageAction</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="#end-to-end-encryption-secret-chats" id="end-to-end-encryption-secret-chats" name="end-to-end-encryption-secret-chats"><i class="anchor-icon"></i></a><a href="/api/end-to-end">End-to-End Encryption, Secret Chats</a></h4> -<p>New feature for end-to-end-encrypted messaging.</p> <h4><a class="anchor" href="#layers" id="layers" name="layers"><i class="anchor-icon"></i></a><a href="/api/layers">Layers</a></h4> <p>Below you will find information on schema changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</a>.</p></div> diff --git a/data/corefork.telegram.org/constructor/decryptedMessageLayer.html b/data/corefork.telegram.org/constructor/decryptedMessageLayer.html new file mode 100644 index 0000000000..91eb77ea6e --- /dev/null +++ b/data/corefork.telegram.org/constructor/decryptedMessageLayer.html @@ -0,0 +1,173 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>decryptedMessageLayer</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Sets the layer number for the contents of an encrypted message."> + <meta property="og:title" content="decryptedMessageLayer"> + <meta property="og:image" content=""> + <meta property="og:description" content="Sets the layer number for the contents of an encrypted message."> + <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?215" 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/decryptedMessageLayer" >decryptedMessageLayer</a></li></ul></div> + <h1 id="dev_page_title">decryptedMessageLayer</h1> + + <div id="dev_page_content"><p>Sets the layer number for the contents of an encrypted message.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code>===17=== +<a href="/constructor/decryptedMessageLayer" class="current_page_link" >decryptedMessageLayer</a>#1be31789 random_bytes:<a href="/type/bytes" >bytes</a> layer:<a href="/type/int" >int</a> in_seq_no:<a href="/type/int" >int</a> out_seq_no:<a href="/type/int" >int</a> message:<a href="/type/DecryptedMessage" >DecryptedMessage</a> = <a href="/type/DecryptedMessageLayer" >DecryptedMessageLayer</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>random_bytes</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Set of random bytes to prevent content recognition in short encrypted messages.<br>Clients are required to check that there are at least 15 random bytes included in each message. Messages with less than 15 random bytes must be ignored.<br>Parameter moved here from <a href="/constructor/decryptedMessage">decryptedMessage</a> in <a href="/api/layers#layer-17">Layer 17</a>.</td> +</tr> +<tr> +<td><strong>layer</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Layer number. Mimimal value - <strong>17</strong> (the layer in which the constructor was added).</td> +</tr> +<tr> +<td><strong>in_seq_no</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>2x the number of messages in the sender's inbox (including deleted and service messages), incremented by 1 if current user was not the chat creator<br>Parameter added in <a href="/api/layers#layer-17">Layer 17</a>.</td> +</tr> +<tr> +<td><strong>out_seq_no</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>2x the number of messages in the recipient's inbox (including deleted and service messages), incremented by 1 if current user was the chat creator<br>Parameter added in <a href="/api/layers#layer-17">Layer 17</a>.</td> +</tr> +<tr> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/DecryptedMessage">DecryptedMessage</a></td> +<td>The content of message itself</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/DecryptedMessageLayer">DecryptedMessageLayer</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="#decryptedmessage" id="decryptedmessage" name="decryptedmessage"><i class="anchor-icon"></i></a><a href="/constructor/decryptedMessage">decryptedMessage</a></h4> +<p>Contents of an encrypted message.</p> +<h4><a class="anchor" href="#layers" id="layers" name="layers"><i class="anchor-icon"></i></a><a href="/api/layers">Layers</a></h4> +<p>Below you will find information on schema changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/decryptedMessageMediaPhoto.html b/data/corefork.telegram.org/constructor/decryptedMessageMediaPhoto.html new file mode 100644 index 0000000000..540a8d5ba9 --- /dev/null +++ b/data/corefork.telegram.org/constructor/decryptedMessageMediaPhoto.html @@ -0,0 +1,191 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>decryptedMessageMediaPhoto</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Photo attached to an encrypted message."> + <meta property="og:title" content="decryptedMessageMediaPhoto"> + <meta property="og:image" content=""> + <meta property="og:description" content="Photo attached to an encrypted message."> + <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?215" 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/decryptedMessageMediaPhoto" >decryptedMessageMediaPhoto</a></li></ul></div> + <h1 id="dev_page_title">decryptedMessageMediaPhoto</h1> + + <div id="dev_page_content"><p>Photo attached to an encrypted message.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code>===8=== +<a href="/constructor/decryptedMessageMediaPhoto" class="current_page_link" >decryptedMessageMediaPhoto</a>#32798a8c thumb:<a href="/type/bytes" >bytes</a> thumb_w:<a href="/type/int" >int</a> thumb_h:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; + +===45=== +<a href="/constructor/decryptedMessageMediaPhoto" class="current_page_link" >decryptedMessageMediaPhoto</a>#f1fa8d78 thumb:<a href="/type/bytes" >bytes</a> thumb_w:<a href="/type/int" >int</a> thumb_h:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> caption:<a href="/type/string" >string</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</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>thumb</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90)</td> +</tr> +<tr> +<td><strong>thumb_w</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Thumbnail width</td> +</tr> +<tr> +<td><strong>thumb_h</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Thumbnail height</td> +</tr> +<tr> +<td><strong>w</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Photo width</td> +</tr> +<tr> +<td><strong>h</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Photo height</td> +</tr> +<tr> +<td><strong>size</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Size of the photo in bytes</td> +</tr> +<tr> +<td><strong>key</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Key to decrypt an attached file with a full version</td> +</tr> +<tr> +<td><strong>iv</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Initialization vector</td> +</tr> +<tr> +<td><strong>caption</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Caption</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/DecryptedMessageMedia">DecryptedMessageMedia</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/updateBotShippingQuery.html b/data/corefork.telegram.org/constructor/decryptedMessageService.html similarity index 84% rename from data/corefork.telegram.org/constructor/updateBotShippingQuery.html rename to data/corefork.telegram.org/constructor/decryptedMessageService.html index d61b77ff14..5671030eee 100644 --- a/data/corefork.telegram.org/constructor/updateBotShippingQuery.html +++ b/data/corefork.telegram.org/constructor/decryptedMessageService.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updateBotShippingQuery</title> + <title>decryptedMessageService</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="This object contains information about an incoming shipping query."> - <meta property="og:title" content="updateBotShippingQuery"> + <meta property="description" content="Contents of an encrypted service message."> + <meta property="og:title" content="decryptedMessageService"> <meta property="og:image" content=""> - <meta property="og:description" content="This object contains information about an incoming shipping query."> + <meta property="og:description" content="Contents of an encrypted service message."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/updateBotShippingQuery" >updateBotShippingQuery</a></li></ul></div> - <h1 id="dev_page_title">updateBotShippingQuery</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/decryptedMessageService" >decryptedMessageService</a></li></ul></div> + <h1 id="dev_page_title">decryptedMessageService</h1> - <div id="dev_page_content"><p>This object contains information about an incoming shipping query.</p> + <div id="dev_page_content"><p>Contents of an encrypted service message.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updateBotShippingQuery" class="current_page_link" >updateBotShippingQuery</a>#b5aefd7d query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> shipping_address:<a href="/type/PostAddress" >PostAddress</a> = <a href="/type/Update" >Update</a>;</code></pre></p> +<pre class="page_scheme"><code>===8=== +<a href="/constructor/decryptedMessageService" class="current_page_link" >decryptedMessageService</a>#aa48327d random_id:<a href="/type/long" >long</a> random_bytes:<a href="/type/bytes" >bytes</a> action:<a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a> = <a href="/type/DecryptedMessage" >DecryptedMessage</a>; + +===17=== +<a href="/constructor/decryptedMessageService" class="current_page_link" >decryptedMessageService</a>#73164160 random_id:<a href="/type/long" >long</a> action:<a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a> = <a href="/type/DecryptedMessage" >DecryptedMessage</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> @@ -64,29 +68,19 @@ </thead> <tbody> <tr> -<td><strong>query_id</strong></td> +<td><strong>random_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Unique query identifier</td> +<td>Random message ID, assigned by the message author.<br>Must be equal to the ID passed to the sending method.</td> </tr> <tr> -<td><strong>user_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>User who sent the query</td> -</tr> -<tr> -<td><strong>payload</strong></td> -<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> -<td>Bot specified invoice payload</td> -</tr> -<tr> -<td><strong>shipping_address</strong></td> -<td style="text-align: center;"><a href="/type/PostAddress">PostAddress</a></td> -<td>User specified shipping address</td> +<td><strong>action</strong></td> +<td style="text-align: center;"><a href="/type/DecryptedMessageAction">DecryptedMessageAction</a></td> +<td>Action relevant to the service message</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></div> +<p><a href="/type/DecryptedMessage">DecryptedMessage</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/dialogFilter.html b/data/corefork.telegram.org/constructor/dialogFilter.html new file mode 100644 index 0000000000..d626f4f8a4 --- /dev/null +++ b/data/corefork.telegram.org/constructor/dialogFilter.html @@ -0,0 +1,220 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>dialogFilter</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Dialog filter AKA folder"> + <meta property="og:title" content="dialogFilter"> + <meta property="og:image" content=""> + <meta property="og:description" content="Dialog filter AKA folder"> + <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?215" 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/dialogFilter" >dialogFilter</a></li></ul></div> + <h1 id="dev_page_title">dialogFilter</h1> + + <div id="dev_page_content"><p>Dialog filter AKA <a href="/api/folders">folder</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/dialogFilter" class="current_page_link" >dialogFilter</a>#7438f7e8 flags:<a href="/type/%23" >#</a> contacts:flags.0?true non_contacts:flags.1?true groups:flags.2?true broadcasts:flags.3?true bots:flags.4?true exclude_muted:flags.11?true exclude_read:flags.12?true exclude_archived:flags.13?true id:<a href="/type/int" >int</a> title:<a href="/type/string" >string</a> emoticon:flags.25?<a href="/type/string" >string</a> pinned_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPeer" >InputPeer</a>> include_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPeer" >InputPeer</a>> exclude_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputPeer" >InputPeer</a>> = <a href="/type/DialogFilter" >DialogFilter</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>contacts</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 to include all contacts in this <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><strong>non_contacts</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>Whether to include all non-contacts in this <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><strong>groups</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>Whether to include all groups in this <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><strong>broadcasts</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>Whether to include all channels in this <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><strong>bots</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>Whether to include all bots in this <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><strong>exclude_muted</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>Whether to exclude muted chats from this <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><strong>exclude_read</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>Whether to exclude read chats from this <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><strong>exclude_archived</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>Whether to exclude archived chats from this <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/folders">Folder</a> ID</td> +</tr> +<tr> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td><a href="/api/folders">Folder</a> name</td> +</tr> +<tr> +<td><strong>emoticon</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/type/string">string</a></td> +<td><a href="/api/folders">Folder</a> emoticon</td> +</tr> +<tr> +<td><strong>pinned_peers</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/InputPeer">InputPeer</a>></td> +<td>Pinned chats, <a href="/api/folders">folders</a> can have unlimited pinned chats</td> +</tr> +<tr> +<td><strong>include_peers</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/InputPeer">InputPeer</a>></td> +<td>Include the following chats in this <a href="/api/folders">folder</a></td> +</tr> +<tr> +<td><strong>exclude_peers</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/InputPeer">InputPeer</a>></td> +<td>Exclude the following chats from this <a href="/api/folders">folder</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/DialogFilter">DialogFilter</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="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/disabledFeature.html b/data/corefork.telegram.org/constructor/disabledFeature.html deleted file mode 100644 index 165c0b6b5e..0000000000 --- a/data/corefork.telegram.org/constructor/disabledFeature.html +++ /dev/null @@ -1,163 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>disabledFeature</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="A disabled feature -Parameters -feature -string -The feature that was disabled -description -string -Description -Type -DisabledFeature"> - <meta property="og:title" content="disabledFeature"> - <meta property="og:image" content=""> - <meta property="og:description" content="A disabled feature -Parameters -feature -string -The feature that was disabled -description -string -Description -Type -DisabledFeature"> - <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?215" 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/disabledFeature" >disabledFeature</a></li></ul></div> - <h1 id="dev_page_title">disabledFeature</h1> - - <div id="dev_page_content"><p>A disabled feature</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code>Constructor schema is available as of layer 76. <a href="?layer=76">Switch »</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"> -<tbody> -<tr> -<td><strong>feature</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>The feature that was disabled</td> -</tr> -<tr> -<td><strong>description</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Description</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/DisabledFeature">DisabledFeature</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="//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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/core.telegram.org/constructor/encryptedChatWaiting.html b/data/corefork.telegram.org/constructor/encryptedChat.html similarity index 84% rename from data/core.telegram.org/constructor/encryptedChatWaiting.html rename to data/corefork.telegram.org/constructor/encryptedChat.html index 66940da991..51d0d8cf66 100644 --- a/data/core.telegram.org/constructor/encryptedChatWaiting.html +++ b/data/corefork.telegram.org/constructor/encryptedChat.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>encryptedChatWaiting</title> + <title>encryptedChat</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Chat waiting for approval of second participant."> - <meta property="og:title" content="encryptedChatWaiting"> + <meta property="description" content="Encrypted chat"> + <meta property="og:title" content="encryptedChat"> <meta property="og:image" content=""> - <meta property="og:description" content="Chat waiting for approval of second participant."> + <meta property="og:description" content="Encrypted chat"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/encryptedChatWaiting" >encryptedChatWaiting</a></li></ul></div> - <h1 id="dev_page_title">encryptedChatWaiting</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/encryptedChat" >encryptedChat</a></li></ul></div> + <h1 id="dev_page_title">encryptedChat</h1> - <div id="dev_page_content"><p>Chat waiting for approval of second participant.</p> + <div id="dev_page_content"><p>Encrypted chat</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/encryptedChatWaiting" class="current_page_link" >encryptedChatWaiting</a>#66b25953 id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/encryptedChat" class="current_page_link" >encryptedChat</a>#61f0d4c7 id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_a_or_b:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>;</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> @@ -71,12 +71,12 @@ <tr> <td><strong>access_hash</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Checking sum depending on user ID</td> +<td>Check sum dependant on the user ID</td> </tr> <tr> <td><strong>date</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Date of chat creation</td> +<td>Date chat was created</td> </tr> <tr> <td><strong>admin_id</strong></td> @@ -86,7 +86,17 @@ <tr> <td><strong>participant_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>ID of second chat participant</td> +<td>ID of the second chat participant</td> +</tr> +<tr> +<td><strong>g_a_or_b</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td><code>B = g ^ b mod p</code>, if the currently authorized user is the chat's creator,<br>or <code>A = g ^ a mod p</code> otherwise<br>See <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">Wikipedia</a> for more info</td> +</tr> +<tr> +<td><strong>key_fingerprint</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>64-bit fingerprint of received key</td> </tr> </tbody> </table> @@ -130,9 +140,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -149,7 +159,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/constructor/webPageAttributeTheme.html b/data/corefork.telegram.org/constructor/encryptedChatDiscarded.html similarity index 87% rename from data/corefork.telegram.org/constructor/webPageAttributeTheme.html rename to data/corefork.telegram.org/constructor/encryptedChatDiscarded.html index cc58fc89e7..291feef357 100644 --- a/data/corefork.telegram.org/constructor/webPageAttributeTheme.html +++ b/data/corefork.telegram.org/constructor/encryptedChatDiscarded.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>webPageAttributeTheme</title> + <title>encryptedChatDiscarded</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Page theme"> - <meta property="og:title" content="webPageAttributeTheme"> + <meta property="description" content="Discarded or deleted chat."> + <meta property="og:title" content="encryptedChatDiscarded"> <meta property="og:image" content=""> - <meta property="og:description" content="Page theme"> + <meta property="og:description" content="Discarded or deleted chat."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/webPageAttributeTheme" >webPageAttributeTheme</a></li></ul></div> - <h1 id="dev_page_title">webPageAttributeTheme</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/encryptedChatDiscarded" >encryptedChatDiscarded</a></li></ul></div> + <h1 id="dev_page_title">encryptedChatDiscarded</h1> - <div id="dev_page_content"><p>Page theme</p> + <div id="dev_page_content"><p>Discarded or deleted chat.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/webPageAttributeTheme" class="current_page_link" >webPageAttributeTheme</a>#54b56617 flags:<a href="/type/%23" >#</a> documents:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> settings:flags.1?<a href="/type/ThemeSettings" >ThemeSettings</a> = <a href="/type/WebPageAttribute" >WebPageAttribute</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/encryptedChatDiscarded" class="current_page_link" >encryptedChatDiscarded</a>#1e1c7c45 flags:<a href="/type/%23" >#</a> history_deleted:flags.0?true id:<a href="/type/int" >int</a> = <a href="/type/EncryptedChat" >EncryptedChat</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> @@ -69,19 +69,19 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>documents</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/Document">Document</a>></td> -<td>Theme files</td> +<td><strong>history_deleted</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/constructor/true">true</a></td> +<td>Whether both users of this secret chat should also remove all of its messages</td> </tr> <tr> -<td><strong>settings</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/ThemeSettings">ThemeSettings</a></td> -<td>Theme settings</td> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Chat ID</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/WebPageAttribute">WebPageAttribute</a></p></div> +<p><a href="/type/EncryptedChat">EncryptedChat</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/phoneCallAccepted.html b/data/corefork.telegram.org/constructor/encryptedChatRequested.html similarity index 82% rename from data/corefork.telegram.org/constructor/phoneCallAccepted.html rename to data/corefork.telegram.org/constructor/encryptedChatRequested.html index 90421c6e1e..b87dc93bec 100644 --- a/data/corefork.telegram.org/constructor/phoneCallAccepted.html +++ b/data/corefork.telegram.org/constructor/encryptedChatRequested.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>phoneCallAccepted</title> + <title>encryptedChatRequested</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="An accepted phone call"> - <meta property="og:title" content="phoneCallAccepted"> + <meta property="description" content="Request to create an encrypted chat."> + <meta property="og:title" content="encryptedChatRequested"> <meta property="og:image" content=""> - <meta property="og:description" content="An accepted phone call"> + <meta property="og:description" content="Request to create an encrypted chat."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/phoneCallAccepted" >phoneCallAccepted</a></li></ul></div> - <h1 id="dev_page_title">phoneCallAccepted</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/encryptedChatRequested" >encryptedChatRequested</a></li></ul></div> + <h1 id="dev_page_title">encryptedChatRequested</h1> - <div id="dev_page_content"><p>An accepted phone call</p> + <div id="dev_page_content"><p>Request to create an encrypted chat.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/phoneCallAccepted" class="current_page_link" >phoneCallAccepted</a>#3660c311 flags:<a href="/type/%23" >#</a> video:flags.6?true id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_b:<a href="/type/bytes" >bytes</a> protocol:<a href="/type/PhoneCallProtocol" >PhoneCallProtocol</a> = <a href="/type/PhoneCall" >PhoneCall</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/encryptedChatRequested" class="current_page_link" >encryptedChatRequested</a>#48f1d94c flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_a:<a href="/type/bytes" >bytes</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>;</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> @@ -69,51 +69,47 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>video</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/constructor/true">true</a></td> -<td>Whether this is a video call</td> +<td><strong>folder_id</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><a href="/api/folders#peer-folders">Peer folder ID, for more info click here</a></td> </tr> <tr> <td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>ID of accepted phone call</td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Chat ID</td> </tr> <tr> <td><strong>access_hash</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Access hash of phone call</td> +<td>Check sum depending on user ID</td> </tr> <tr> <td><strong>date</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>When was the call accepted</td> +<td>Chat creation date</td> </tr> <tr> <td><strong>admin_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>ID of the call creator</td> +<td>Chat creator ID</td> </tr> <tr> <td><strong>participant_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>ID of the other user in the call</td> +<td>ID of second chat participant</td> </tr> <tr> -<td><strong>g_b</strong></td> +<td><strong>g_a</strong></td> <td style="text-align: center;"><a href="/type/bytes">bytes</a></td> -<td>B parameter for <a href="/api/end-to-end/voice-calls">secure E2E phone call key exchange</a></td> -</tr> -<tr> -<td><strong>protocol</strong></td> -<td style="text-align: center;"><a href="/type/PhoneCallProtocol">PhoneCallProtocol</a></td> -<td>Protocol to use for phone call</td> +<td><code>A = g ^ a mod p</code>, see <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">Wikipedia</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/PhoneCall">PhoneCall</a></p> +<p><a href="/type/EncryptedChat">EncryptedChat</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="#end-to-end-encrypted-voice-calls" id="end-to-end-encrypted-voice-calls" name="end-to-end-encrypted-voice-calls"><i class="anchor-icon"></i></a><a href="/api/end-to-end/voice-calls">End-to-End Encrypted Voice Calls</a></h4></div> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/encryptedMessage.html b/data/corefork.telegram.org/constructor/encryptedMessage.html new file mode 100644 index 0000000000..eac98e7e74 --- /dev/null +++ b/data/corefork.telegram.org/constructor/encryptedMessage.html @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>encryptedMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Encrypted message."> + <meta property="og:title" content="encryptedMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Encrypted message."> + <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?215" 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/encryptedMessage" >encryptedMessage</a></li></ul></div> + <h1 id="dev_page_title">encryptedMessage</h1> + + <div id="dev_page_content"><p>Encrypted message.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/encryptedMessage" class="current_page_link" >encryptedMessage</a>#ed18c118 random_id:<a href="/type/long" >long</a> chat_id:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> file:<a href="/type/EncryptedFile" >EncryptedFile</a> = <a href="/type/EncryptedMessage" >EncryptedMessage</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>random_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Random message ID, assigned by the author of message</td> +</tr> +<tr> +<td><strong>chat_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>ID of encrypted chat</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Date of sending</td> +</tr> +<tr> +<td><strong>bytes</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>TL-serialising of <a href="/type/DecryptedMessage">DecryptedMessage</a> type, encrypted with the key creatied at stage of chat initialization</td> +</tr> +<tr> +<td><strong>file</strong></td> +<td style="text-align: center;"><a href="/type/EncryptedFile">EncryptedFile</a></td> +<td>Attached encrypted file</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/EncryptedMessage">EncryptedMessage</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="#decryptedmessage" id="decryptedmessage" name="decryptedmessage"><i class="anchor-icon"></i></a><a href="/type/DecryptedMessage">DecryptedMessage</a></h4> +<p>Object describes the contents of an encrypted message.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/game.html b/data/corefork.telegram.org/constructor/game.html new file mode 100644 index 0000000000..78261a30e4 --- /dev/null +++ b/data/corefork.telegram.org/constructor/game.html @@ -0,0 +1,182 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>game</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Indicates an already sent game"> + <meta property="og:title" content="game"> + <meta property="og:image" content=""> + <meta property="og:description" content="Indicates an already sent 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?215" 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/game" >game</a></li></ul></div> + <h1 id="dev_page_title">game</h1> + + <div id="dev_page_content"><p>Indicates an already sent 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/game" class="current_page_link" >game</a>#bdf9653b flags:<a href="/type/%23" >#</a> id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> short_name:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:<a href="/type/Photo" >Photo</a> document:flags.0?<a href="/type/Document" >Document</a> = <a href="/type/Game" >Game</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>id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>ID of the game</td> +</tr> +<tr> +<td><strong>access_hash</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Access hash of the game</td> +</tr> +<tr> +<td><strong>short_name</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Short name for the game</td> +</tr> +<tr> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Title of the game</td> +</tr> +<tr> +<td><strong>description</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Game description</td> +</tr> +<tr> +<td><strong>photo</strong></td> +<td style="text-align: center;"><a href="/type/Photo">Photo</a></td> +<td>Game preview</td> +</tr> +<tr> +<td><strong>document</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Document">Document</a></td> +<td>Optional attached document</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/Game">Game</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/globalPrivacySettings.html b/data/corefork.telegram.org/constructor/globalPrivacySettings.html new file mode 100644 index 0000000000..f231f75747 --- /dev/null +++ b/data/corefork.telegram.org/constructor/globalPrivacySettings.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>globalPrivacySettings</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Global privacy settings"> + <meta property="og:title" content="globalPrivacySettings"> + <meta property="og:image" content=""> + <meta property="og:description" content="Global privacy settings"> + <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?215" 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/globalPrivacySettings" >globalPrivacySettings</a></li></ul></div> + <h1 id="dev_page_title">globalPrivacySettings</h1> + + <div id="dev_page_content"><p>Global privacy settings</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/globalPrivacySettings" class="current_page_link" >globalPrivacySettings</a>#bea2f424 flags:<a href="/type/%23" >#</a> archive_and_mute_new_noncontact_peers:flags.0?<a href="/type/Bool" >Bool</a> = <a href="/type/GlobalPrivacySettings" >GlobalPrivacySettings</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>archive_and_mute_new_noncontact_peers</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Bool">Bool</a></td> +<td>Whether to archive and mute new chats from non-contacts</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/GlobalPrivacySettings">GlobalPrivacySettings</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/help.termsOfService b/data/corefork.telegram.org/constructor/help.termsOfService new file mode 100644 index 0000000000..50d6a751fa --- /dev/null +++ b/data/corefork.telegram.org/constructor/help.termsOfService @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.termsOfService</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Info about the latest telegram Terms Of Service"> + <meta property="og:title" content="help.termsOfService"> + <meta property="og:image" content=""> + <meta property="og:description" content="Info about the latest telegram Terms Of Service"> + <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?215" 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/help.termsOfService" >help.termsOfService</a></li></ul></div> + <h1 id="dev_page_title">help.termsOfService</h1> + + <div id="dev_page_content"><p>Info about the latest telegram Terms Of Service</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.termsOfService" class="current_page_link" >help.termsOfService</a>#780a0310 flags:<a href="/type/%23" >#</a> popup:flags.0?true id:<a href="/type/DataJSON" >DataJSON</a> text:<a href="/type/string" >string</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> min_age_confirm:flags.1?<a href="/type/int" >int</a> = <a href="/type/help.TermsOfService" >help.TermsOfService</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>popup</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 a prompt must be showed to the user, in order to accept the new terms.</td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/DataJSON">DataJSON</a></td> +<td>ID of the new terms</td> +</tr> +<tr> +<td><strong>text</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Text of the new terms</td> +</tr> +<tr> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td><a href="/api/entities">Message entities for styled text</a></td> +</tr> +<tr> +<td><strong>min_age_confirm</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>Minimum age required to sign up to telegram, the user must confirm that they is older than the minimum age.</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/help.TermsOfService">help.TermsOfService</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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inputChannelFromMessage.html b/data/corefork.telegram.org/constructor/inputChannelFromMessage.html new file mode 100644 index 0000000000..659b02a3ee --- /dev/null +++ b/data/corefork.telegram.org/constructor/inputChannelFromMessage.html @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputChannelFromMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Defines a min channel that was seen in a certain message of a certain chat."> + <meta property="og:title" content="inputChannelFromMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Defines a min channel that was seen in a certain message of a certain chat."> + <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?215" 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/inputChannelFromMessage" >inputChannelFromMessage</a></li></ul></div> + <h1 id="dev_page_title">inputChannelFromMessage</h1> + + <div id="dev_page_content"><p>Defines a <a href="/api/min">min</a> channel that was seen in a certain message of a certain chat.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputChannelFromMessage" class="current_page_link" >inputChannelFromMessage</a>#5b934f9d peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> channel_id:<a href="/type/long" >long</a> = <a href="/type/InputChannel" >InputChannel</a>;</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>The chat where the channel was seen</td> +</tr> +<tr> +<td><strong>msg_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The message ID in the chat where the channel was seen</td> +</tr> +<tr> +<td><strong>channel_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>The channel ID</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/InputChannel">InputChannel</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="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/decryptedMessageActionAcceptKey.html b/data/corefork.telegram.org/constructor/inputCheckPasswordSRP.html similarity index 84% rename from data/corefork.telegram.org/constructor/decryptedMessageActionAcceptKey.html rename to data/corefork.telegram.org/constructor/inputCheckPasswordSRP.html index 9e34e50ea9..90d67dd6f3 100644 --- a/data/corefork.telegram.org/constructor/decryptedMessageActionAcceptKey.html +++ b/data/corefork.telegram.org/constructor/inputCheckPasswordSRP.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>decryptedMessageActionAcceptKey</title> + <title>inputCheckPasswordSRP</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Accept new key"> - <meta property="og:title" content="decryptedMessageActionAcceptKey"> + <meta property="description" content="Constructor for checking the validity of a 2FA SRP password (see SRP)"> + <meta property="og:title" content="inputCheckPasswordSRP"> <meta property="og:image" content=""> - <meta property="og:description" content="Accept new key"> + <meta property="og:description" content="Constructor for checking the validity of a 2FA SRP password (see SRP)"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/decryptedMessageActionAcceptKey" >decryptedMessageActionAcceptKey</a></li></ul></div> - <h1 id="dev_page_title">decryptedMessageActionAcceptKey</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputCheckPasswordSRP" >inputCheckPasswordSRP</a></li></ul></div> + <h1 id="dev_page_title">inputCheckPasswordSRP</h1> - <div id="dev_page_content"><p>Accept new key</p> + <div id="dev_page_content"><p>Constructor for checking the validity of a 2FA SRP password (see <a href="/api/srp">SRP</a>)</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,8 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code>===20=== -<a href="/constructor/decryptedMessageActionAcceptKey" class="current_page_link" >decryptedMessageActionAcceptKey</a>#6fe1735b exchange_id:<a href="/type/long" >long</a> g_b:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputCheckPasswordSRP" class="current_page_link" >inputCheckPasswordSRP</a>#d27ff082 srp_id:<a href="/type/long" >long</a> A:<a href="/type/bytes" >bytes</a> M1:<a href="/type/bytes" >bytes</a> = <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> <table class="table"> <thead> @@ -65,26 +64,27 @@ </thead> <tbody> <tr> -<td><strong>exchange_id</strong></td> +<td><strong>srp_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Exchange ID</td> +<td><a href="/api/srp">SRP ID</a></td> </tr> <tr> -<td><strong>g_b</strong></td> +<td><strong>A</strong></td> <td style="text-align: center;"><a href="/type/bytes">bytes</a></td> -<td>B parameter, see <a href="/api/end-to-end/pfs">rekeying process</a></td> +<td><code>A</code> parameter (see <a href="/api/srp">SRP</a>)</td> </tr> <tr> -<td><strong>key_fingerprint</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Key fingerprint, see <a href="/api/end-to-end/pfs">rekeying process</a></td> +<td><strong>M1</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td><code>M1</code> parameter (see <a href="/api/srp">SRP</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/DecryptedMessageAction">DecryptedMessageAction</a></p> +<p><a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</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="#perfect-forward-secrecy" id="perfect-forward-secrecy" name="perfect-forward-secrecy"><i class="anchor-icon"></i></a><a href="/api/end-to-end/pfs">Perfect Forward Secrecy</a></h4></div> +<h4><a class="anchor" href="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/inputPhotoLegacyFileLocation.html b/data/corefork.telegram.org/constructor/inputFileLocation.html similarity index 86% rename from data/corefork.telegram.org/constructor/inputPhotoLegacyFileLocation.html rename to data/corefork.telegram.org/constructor/inputFileLocation.html index 689daf6a7d..05f68762fc 100644 --- a/data/corefork.telegram.org/constructor/inputPhotoLegacyFileLocation.html +++ b/data/corefork.telegram.org/constructor/inputFileLocation.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputPhotoLegacyFileLocation</title> + <title>inputFileLocation</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="DEPRECATED legacy photo file location"> - <meta property="og:title" content="inputPhotoLegacyFileLocation"> + <meta property="description" content="DEPRECATED location of a photo"> + <meta property="og:title" content="inputFileLocation"> <meta property="og:image" content=""> - <meta property="og:description" content="DEPRECATED legacy photo file location"> + <meta property="og:description" content="DEPRECATED location of a photo"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputPhotoLegacyFileLocation" >inputPhotoLegacyFileLocation</a></li></ul></div> - <h1 id="dev_page_title">inputPhotoLegacyFileLocation</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputFileLocation" >inputFileLocation</a></li></ul></div> + <h1 id="dev_page_title">inputFileLocation</h1> - <div id="dev_page_content"><p>DEPRECATED legacy photo file location</p> + <div id="dev_page_content"><p>DEPRECATED location of a photo</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputPhotoLegacyFileLocation" class="current_page_link" >inputPhotoLegacyFileLocation</a>#d83466f3 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> volume_id:<a href="/type/long" >long</a> local_id:<a href="/type/int" >int</a> secret:<a href="/type/long" >long</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputFileLocation" class="current_page_link" >inputFileLocation</a>#dfdaabe1 volume_id:<a href="/type/long" >long</a> local_id:<a href="/type/int" >int</a> secret:<a href="/type/long" >long</a> file_reference:<a href="/type/bytes" >bytes</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -64,39 +64,32 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Photo ID</td> -</tr> -<tr> -<td><strong>access_hash</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Access hash</td> -</tr> -<tr> -<td><strong>file_reference</strong></td> -<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> -<td>File reference</td> -</tr> -<tr> <td><strong>volume_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Volume ID</td> +<td>Server volume</td> </tr> <tr> <td><strong>local_id</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Local ID</td> +<td>File identifier</td> </tr> <tr> <td><strong>secret</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Secret</td> +<td>Check sum to access the file</td> +</tr> +<tr> +<td><strong>file_reference</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td><a href="/api/file_reference">File reference</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/InputFileLocation">InputFileLocation</a></p></div> +<p><a href="/type/InputFileLocation">InputFileLocation</a></p> +<h3><a class="anchor" href="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3> +<h4><a class="anchor" href="#file-references" id="file-references" name="file-references"><i class="anchor-icon"></i></a><a href="/api/file_reference">File references</a></h4> +<p>How to handle file references.</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/statsGraphError.html b/data/corefork.telegram.org/constructor/inputGameID.html similarity index 87% rename from data/corefork.telegram.org/constructor/statsGraphError.html rename to data/corefork.telegram.org/constructor/inputGameID.html index f13b87aa90..a66904aded 100644 --- a/data/corefork.telegram.org/constructor/statsGraphError.html +++ b/data/corefork.telegram.org/constructor/inputGameID.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>statsGraphError</title> + <title>inputGameID</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="An error occurred while generating the statistics graph"> - <meta property="og:title" content="statsGraphError"> + <meta property="description" content="Indicates an already sent game"> + <meta property="og:title" content="inputGameID"> <meta property="og:image" content=""> - <meta property="og:description" content="An error occurred while generating the statistics graph"> + <meta property="og:description" content="Indicates an already sent game"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/statsGraphError" >statsGraphError</a></li></ul></div> - <h1 id="dev_page_title">statsGraphError</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputGameID" >inputGameID</a></li></ul></div> + <h1 id="dev_page_title">inputGameID</h1> - <div id="dev_page_content"><p>An error occurred while generating the <a href="/api/stats">statistics graph</a></p> + <div id="dev_page_content"><p>Indicates an already sent game</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/statsGraphError" class="current_page_link" >statsGraphError</a>#bedc9822 error:<a href="/type/string" >string</a> = <a href="/type/StatsGraph" >StatsGraph</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputGameID" class="current_page_link" >inputGameID</a>#32c3e77 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputGame" >InputGame</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> @@ -64,17 +64,22 @@ </thead> <tbody> <tr> -<td><strong>error</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>The error</td> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>game ID from <a href="/type/Game">Game</a> constructor</td> +</tr> +<tr> +<td><strong>access_hash</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>access hash from <a href="/type/Game">Game</a> constructor</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/StatsGraph">StatsGraph</a></p> +<p><a href="/type/InputGame">InputGame</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="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> -<p>Telegram offers detailed channel statistics for channels and supergroups.</p></div> +<h4><a class="anchor" href="#game" id="game" name="game"><i class="anchor-icon"></i></a><a href="/type/Game">Game</a></h4> +<p>Indicates an already sent game</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/themeSettings.html b/data/corefork.telegram.org/constructor/inputMediaPoll.html similarity index 79% rename from data/corefork.telegram.org/constructor/themeSettings.html rename to data/corefork.telegram.org/constructor/inputMediaPoll.html index a764564b40..6c82d9a811 100644 --- a/data/corefork.telegram.org/constructor/themeSettings.html +++ b/data/corefork.telegram.org/constructor/inputMediaPoll.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>themeSettings</title> + <title>inputMediaPoll</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Theme settings"> - <meta property="og:title" content="themeSettings"> + <meta property="description" content="A poll"> + <meta property="og:title" content="inputMediaPoll"> <meta property="og:image" content=""> - <meta property="og:description" content="Theme settings"> + <meta property="og:description" content="A poll"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/themeSettings" >themeSettings</a></li></ul></div> - <h1 id="dev_page_title">themeSettings</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputMediaPoll" >inputMediaPoll</a></li></ul></div> + <h1 id="dev_page_title">inputMediaPoll</h1> - <div id="dev_page_content"><p>Theme settings</p> + <div id="dev_page_content"><p>A poll</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/themeSettings" class="current_page_link" >themeSettings</a>#fa58b6d4 flags:<a href="/type/%23" >#</a> message_colors_animated:flags.2?true base_theme:<a href="/type/BaseTheme" >BaseTheme</a> accent_color:<a href="/type/int" >int</a> outbox_accent_color:flags.3?<a href="/type/int" >int</a> message_colors:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> wallpaper:flags.1?<a href="/type/WallPaper" >WallPaper</a> = <a href="/type/ThemeSettings" >ThemeSettings</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputMediaPoll" class="current_page_link" >inputMediaPoll</a>#f94e5f1 flags:<a href="/type/%23" >#</a> poll:<a href="/type/Poll" >Poll</a> correct_answers:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> solution:flags.1?<a href="/type/string" >string</a> solution_entities:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/InputMedia" >InputMedia</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> @@ -69,39 +69,32 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>message_colors_animated</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>If set, the freeform gradient fill needs to be animated on every sent message.</td> +<td><strong>poll</strong></td> +<td style="text-align: center;"><a href="/type/Poll">Poll</a></td> +<td>The poll to send</td> </tr> <tr> -<td><strong>base_theme</strong></td> -<td style="text-align: center;"><a href="/type/BaseTheme">BaseTheme</a></td> -<td>Base theme</td> +<td><strong>correct_answers</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/bytes">bytes</a>></td> +<td>Correct answer IDs (for quiz polls)</td> </tr> <tr> -<td><strong>accent_color</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Accent color, ARGB format</td> +<td><strong>solution</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/string">string</a></td> +<td>Explanation of quiz solution</td> </tr> <tr> -<td><strong>outbox_accent_color</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/int">int</a></td> -<td>Accent color of outgoing messages in ARGB format</td> -</tr> -<tr> -<td><strong>message_colors</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> -<td>The fill to be used as a background for outgoing messages, in RGB24 format. <br>If just one or two equal colors are provided, describes a solid fill of a background. <br>If two different colors are provided, describes the top and bottom colors of a 0-degree gradient.<br>If three or four colors are provided, describes a freeform gradient fill of a background.</td> -</tr> -<tr> -<td><strong>wallpaper</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/WallPaper">WallPaper</a></td> -<td>Wallpaper</td> +<td><strong>solution_entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td><a href="/api/entities">Message entities for styled text</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/ThemeSettings">ThemeSettings</a></p></div> +<p><a href="/type/InputMedia">InputMedia</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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/inputMediaUploadedThumbDocument.html b/data/corefork.telegram.org/constructor/inputMediaUploadedThumbDocument.html deleted file mode 100644 index 1d78eece85..0000000000 --- a/data/corefork.telegram.org/constructor/inputMediaUploadedThumbDocument.html +++ /dev/null @@ -1,176 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>inputMediaUploadedThumbDocument</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="New document with a thumbnail. -Parameters -Name -Type -Description -file -InputFile -Document, saved in parts by using the methods…"> - <meta property="og:title" content="inputMediaUploadedThumbDocument"> - <meta property="og:image" content=""> - <meta property="og:description" content="New document with a thumbnail. -Parameters -Name -Type -Description -file -InputFile -Document, saved in parts by using the methods…"> - <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?215" 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/inputMediaUploadedThumbDocument" >inputMediaUploadedThumbDocument</a></li></ul></div> - <h1 id="dev_page_title">inputMediaUploadedThumbDocument</h1> - - <div id="dev_page_content"><p>New document with a thumbnail.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code>Constructor schema is available as of layer 22. <a href="?layer=22">Switch »</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>file</strong></td> -<td style="text-align: center;"><a href="/type/InputFile">InputFile</a></td> -<td>Document, saved in parts by using the methods <a href="/method/upload.saveFilePart">upload.saveFilePart</a> or <a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a></td> -</tr> -<tr> -<td><strong>thumb</strong></td> -<td style="text-align: center;"><a href="/type/InputFile">InputFile</a></td> -<td>Thumbnail file, saved in parts by using <a href="/method/upload.saveFilePart">upload.saveFilePart</a></td> -</tr> -<tr> -<td><strong>file_name</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>File name with extension</td> -</tr> -<tr> -<td><strong>mime_type</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>File MIME-type</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/InputMedia">InputMedia</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="//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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/constructor/inputMessageEntityMentionName.html b/data/corefork.telegram.org/constructor/inputMessageEntityMentionName.html new file mode 100644 index 0000000000..c5d8251b7b --- /dev/null +++ b/data/corefork.telegram.org/constructor/inputMessageEntityMentionName.html @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputMessageEntityMentionName</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Message entity that can be used to create a user user mention: received mentions use the messageEntityMentionName constructor, instead."> + <meta property="og:title" content="inputMessageEntityMentionName"> + <meta property="og:image" content=""> + <meta property="og:description" content="Message entity that can be used to create a user user mention: received mentions use the messageEntityMentionName constructor, instead."> + <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?215" 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/inputMessageEntityMentionName" >inputMessageEntityMentionName</a></li></ul></div> + <h1 id="dev_page_title">inputMessageEntityMentionName</h1> + + <div id="dev_page_content"><p>Message entity that can be used to create a user <a href="/api/mentions">user mention</a>: received mentions use the <a href="/constructor/messageEntityMentionName">messageEntityMentionName</a> constructor, instead.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputMessageEntityMentionName" class="current_page_link" >inputMessageEntityMentionName</a>#208e68c9 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> user_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/MessageEntity" >MessageEntity</a>;</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>offset</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Offset of message entity within message (in UTF-8 codepoints)</td> +</tr> +<tr> +<td><strong>length</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Length of message entity within message (in UTF-8 codepoints)</td> +</tr> +<tr> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> +<td>Identifier of the user that was mentioned</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/MessageEntity">MessageEntity</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="#mentions" id="mentions" name="mentions"><i class="anchor-icon"></i></a><a href="/api/mentions">Mentions</a></h4> +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p> +<h4><a class="anchor" href="#messageentitymentionname" id="messageentitymentionname" name="messageentitymentionname"><i class="anchor-icon"></i></a><a href="/constructor/messageEntityMentionName">messageEntityMentionName</a></h4> +<p>Message entity representing a <a href="/api/mentions">user mention</a>: for <em>creating</em> a mention use <a href="/constructor/inputMessageEntityMentionName">inputMessageEntityMentionName</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputMessagesFilterPinned.html b/data/corefork.telegram.org/constructor/inputMessagesFilterPinned.html similarity index 98% rename from data/core.telegram.org/constructor/inputMessagesFilterPinned.html rename to data/corefork.telegram.org/constructor/inputMessagesFilterPinned.html index 04eb79e38f..e1f1f90ac1 100644 --- a/data/core.telegram.org/constructor/inputMessagesFilterPinned.html +++ b/data/corefork.telegram.org/constructor/inputMessagesFilterPinned.html @@ -95,9 +95,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -114,7 +114,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/constructor/inputPeerChannelFromMessage.html b/data/corefork.telegram.org/constructor/inputPeerChannelFromMessage.html new file mode 100644 index 0000000000..9eba91f8fe --- /dev/null +++ b/data/corefork.telegram.org/constructor/inputPeerChannelFromMessage.html @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputPeerChannelFromMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Defines a min channel that was seen in a certain message of a certain chat."> + <meta property="og:title" content="inputPeerChannelFromMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Defines a min channel that was seen in a certain message of a certain chat."> + <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?215" 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/inputPeerChannelFromMessage" >inputPeerChannelFromMessage</a></li></ul></div> + <h1 id="dev_page_title">inputPeerChannelFromMessage</h1> + + <div id="dev_page_content"><p>Defines a <a href="/api/min">min</a> channel that was seen in a certain message of a certain chat.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputPeerChannelFromMessage" class="current_page_link" >inputPeerChannelFromMessage</a>#bd2a0840 peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> channel_id:<a href="/type/long" >long</a> = <a href="/type/InputPeer" >InputPeer</a>;</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>The chat where the channel's message was seen</td> +</tr> +<tr> +<td><strong>msg_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The message ID</td> +</tr> +<tr> +<td><strong>channel_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>The identifier of the channel that was seen</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/InputPeer">InputPeer</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="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inputPeerPhotoFileLocation.html b/data/corefork.telegram.org/constructor/inputPeerPhotoFileLocation.html new file mode 100644 index 0000000000..84c94acc52 --- /dev/null +++ b/data/corefork.telegram.org/constructor/inputPeerPhotoFileLocation.html @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputPeerPhotoFileLocation</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Location of profile photo of channel/group/supergroup/user"> + <meta property="og:title" content="inputPeerPhotoFileLocation"> + <meta property="og:image" content=""> + <meta property="og:description" content="Location of profile photo of channel/group/supergroup/user"> + <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?215" 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/inputPeerPhotoFileLocation" >inputPeerPhotoFileLocation</a></li></ul></div> + <h1 id="dev_page_title">inputPeerPhotoFileLocation</h1> + + <div id="dev_page_content"><p>Location of profile photo of channel/group/supergroup/user</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputPeerPhotoFileLocation" class="current_page_link" >inputPeerPhotoFileLocation</a>#37257e99 flags:<a href="/type/%23" >#</a> big:flags.0?true peer:<a href="/type/InputPeer" >InputPeer</a> photo_id:<a href="/type/long" >long</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>;</code></pre></p> +<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th style="text-align: center;">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>flags</strong></td> +<td style="text-align: center;"><a href="/type/%23">#</a></td> +<td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> +</tr> +<tr> +<td><strong>big</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 to download the high-quality version of the picture</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>The peer whose profile picture should be downloaded</td> +</tr> +<tr> +<td><strong>photo_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Photo ID</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/InputFileLocation">InputFileLocation</a></p></div> + +</div> + + </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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputPeerChannel.html b/data/corefork.telegram.org/constructor/inputPeerUser.html similarity index 88% rename from data/core.telegram.org/constructor/inputPeerChannel.html rename to data/corefork.telegram.org/constructor/inputPeerUser.html index 50751f05af..9cb02e4c7e 100644 --- a/data/core.telegram.org/constructor/inputPeerChannel.html +++ b/data/corefork.telegram.org/constructor/inputPeerUser.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputPeerChannel</title> + <title>inputPeerUser</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Defines a channel for further interaction."> - <meta property="og:title" content="inputPeerChannel"> + <meta property="description" content="Defines a user for further interaction."> + <meta property="og:title" content="inputPeerUser"> <meta property="og:image" content=""> - <meta property="og:description" content="Defines a channel for further interaction."> + <meta property="og:description" content="Defines a user for further interaction."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputPeerChannel" >inputPeerChannel</a></li></ul></div> - <h1 id="dev_page_title">inputPeerChannel</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/inputPeerUser" >inputPeerUser</a></li></ul></div> + <h1 id="dev_page_title">inputPeerUser</h1> - <div id="dev_page_content"><p>Defines a channel for further interaction.</p> + <div id="dev_page_content"><p>Defines a user for further interaction.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputPeerChannel" class="current_page_link" >inputPeerChannel</a>#27bcbbfc channel_id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputPeer" >InputPeer</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputPeerUser" class="current_page_link" >inputPeerUser</a>#dde8a54c user_id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputPeer" >InputPeer</a>;</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> @@ -64,22 +64,22 @@ </thead> <tbody> <tr> -<td><strong>channel_id</strong></td> +<td><strong>user_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Channel identifier</td> +<td>User identifier</td> </tr> <tr> <td><strong>access_hash</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td><strong>access_hash</strong> value from the <a href="/constructor/channel">channel</a> constructor</td> +<td><strong>access_hash</strong> value from the <a href="/constructor/user">user</a> constructor</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/InputPeer">InputPeer</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="#channel" id="channel" name="channel"><i class="anchor-icon"></i></a><a href="/constructor/channel">channel</a></h4> -<p>Channel/supergroup info</p></div> +<h4><a class="anchor" href="#user" id="user" name="user"><i class="anchor-icon"></i></a><a href="/constructor/user">user</a></h4> +<p>Indicates info about a certain user</p></div> </div> @@ -118,9 +118,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -137,7 +137,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/constructor/inputPeerUserFromMessage.html b/data/corefork.telegram.org/constructor/inputPeerUserFromMessage.html new file mode 100644 index 0000000000..cd52c2388b --- /dev/null +++ b/data/corefork.telegram.org/constructor/inputPeerUserFromMessage.html @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputPeerUserFromMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Defines a min user that was seen in a certain message of a certain chat."> + <meta property="og:title" content="inputPeerUserFromMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Defines a min user that was seen in a certain message of a certain chat."> + <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?215" 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/inputPeerUserFromMessage" >inputPeerUserFromMessage</a></li></ul></div> + <h1 id="dev_page_title">inputPeerUserFromMessage</h1> + + <div id="dev_page_content"><p>Defines a <a href="/api/min">min</a> user that was seen in a certain message of a certain chat.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputPeerUserFromMessage" class="current_page_link" >inputPeerUserFromMessage</a>#a87b0a1c peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> = <a href="/type/InputPeer" >InputPeer</a>;</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>The chat where the user was seen</td> +</tr> +<tr> +<td><strong>msg_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The message ID</td> +</tr> +<tr> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>The identifier of the user that was seen</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/InputPeer">InputPeer</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="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inputSecureValue.html b/data/corefork.telegram.org/constructor/inputSecureValue.html new file mode 100644 index 0000000000..a832a2041d --- /dev/null +++ b/data/corefork.telegram.org/constructor/inputSecureValue.html @@ -0,0 +1,190 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputSecureValue</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Secure value, for more info see the passport docs »"> + <meta property="og:title" content="inputSecureValue"> + <meta property="og:image" content=""> + <meta property="og:description" content="Secure value, for more info see the passport docs »"> + <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?215" 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/inputSecureValue" >inputSecureValue</a></li></ul></div> + <h1 id="dev_page_title">inputSecureValue</h1> + + <div id="dev_page_content"><p>Secure value, <a href="/passport/encryption#encryption">for more info see the passport docs »</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputSecureValue" class="current_page_link" >inputSecureValue</a>#db21d0a7 flags:<a href="/type/%23" >#</a> type:<a href="/type/SecureValueType" >SecureValueType</a> data:flags.0?<a href="/type/SecureData" >SecureData</a> front_side:flags.1?<a href="/type/InputSecureFile" >InputSecureFile</a> reverse_side:flags.2?<a href="/type/InputSecureFile" >InputSecureFile</a> selfie:flags.3?<a href="/type/InputSecureFile" >InputSecureFile</a> translation:flags.6?<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputSecureFile" >InputSecureFile</a>> files:flags.4?<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputSecureFile" >InputSecureFile</a>> plain_data:flags.5?<a href="/type/SecurePlainData" >SecurePlainData</a> = <a href="/type/InputSecureValue" >InputSecureValue</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>type</strong></td> +<td style="text-align: center;"><a href="/type/SecureValueType">SecureValueType</a></td> +<td>Secure <a href="/passport">passport</a> value type</td> +</tr> +<tr> +<td><strong>data</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/SecureData">SecureData</a></td> +<td>Encrypted <a href="/passport">Telegram Passport</a> element data</td> +</tr> +<tr> +<td><strong>front_side</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/InputSecureFile">InputSecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the front side of the document</td> +</tr> +<tr> +<td><strong>reverse_side</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/InputSecureFile">InputSecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the reverse side of the document</td> +</tr> +<tr> +<td><strong>selfie</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/InputSecureFile">InputSecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with a selfie of the user holding the document</td> +</tr> +<tr> +<td><strong>translation</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/Vector%20t">Vector</a><<a href="/type/InputSecureFile">InputSecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with translated versions of the provided documents</td> +</tr> +<tr> +<td><strong>files</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/InputSecureFile">InputSecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with photos the of the documents</td> +</tr> +<tr> +<td><strong>plain_data</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/SecurePlainData">SecurePlainData</a></td> +<td>Plaintext verified <a href="/passport">passport</a> data</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/InputSecureValue">InputSecureValue</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4> +<h4><a class="anchor" href="#telegram-passport-encryption-details" id="telegram-passport-encryption-details" name="telegram-passport-encryption-details"><i class="anchor-icon"></i></a><a href="/passport/encryption">Telegram Passport Encryption Details</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inputUserFromMessage.html b/data/corefork.telegram.org/constructor/inputUserFromMessage.html new file mode 100644 index 0000000000..28882e2c34 --- /dev/null +++ b/data/corefork.telegram.org/constructor/inputUserFromMessage.html @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>inputUserFromMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Defines a min user that was seen in a certain message of a certain chat."> + <meta property="og:title" content="inputUserFromMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Defines a min user that was seen in a certain message of a certain chat."> + <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?215" 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/inputUserFromMessage" >inputUserFromMessage</a></li></ul></div> + <h1 id="dev_page_title">inputUserFromMessage</h1> + + <div id="dev_page_content"><p>Defines a <a href="/api/min">min</a> user that was seen in a certain message of a certain chat.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputUserFromMessage" class="current_page_link" >inputUserFromMessage</a>#1da448e2 peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> = <a href="/type/InputUser" >InputUser</a>;</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>The chat where the user was seen</td> +</tr> +<tr> +<td><strong>msg_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The message ID</td> +</tr> +<tr> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>The identifier of the user that was seen</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> +<p><a href="/type/InputUser">InputUser</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="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/stats.messageStats b/data/corefork.telegram.org/constructor/keyboardButtonGame.html similarity index 90% rename from data/corefork.telegram.org/constructor/stats.messageStats rename to data/corefork.telegram.org/constructor/keyboardButtonGame.html index 003c86e5a6..a4f4acda0f 100644 --- a/data/corefork.telegram.org/constructor/stats.messageStats +++ b/data/corefork.telegram.org/constructor/keyboardButtonGame.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>stats.messageStats</title> + <title>keyboardButtonGame</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Message statistics"> - <meta property="og:title" content="stats.messageStats"> + <meta property="description" content="Button to start a game"> + <meta property="og:title" content="keyboardButtonGame"> <meta property="og:image" content=""> - <meta property="og:description" content="Message statistics"> + <meta property="og:description" content="Button to start a game"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/stats.messageStats" >stats.messageStats</a></li></ul></div> - <h1 id="dev_page_title">stats.messageStats</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/keyboardButtonGame" >keyboardButtonGame</a></li></ul></div> + <h1 id="dev_page_title">keyboardButtonGame</h1> - <div id="dev_page_content"><p>Message statistics</p> + <div id="dev_page_content"><p>Button to start a game</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/stats.messageStats" class="current_page_link" >stats.messageStats</a>#8999f295 views_graph:<a href="/type/StatsGraph" >StatsGraph</a> = <a href="/type/stats.MessageStats" >stats.MessageStats</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/keyboardButtonGame" class="current_page_link" >keyboardButtonGame</a>#50f41ccf text:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</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> @@ -64,14 +64,14 @@ </thead> <tbody> <tr> -<td><strong>views_graph</strong></td> -<td style="text-align: center;"><a href="/type/StatsGraph">StatsGraph</a></td> -<td>Message view graph</td> +<td><strong>text</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Button text</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/stats.MessageStats">stats.MessageStats</a></p></div> +<p><a href="/type/KeyboardButton">KeyboardButton</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/paymentSavedCredentialsCard.html b/data/corefork.telegram.org/constructor/keyboardButtonUrl.html similarity index 90% rename from data/corefork.telegram.org/constructor/paymentSavedCredentialsCard.html rename to data/corefork.telegram.org/constructor/keyboardButtonUrl.html index 4807003a40..e67747a45b 100644 --- a/data/corefork.telegram.org/constructor/paymentSavedCredentialsCard.html +++ b/data/corefork.telegram.org/constructor/keyboardButtonUrl.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>paymentSavedCredentialsCard</title> + <title>keyboardButtonUrl</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Saved credit card"> - <meta property="og:title" content="paymentSavedCredentialsCard"> + <meta property="description" content="URL button"> + <meta property="og:title" content="keyboardButtonUrl"> <meta property="og:image" content=""> - <meta property="og:description" content="Saved credit card"> + <meta property="og:description" content="URL button"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/paymentSavedCredentialsCard" >paymentSavedCredentialsCard</a></li></ul></div> - <h1 id="dev_page_title">paymentSavedCredentialsCard</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/keyboardButtonUrl" >keyboardButtonUrl</a></li></ul></div> + <h1 id="dev_page_title">keyboardButtonUrl</h1> - <div id="dev_page_content"><p>Saved credit card</p> + <div id="dev_page_content"><p>URL button</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/paymentSavedCredentialsCard" class="current_page_link" >paymentSavedCredentialsCard</a>#cdc27a1f id:<a href="/type/string" >string</a> title:<a href="/type/string" >string</a> = <a href="/type/PaymentSavedCredentials" >PaymentSavedCredentials</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/keyboardButtonUrl" class="current_page_link" >keyboardButtonUrl</a>#258aff05 text:<a href="/type/string" >string</a> url:<a href="/type/string" >string</a> = <a href="/type/KeyboardButton" >KeyboardButton</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> @@ -64,19 +64,19 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> +<td><strong>text</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Card ID</td> +<td>Button label</td> </tr> <tr> -<td><strong>title</strong></td> +<td><strong>url</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Title</td> +<td>URL</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/PaymentSavedCredentials">PaymentSavedCredentials</a></p></div> +<p><a href="/type/KeyboardButton">KeyboardButton</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/keyboardButtonUrlAuth.html b/data/corefork.telegram.org/constructor/keyboardButtonUrlAuth.html new file mode 100644 index 0000000000..489f3ac924 --- /dev/null +++ b/data/corefork.telegram.org/constructor/keyboardButtonUrlAuth.html @@ -0,0 +1,179 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>keyboardButtonUrlAuth</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Button to request a user to authorize via URL using Seamless Telegram Login. When the user clicks on such a button, messages.requestUrlAuth should be called, providing the button_id and the ID of the container message. The returned urlAuthResultRequest object will contain more details about the authorization request (request_write_access if the bot would like to send messages to the user along with the username of the bot which will be used for user authorization). Finally, the user can choose to call messages.acceptUrlAuth to get a urlAuthResultAccepted with the URL to open instead of the url of this constructor, or a urlAuthResultDefault, in which case the url of this constructor must be opened, instead. If the user refuses the authorization request but still wants to open the link, the url of this constructor must be used."> + <meta property="og:title" content="keyboardButtonUrlAuth"> + <meta property="og:image" content="443f38171139ee6729"> + <meta property="og:description" content="Button to request a user to authorize via URL using Seamless Telegram Login. When the user clicks on such a button, messages.requestUrlAuth should be called, providing the button_id and the ID of the container message. The returned urlAuthResultRequest object will contain more details about the authorization request (request_write_access if the bot would like to send messages to the user along with the username of the bot which will be used for user authorization). Finally, the user can choose to call messages.acceptUrlAuth to get a urlAuthResultAccepted with the URL to open instead of the url of this constructor, or a urlAuthResultDefault, in which case the url of this constructor must be opened, instead. If the user refuses the authorization request but still wants to open the link, the url of this constructor must be used."> + <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?215" 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/keyboardButtonUrlAuth" >keyboardButtonUrlAuth</a></li></ul></div> + <h1 id="dev_page_title">keyboardButtonUrlAuth</h1> + + <div id="dev_page_content"><p>Button to request a user to authorize via URL using <a href="https://telegram.org/blog/privacy-discussions-web-bots#meet-seamless-web-bots">Seamless Telegram Login</a>. When the user clicks on such a button, <a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a> should be called, providing the <code>button_id</code> and the ID of the container message. The returned <a href="/constructor/urlAuthResultRequest">urlAuthResultRequest</a> object will contain more details about the authorization request (<code>request_write_access</code> if the bot would like to send messages to the user along with the username of the bot which will be used for user authorization). Finally, the user can choose to call <a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a> to get a <a href="/constructor/urlAuthResultAccepted">urlAuthResultAccepted</a> with the URL to open instead of the <code>url</code> of this constructor, or a <a href="/constructor/urlAuthResultDefault">urlAuthResultDefault</a>, in which case the <code>url</code> of this constructor must be opened, instead. If the user refuses the authorization request but still wants to open the link, the <code>url</code> of this constructor must be used.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/keyboardButtonUrlAuth" class="current_page_link" >keyboardButtonUrlAuth</a>#10b78d29 flags:<a href="/type/%23" >#</a> text:<a href="/type/string" >string</a> fwd_text:flags.0?<a href="/type/string" >string</a> url:<a href="/type/string" >string</a> button_id:<a href="/type/int" >int</a> = <a href="/type/KeyboardButton" >KeyboardButton</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>text</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Button label</td> +</tr> +<tr> +<td><strong>fwd_text</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/string">string</a></td> +<td>New text of the button in forwarded messages.</td> +</tr> +<tr> +<td><strong>url</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in <a href="/widgets/login#receiving-authorization-data">Receiving authorization data</a>.<br><br><strong>NOTE</strong>: Services must <strong>always</strong> check the hash of the received data to verify the authentication and the integrity of the data as described in <a href="/widgets/login#checking-authorization">Checking authorization</a>.</td> +</tr> +<tr> +<td><strong>button_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>ID of the button to pass to <a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</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/KeyboardButton">KeyboardButton</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="#telegram-login-widget" id="telegram-login-widget" name="telegram-login-widget"><i class="anchor-icon"></i></a><a href="/widgets/login">Telegram Login Widget</a></h4> +<h4><a class="anchor" href="#messagesrequesturlauth" id="messagesrequesturlauth" name="messagesrequesturlauth"><i class="anchor-icon"></i></a><a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a></h4> +<p>Get more info about a Seamless Telegram Login authorization request, for more info <a href="/api/url-authorization">click here »</a></p> +<h4><a class="anchor" href="#urlauthresultrequest" id="urlauthresultrequest" name="urlauthresultrequest"><i class="anchor-icon"></i></a><a href="/constructor/urlAuthResultRequest">urlAuthResultRequest</a></h4> +<p>Details about the authorization request, for more info <a href="/api/url-authorization">click here »</a></p> +<h4><a class="anchor" href="#messagesaccepturlauth" id="messagesaccepturlauth" name="messagesaccepturlauth"><i class="anchor-icon"></i></a><a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a></h4> +<p>Use this to accept a Seamless Telegram Login authorization request, for more info <a href="/api/url-authorization">click here »</a></p> +<h4><a class="anchor" href="#urlauthresultaccepted" id="urlauthresultaccepted" name="urlauthresultaccepted"><i class="anchor-icon"></i></a><a href="/constructor/urlAuthResultAccepted">urlAuthResultAccepted</a></h4> +<p>Details about an accepted authorization request, for more info <a href="/api/url-authorization">click here »</a></p> +<h4><a class="anchor" href="#urlauthresultdefault" id="urlauthresultdefault" name="urlauthresultdefault"><i class="anchor-icon"></i></a><a href="/constructor/urlAuthResultDefault">urlAuthResultDefault</a></h4> +<p>Details about an accepted authorization request, for more info <a href="/api/url-authorization">click here »</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/message.html b/data/corefork.telegram.org/constructor/message.html new file mode 100644 index 0000000000..331b732222 --- /dev/null +++ b/data/corefork.telegram.org/constructor/message.html @@ -0,0 +1,302 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>message</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="A message"> + <meta property="og:title" content="message"> + <meta property="og:image" content=""> + <meta property="og:description" content="A message"> + <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?215" 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/message" >message</a></li></ul></div> + <h1 id="dev_page_title">message</h1> + + <div id="dev_page_content"><p>A message</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/message" class="current_page_link" >message</a>#85d6cbe2 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true id:<a href="/type/int" >int</a> from_id:flags.8?<a href="/type/Peer" >Peer</a> peer_id:<a href="/type/Peer" >Peer</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> date:<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> reply_markup:flags.6?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> views:flags.10?<a href="/type/int" >int</a> forwards:flags.10?<a href="/type/int" >int</a> replies:flags.23?<a href="/type/MessageReplies" >MessageReplies</a> edit_date:flags.15?<a href="/type/int" >int</a> post_author:flags.16?<a href="/type/string" >string</a> grouped_id:flags.17?<a href="/type/long" >long</a> restriction_reason:flags.22?<a href="/type/Vector%20t" >Vector</a><<a href="/type/RestrictionReason" >RestrictionReason</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Message" >Message</a>;</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>out</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>Is this an outgoing message</td> +</tr> +<tr> +<td><strong>mentioned</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>Whether we were <a href="/api/mentions">mentioned</a> in this message</td> +</tr> +<tr> +<td><strong>media_unread</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>Whether there are unread media attachments in this message</td> +</tr> +<tr> +<td><strong>silent</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>Whether this is a silent message (no notification triggered)</td> +</tr> +<tr> +<td><strong>post</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>Whether this is a channel post</td> +</tr> +<tr> +<td><strong>from_scheduled</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.18?<a href="/constructor/true">true</a></td> +<td>Whether this is a <a href="/api/scheduled-messages">scheduled message</a></td> +</tr> +<tr> +<td><strong>legacy</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.19?<a href="/constructor/true">true</a></td> +<td>This is a legacy message: it has to be refetched with the new layer</td> +</tr> +<tr> +<td><strong>edit_hide</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.21?<a href="/constructor/true">true</a></td> +<td>Whether the message should be shown as not modified to the user, even if an edit date is present</td> +</tr> +<tr> +<td><strong>pinned</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.24?<a href="/constructor/true">true</a></td> +<td>Whether this message is <a href="/api/pin">pinned</a></td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>ID of the message</td> +</tr> +<tr> +<td><strong>from_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/type/Peer">Peer</a></td> +<td>ID of the sender of the message</td> +</tr> +<tr> +<td><strong>peer_id</strong></td> +<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> +<td>Peer ID, the chat where this message was sent</td> +</tr> +<tr> +<td><strong>fwd_from</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a></td> +<td>Info about forwarded messages</td> +</tr> +<tr> +<td><strong>via_bot_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/type/long">long</a></td> +<td>ID of the inline bot that generated the message</td> +</tr> +<tr> +<td><strong>reply_to</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a></td> +<td>Reply information</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Date of the message</td> +</tr> +<tr> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The message</td> +</tr> +<tr> +<td><strong>media</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.9?<a href="/type/MessageMedia">MessageMedia</a></td> +<td>Media attachment</td> +</tr> +<tr> +<td><strong>reply_markup</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/ReplyMarkup">ReplyMarkup</a></td> +<td>Reply markup (bot/inline keyboards)</td> +</tr> +<tr> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.7?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td>Message <a href="/api/entities">entities</a> for styled text</td> +</tr> +<tr> +<td><strong>views</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/int">int</a></td> +<td>View count for channel posts</td> +</tr> +<tr> +<td><strong>forwards</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/int">int</a></td> +<td>Forward counter</td> +</tr> +<tr> +<td><strong>replies</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.23?<a href="/type/MessageReplies">MessageReplies</a></td> +<td>Info about <a href="/api/threads">post comments (for channels) or message replies (for groups)</a></td> +</tr> +<tr> +<td><strong>edit_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.15?<a href="/type/int">int</a></td> +<td>Last edit date of this message</td> +</tr> +<tr> +<td><strong>post_author</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.16?<a href="/type/string">string</a></td> +<td>Name of the author of this message for channel posts (with signatures enabled)</td> +</tr> +<tr> +<td><strong>grouped_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.17?<a href="/type/long">long</a></td> +<td>Multiple media messages sent using <a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a> with the same grouped ID indicate an <a href="/api/files#albums-grouped-media">album or media group</a></td> +</tr> +<tr> +<td><strong>restriction_reason</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.22?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>></td> +<td>Contains the reason why access to this message must be restricted.</td> +</tr> +<tr> +<td><strong>ttl_period</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/type/int">int</a></td> +<td>Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.</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/Message">Message</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="#mentions" id="mentions" name="mentions"><i class="anchor-icon"></i></a><a href="/api/mentions">Mentions</a></h4> +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p> +<h4><a class="anchor" href="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages</p> +<h4><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a><a href="/api/pin">Pinned messages</a></h4> +<p>Telegram allows pinning multiple messages on top of a specific chat.</p> +<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#threads" id="threads" name="threads"><i class="anchor-icon"></i></a><a href="/api/threads">Threads</a></h4> +<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> +<h4><a class="anchor" href="#messagessendmultimedia" id="messagessendmultimedia" name="messagessendmultimedia"><i class="anchor-icon"></i></a><a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a></h4> +<p>Send an <a href="/api/files#albums-grouped-media">album or grouped media</a></p> +<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></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/botCommandScopeChatAdmins.html b/data/corefork.telegram.org/constructor/messageActionChatMigrateTo.html similarity index 87% rename from data/corefork.telegram.org/constructor/botCommandScopeChatAdmins.html rename to data/corefork.telegram.org/constructor/messageActionChatMigrateTo.html index 8b1de03228..921aa02468 100644 --- a/data/corefork.telegram.org/constructor/botCommandScopeChatAdmins.html +++ b/data/corefork.telegram.org/constructor/messageActionChatMigrateTo.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>botCommandScopeChatAdmins</title> + <title>messageActionChatMigrateTo</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="The specified bot commands will be valid only for chat administrators, in all groups and supergroups."> - <meta property="og:title" content="botCommandScopeChatAdmins"> + <meta property="description" content="Indicates the chat was migrated to the specified supergroup"> + <meta property="og:title" content="messageActionChatMigrateTo"> <meta property="og:image" content=""> - <meta property="og:description" content="The specified bot commands will be valid only for chat administrators, in all groups and supergroups."> + <meta property="og:description" content="Indicates the chat was migrated to the specified supergroup"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/botCommandScopeChatAdmins" >botCommandScopeChatAdmins</a></li></ul></div> - <h1 id="dev_page_title">botCommandScopeChatAdmins</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageActionChatMigrateTo" >messageActionChatMigrateTo</a></li></ul></div> + <h1 id="dev_page_title">messageActionChatMigrateTo</h1> - <div id="dev_page_content"><p>The specified bot commands will be valid only for chat administrators, in all <a href="/api/channel">groups and supergroups</a>.</p> + <div id="dev_page_content"><p>Indicates the chat was <a href="/api/channel">migrated</a> to the specified supergroup</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,26 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/botCommandScopeChatAdmins" class="current_page_link" >botCommandScopeChatAdmins</a>#b9aa606a = <a href="/type/BotCommandScope" >BotCommandScope</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageActionChatMigrateTo" class="current_page_link" >messageActionChatMigrateTo</a>#e1037f92 channel_id:<a href="/type/long" >long</a> = <a href="/type/MessageAction" >MessageAction</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> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th style="text-align: center;">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>channel_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>The supergroup it was migrated to</td> +</tr> +</tbody> +</table> <h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> -<p><a href="/type/BotCommandScope">BotCommandScope</a></p> +<p><a href="/type/MessageAction">MessageAction</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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> <p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> diff --git a/data/corefork.telegram.org/constructor/messageActionPaymentSent.html b/data/corefork.telegram.org/constructor/messageActionSecureValuesSentMe.html similarity index 84% rename from data/corefork.telegram.org/constructor/messageActionPaymentSent.html rename to data/corefork.telegram.org/constructor/messageActionSecureValuesSentMe.html index 0865133f03..b84439a97b 100644 --- a/data/corefork.telegram.org/constructor/messageActionPaymentSent.html +++ b/data/corefork.telegram.org/constructor/messageActionSecureValuesSentMe.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messageActionPaymentSent</title> + <title>messageActionSecureValuesSentMe</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="A payment was sent"> - <meta property="og:title" content="messageActionPaymentSent"> + <meta property="description" content="Secure telegram passport values were received"> + <meta property="og:title" content="messageActionSecureValuesSentMe"> <meta property="og:image" content=""> - <meta property="og:description" content="A payment was sent"> + <meta property="og:description" content="Secure telegram passport values were received"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/messageActionPaymentSent" >messageActionPaymentSent</a></li></ul></div> - <h1 id="dev_page_title">messageActionPaymentSent</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageActionSecureValuesSentMe" >messageActionSecureValuesSentMe</a></li></ul></div> + <h1 id="dev_page_title">messageActionSecureValuesSentMe</h1> - <div id="dev_page_content"><p>A payment was sent</p> + <div id="dev_page_content"><p>Secure <a href="/passport">telegram passport</a> values were received</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messageActionPaymentSent" class="current_page_link" >messageActionPaymentSent</a>#40699cd0 currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> = <a href="/type/MessageAction" >MessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageActionSecureValuesSentMe" class="current_page_link" >messageActionSecureValuesSentMe</a>#1b287353 values:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValue" >SecureValue</a>> credentials:<a href="/type/SecureCredentialsEncrypted" >SecureCredentialsEncrypted</a> = <a href="/type/MessageAction" >MessageAction</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -64,21 +64,21 @@ </thead> <tbody> <tr> -<td><strong>currency</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Three-letter ISO 4217 <a href="/bots/payments#supported-currencies">currency</a> code</td> +<td><strong>values</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/SecureValue">SecureValue</a>></td> +<td>Vector with information about documents and other Telegram Passport elements that were shared with the bot</td> </tr> <tr> -<td><strong>total_amount</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of <code>US$ 1.45</code> pass <code>amount = 145</code>. See the exp parameter in <a href="/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</td> +<td><strong>credentials</strong></td> +<td style="text-align: center;"><a href="/type/SecureCredentialsEncrypted">SecureCredentialsEncrypted</a></td> +<td>Encrypted credentials required to decrypt the data</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/MessageAction">MessageAction</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="#bot-payments-api" id="bot-payments-api" name="bot-payments-api"><i class="anchor-icon"></i></a><a href="/bots/payments">Bot Payments API</a></h4></div> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></div> </div> diff --git a/data/corefork.telegram.org/constructor/messageEntityMention.html b/data/corefork.telegram.org/constructor/messageEntityMention.html new file mode 100644 index 0000000000..e3eb6f19e7 --- /dev/null +++ b/data/corefork.telegram.org/constructor/messageEntityMention.html @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messageEntityMention</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Message entity mentioning the current user"> + <meta property="og:title" content="messageEntityMention"> + <meta property="og:image" content=""> + <meta property="og:description" content="Message entity mentioning the current user"> + <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?215" 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/messageEntityMention" >messageEntityMention</a></li></ul></div> + <h1 id="dev_page_title">messageEntityMention</h1> + + <div id="dev_page_content"><p>Message entity <a href="/api/mentions">mentioning</a> the current user</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messageEntityMention" class="current_page_link" >messageEntityMention</a>#fa04579d offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</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>offset</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Offset of message entity within message (in UTF-8 codepoints)</td> +</tr> +<tr> +<td><strong>length</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Length of message entity within message (in UTF-8 codepoints)</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/MessageEntity">MessageEntity</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="#mentions" id="mentions" name="mentions"><i class="anchor-icon"></i></a><a href="/api/mentions">Mentions</a></h4> +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/messageEntityMentionName.html b/data/corefork.telegram.org/constructor/messageEntityMentionName.html new file mode 100644 index 0000000000..06cad5ac24 --- /dev/null +++ b/data/corefork.telegram.org/constructor/messageEntityMentionName.html @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messageEntityMentionName</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Message entity representing a user mention: for creating a mention use inputMessageEntityMentionName."> + <meta property="og:title" content="messageEntityMentionName"> + <meta property="og:image" content=""> + <meta property="og:description" content="Message entity representing a user mention: for creating a mention use inputMessageEntityMentionName."> + <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?215" 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/messageEntityMentionName" >messageEntityMentionName</a></li></ul></div> + <h1 id="dev_page_title">messageEntityMentionName</h1> + + <div id="dev_page_content"><p>Message entity representing a <a href="/api/mentions">user mention</a>: for <em>creating</em> a mention use <a href="/constructor/inputMessageEntityMentionName">inputMessageEntityMentionName</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messageEntityMentionName" class="current_page_link" >messageEntityMentionName</a>#dc7b1140 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> = <a href="/type/MessageEntity" >MessageEntity</a>;</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>offset</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Offset of message entity within message (in UTF-8 codepoints)</td> +</tr> +<tr> +<td><strong>length</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Length of message entity within message (in UTF-8 codepoints)</td> +</tr> +<tr> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Identifier of the user that was mentioned</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/MessageEntity">MessageEntity</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="#mentions" id="mentions" name="mentions"><i class="anchor-icon"></i></a><a href="/api/mentions">Mentions</a></h4> +<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p> +<h4><a class="anchor" href="#inputmessageentitymentionname" id="inputmessageentitymentionname" name="inputmessageentitymentionname"><i class="anchor-icon"></i></a><a href="/constructor/inputMessageEntityMentionName">inputMessageEntityMentionName</a></h4> +<p>Message entity that can be used to create a user <a href="/api/mentions">user mention</a>: received mentions use the <a href="/constructor/messageEntityMentionName">messageEntityMentionName</a> constructor, instead.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/messageFwdHeader.html b/data/corefork.telegram.org/constructor/messageFwdHeader.html new file mode 100644 index 0000000000..8b0d97fd7a --- /dev/null +++ b/data/corefork.telegram.org/constructor/messageFwdHeader.html @@ -0,0 +1,195 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messageFwdHeader</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Info about a forwarded message"> + <meta property="og:title" content="messageFwdHeader"> + <meta property="og:image" content=""> + <meta property="og:description" content="Info about a forwarded message"> + <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?215" 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/messageFwdHeader" >messageFwdHeader</a></li></ul></div> + <h1 id="dev_page_title">messageFwdHeader</h1> + + <div id="dev_page_content"><p>Info about a forwarded message</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messageFwdHeader" class="current_page_link" >messageFwdHeader</a>#5f777dce flags:<a href="/type/%23" >#</a> imported:flags.7?true 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>;</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>imported</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>Whether this message was <a href="/api/import">imported from a foreign chat service, click here for more info »</a></td> +</tr> +<tr> +<td><strong>from_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Peer">Peer</a></td> +<td>The ID of the user that originally sent the message</td> +</tr> +<tr> +<td><strong>from_name</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/string">string</a></td> +<td>The name of the user that originally sent the message</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>When was the message originally sent</td> +</tr> +<tr> +<td><strong>channel_post</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> +<td>ID of the channel message that was forwarded</td> +</tr> +<tr> +<td><strong>post_author</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td> +<td>For channels and if signatures are enabled, author of the channel message</td> +</tr> +<tr> +<td><strong>saved_from_peer</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Peer">Peer</a></td> +<td>Only for messages forwarded to the current user (inputPeerSelf), full info about the user/channel that originally sent the message</td> +</tr> +<tr> +<td><strong>saved_from_msg_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/int">int</a></td> +<td>Only for messages forwarded to the current user (inputPeerSelf), ID of the message that was forwarded from the original user/channel</td> +</tr> +<tr> +<td><strong>psa_type</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/string">string</a></td> +<td>PSA type</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/MessageFwdHeader">MessageFwdHeader</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/messageMediaVideo.html b/data/corefork.telegram.org/constructor/messageMediaGame.html similarity index 92% rename from data/corefork.telegram.org/constructor/messageMediaVideo.html rename to data/corefork.telegram.org/constructor/messageMediaGame.html index c21beae1fc..7637a83654 100644 --- a/data/corefork.telegram.org/constructor/messageMediaVideo.html +++ b/data/corefork.telegram.org/constructor/messageMediaGame.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messageMediaVideo</title> + <title>messageMediaGame</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Attached video."> - <meta property="og:title" content="messageMediaVideo"> + <meta property="description" content="Telegram game"> + <meta property="og:title" content="messageMediaGame"> <meta property="og:image" content=""> - <meta property="og:description" content="Attached video."> + <meta property="og:description" content="Telegram game"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/messageMediaVideo" >messageMediaVideo</a></li></ul></div> - <h1 id="dev_page_title">messageMediaVideo</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageMediaGame" >messageMediaGame</a></li></ul></div> + <h1 id="dev_page_title">messageMediaGame</h1> - <div id="dev_page_content"><p>Attached video.</p> + <div id="dev_page_content"><p>Telegram game</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code>Constructor schema is available as of layer 28. <a href="?layer=28">Switch »</a></code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageMediaGame" class="current_page_link" >messageMediaGame</a>#fdb19008 game:<a href="/type/Game" >Game</a> = <a href="/type/MessageMedia" >MessageMedia</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> @@ -64,9 +64,9 @@ </thead> <tbody> <tr> -<td><strong>video</strong></td> -<td style="text-align: center;"><a href="/type/Video">Video</a></td> -<td>Video</td> +<td><strong>game</strong></td> +<td style="text-align: center;"><a href="/type/Game">Game</a></td> +<td>Game</td> </tr> </tbody> </table> diff --git a/data/corefork.telegram.org/constructor/decryptedMessageActionAbortKey.html b/data/corefork.telegram.org/constructor/messageMediaPoll.html similarity index 89% rename from data/corefork.telegram.org/constructor/decryptedMessageActionAbortKey.html rename to data/corefork.telegram.org/constructor/messageMediaPoll.html index f066ae4ed8..91e275cc9b 100644 --- a/data/corefork.telegram.org/constructor/decryptedMessageActionAbortKey.html +++ b/data/corefork.telegram.org/constructor/messageMediaPoll.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>decryptedMessageActionAbortKey</title> + <title>messageMediaPoll</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Abort rekeying"> - <meta property="og:title" content="decryptedMessageActionAbortKey"> + <meta property="description" content="Poll"> + <meta property="og:title" content="messageMediaPoll"> <meta property="og:image" content=""> - <meta property="og:description" content="Abort rekeying"> + <meta property="og:description" content="Poll"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/decryptedMessageActionAbortKey" >decryptedMessageActionAbortKey</a></li></ul></div> - <h1 id="dev_page_title">decryptedMessageActionAbortKey</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageMediaPoll" >messageMediaPoll</a></li></ul></div> + <h1 id="dev_page_title">messageMediaPoll</h1> - <div id="dev_page_content"><p>Abort rekeying</p> + <div id="dev_page_content"><p>Poll</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,8 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code>===20=== -<a href="/constructor/decryptedMessageActionAbortKey" class="current_page_link" >decryptedMessageActionAbortKey</a>#dd05ec6b exchange_id:<a href="/type/long" >long</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageMediaPoll" class="current_page_link" >messageMediaPoll</a>#4bd6e798 poll:<a href="/type/Poll" >Poll</a> results:<a href="/type/PollResults" >PollResults</a> = <a href="/type/MessageMedia" >MessageMedia</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> @@ -65,14 +64,19 @@ </thead> <tbody> <tr> -<td><strong>exchange_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Exchange ID</td> +<td><strong>poll</strong></td> +<td style="text-align: center;"><a href="/type/Poll">Poll</a></td> +<td>The poll</td> +</tr> +<tr> +<td><strong>results</strong></td> +<td style="text-align: center;"><a href="/type/PollResults">PollResults</a></td> +<td>The results of the poll</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/DecryptedMessageAction">DecryptedMessageAction</a></p></div> +<p><a href="/type/MessageMedia">MessageMedia</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/messageService.html b/data/corefork.telegram.org/constructor/messageService.html new file mode 100644 index 0000000000..6f2806c28b --- /dev/null +++ b/data/corefork.telegram.org/constructor/messageService.html @@ -0,0 +1,212 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messageService</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Indicates a service message"> + <meta property="og:title" content="messageService"> + <meta property="og:image" content=""> + <meta property="og:description" content="Indicates a service message"> + <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?215" 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/messageService" >messageService</a></li></ul></div> + <h1 id="dev_page_title">messageService</h1> + + <div id="dev_page_content"><p>Indicates a service message</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messageService" class="current_page_link" >messageService</a>#2b085862 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:<a href="/type/int" >int</a> from_id:flags.8?<a href="/type/Peer" >Peer</a> peer_id:<a href="/type/Peer" >Peer</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> date:<a href="/type/int" >int</a> action:<a href="/type/MessageAction" >MessageAction</a> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Message" >Message</a>;</code></pre></p> +<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>out</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>Whether the message is outgoing</td> +</tr> +<tr> +<td><strong>mentioned</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>Whether we were mentioned in the message</td> +</tr> +<tr> +<td><strong>media_unread</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>Whether the message contains unread media</td> +</tr> +<tr> +<td><strong>silent</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>Whether the message is silent</td> +</tr> +<tr> +<td><strong>post</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>Whether it's a channel post</td> +</tr> +<tr> +<td><strong>legacy</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.19?<a href="/constructor/true">true</a></td> +<td>This is a legacy message: it has to be refetched with the new layer</td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Message ID</td> +</tr> +<tr> +<td><strong>from_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.8?<a href="/type/Peer">Peer</a></td> +<td>ID of the sender of this message</td> +</tr> +<tr> +<td><strong>peer_id</strong></td> +<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> +<td>Sender of service message</td> +</tr> +<tr> +<td><strong>reply_to</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a></td> +<td>Reply (thread) information</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Message date</td> +</tr> +<tr> +<td><strong>action</strong></td> +<td style="text-align: center;"><a href="/type/MessageAction">MessageAction</a></td> +<td>Event connected with the service message</td> +</tr> +<tr> +<td><strong>ttl_period</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/type/int">int</a></td> +<td>Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.</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/Message">Message</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/chatInviteImporter.html b/data/corefork.telegram.org/constructor/messageUserVote.html similarity index 89% rename from data/corefork.telegram.org/constructor/chatInviteImporter.html rename to data/corefork.telegram.org/constructor/messageUserVote.html index e72837ad01..2503208604 100644 --- a/data/corefork.telegram.org/constructor/chatInviteImporter.html +++ b/data/corefork.telegram.org/constructor/messageUserVote.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>chatInviteImporter</title> + <title>messageUserVote</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="When and which user joined the chat using a chat invite"> - <meta property="og:title" content="chatInviteImporter"> + <meta property="description" content="How a user voted in a poll"> + <meta property="og:title" content="messageUserVote"> <meta property="og:image" content=""> - <meta property="og:description" content="When and which user joined the chat using a chat invite"> + <meta property="og:description" content="How a user voted in a poll"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/chatInviteImporter" >chatInviteImporter</a></li></ul></div> - <h1 id="dev_page_title">chatInviteImporter</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messageUserVote" >messageUserVote</a></li></ul></div> + <h1 id="dev_page_title">messageUserVote</h1> - <div id="dev_page_content"><p>When and which user joined the chat using a chat invite</p> + <div id="dev_page_content"><p>How a user voted in a poll</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/chatInviteImporter" class="current_page_link" >chatInviteImporter</a>#b5cd5f4 user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/ChatInviteImporter" >ChatInviteImporter</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messageUserVote" class="current_page_link" >messageUserVote</a>#34d247b4 user_id:<a href="/type/long" >long</a> option:<a href="/type/bytes" >bytes</a> date:<a href="/type/int" >int</a> = <a href="/type/MessageUserVote" >MessageUserVote</a>;</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> @@ -66,17 +66,22 @@ <tr> <td><strong>user_id</strong></td> <td style="text-align: center;"><a href="/type/long">long</a></td> -<td>The user</td> +<td>User ID</td> +</tr> +<tr> +<td><strong>option</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>The option chosen by the user</td> </tr> <tr> <td><strong>date</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>When did the user join</td> +<td>When did the user cast the vote</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/ChatInviteImporter">ChatInviteImporter</a></p></div> +<p><a href="/type/MessageUserVote">MessageUserVote</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/inputChatPhoto.html b/data/corefork.telegram.org/constructor/messages.dhConfigNotModified similarity index 89% rename from data/corefork.telegram.org/constructor/inputChatPhoto.html rename to data/corefork.telegram.org/constructor/messages.dhConfigNotModified index 37318818f1..d4de496a96 100644 --- a/data/corefork.telegram.org/constructor/inputChatPhoto.html +++ b/data/corefork.telegram.org/constructor/messages.dhConfigNotModified @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputChatPhoto</title> + <title>messages.dhConfigNotModified</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Existing photo to be set as a chat profile photo."> - <meta property="og:title" content="inputChatPhoto"> + <meta property="description" content="Configuring parameters did not change."> + <meta property="og:title" content="messages.dhConfigNotModified"> <meta property="og:image" content=""> - <meta property="og:description" content="Existing photo to be set as a chat profile photo."> + <meta property="og:description" content="Configuring parameters did not change."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputChatPhoto" >inputChatPhoto</a></li></ul></div> - <h1 id="dev_page_title">inputChatPhoto</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/messages.dhConfigNotModified" >messages.dhConfigNotModified</a></li></ul></div> + <h1 id="dev_page_title">messages.dhConfigNotModified</h1> - <div id="dev_page_content"><p>Existing photo to be set as a chat profile photo.</p> + <div id="dev_page_content"><p>Configuring parameters did not change.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputChatPhoto" class="current_page_link" >inputChatPhoto</a>#8953ad37 id:<a href="/type/InputPhoto" >InputPhoto</a> = <a href="/type/InputChatPhoto" >InputChatPhoto</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/messages.dhConfigNotModified" class="current_page_link" >messages.dhConfigNotModified</a>#c0e24635 random:<a href="/type/bytes" >bytes</a> = <a href="/type/messages.DhConfig" >messages.DhConfig</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> @@ -64,14 +64,14 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/InputPhoto">InputPhoto</a></td> -<td>Existing photo</td> +<td><strong>random</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Random sequence of bytes of assigned length</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/InputChatPhoto">InputChatPhoto</a></p></div> +<p><a href="/type/messages.DhConfig">messages.DhConfig</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/messages.historyImport b/data/corefork.telegram.org/constructor/messages.historyImport new file mode 100644 index 0000000000..9a72e4a67c --- /dev/null +++ b/data/corefork.telegram.org/constructor/messages.historyImport @@ -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?215" 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html b/data/corefork.telegram.org/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html new file mode 100644 index 0000000000..1566989611 --- /dev/null +++ b/data/corefork.telegram.org/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html @@ -0,0 +1,165 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="This key derivation algorithm defines that SRP 2FA login must be used"> + <meta property="og:title" content="passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow"> + <meta property="og:image" content=""> + <meta property="og:description" content="This key derivation algorithm defines that SRP 2FA login must be used"> + <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?215" 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/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow" >passwordKdfAlgoSHA256SHA256PBKDF2HMACSH…</a></li></ul></div> + <h1 id="dev_page_title">passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</h1> + + <div id="dev_page_content"><p>This key derivation algorithm defines that <a href="/api/srp">SRP 2FA login</a> must be used</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow" class="current_page_link" >passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow</a>#3a912d4a salt1:<a href="/type/bytes" >bytes</a> salt2:<a href="/type/bytes" >bytes</a> g:<a href="/type/int" >int</a> p:<a href="/type/bytes" >bytes</a> = <a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</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>salt1</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>One of two salts used by the derivation function (see <a href="/api/srp">SRP 2FA login</a>)</td> +</tr> +<tr> +<td><strong>salt2</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>One of two salts used by the derivation function (see <a href="/api/srp">SRP 2FA login</a>)</td> +</tr> +<tr> +<td><strong>g</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Base (see <a href="/api/srp">SRP 2FA login</a>)</td> +</tr> +<tr> +<td><strong>p</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>2048-bit modulus (see <a href="/api/srp">SRP 2FA login</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/PasswordKdfAlgo">PasswordKdfAlgo</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/phone.exportedGroupCallInvite b/data/corefork.telegram.org/constructor/phone.exportedGroupCallInvite deleted file mode 100644 index 57b622402e..0000000000 --- a/data/corefork.telegram.org/constructor/phone.exportedGroupCallInvite +++ /dev/null @@ -1,147 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>phone.exportedGroupCallInvite</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="An invite to a group call or livestream"> - <meta property="og:title" content="phone.exportedGroupCallInvite"> - <meta property="og:image" content=""> - <meta property="og:description" content="An invite to a group call or livestream"> - <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?215" 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/phone.exportedGroupCallInvite" >phone.exportedGroupCallInvite</a></li></ul></div> - <h1 id="dev_page_title">phone.exportedGroupCallInvite</h1> - - <div id="dev_page_content"><p>An invite to a group call or livestream</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/phone.exportedGroupCallInvite" class="current_page_link" >phone.exportedGroupCallInvite</a>#204bd158 link:<a href="/type/string" >string</a> = <a href="/type/phone.ExportedGroupCallInvite" >phone.ExportedGroupCallInvite</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>link</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Invite link</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/phone.ExportedGroupCallInvite">phone.ExportedGroupCallInvite</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="//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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/constructor/phone.groupCall b/data/corefork.telegram.org/constructor/phone.groupCall deleted file mode 100644 index d65bdb9397..0000000000 --- a/data/corefork.telegram.org/constructor/phone.groupCall +++ /dev/null @@ -1,170 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>phone.groupCall</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Contains info about a group call, and partial info about its participants."> - <meta property="og:title" content="phone.groupCall"> - <meta property="og:image" content=""> - <meta property="og:description" content="Contains info about a group call, and partial info about its participants."> - <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?215" 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/phone.groupCall" >phone.groupCall</a></li></ul></div> - <h1 id="dev_page_title">phone.groupCall</h1> - - <div id="dev_page_content"><p>Contains info about a group call, and partial info about its participants.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/phone.groupCall" class="current_page_link" >phone.groupCall</a>#9e727aad call:<a href="/type/GroupCall" >GroupCall</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/GroupCallParticipant" >GroupCallParticipant</a>> participants_next_offset:<a href="/type/string" >string</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/phone.GroupCall" >phone.GroupCall</a>;</code></pre></p> -<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> -<table class="table"> -<thead> -<tr> -<th>Name</th> -<th style="text-align: center;">Type</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><strong>call</strong></td> -<td style="text-align: center;"><a href="/type/GroupCall">GroupCall</a></td> -<td>Info about the group call</td> -</tr> -<tr> -<td><strong>participants</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/GroupCallParticipant">GroupCallParticipant</a>></td> -<td>A partial list of participants.</td> -</tr> -<tr> -<td><strong>participants_next_offset</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Next offset to use when fetching the remaining participants using <a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a></td> -</tr> -<tr> -<td><strong>chats</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> -<td>Chats mentioned in the participants vector</td> -</tr> -<tr> -<td><strong>users</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>Users mentioned in the participants vector</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/phone.GroupCall">phone.GroupCall</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="#phonegetgroupparticipants" id="phonegetgroupparticipants" name="phonegetgroupparticipants"><i class="anchor-icon"></i></a><a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a></h4> -<p>Get group call participants</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/constructor/inputMediaUploadedDocument.html b/data/corefork.telegram.org/constructor/poll.html similarity index 77% rename from data/corefork.telegram.org/constructor/inputMediaUploadedDocument.html rename to data/corefork.telegram.org/constructor/poll.html index bf9668e436..1e5e25a94c 100644 --- a/data/corefork.telegram.org/constructor/inputMediaUploadedDocument.html +++ b/data/corefork.telegram.org/constructor/poll.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputMediaUploadedDocument</title> + <title>poll</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="New document"> - <meta property="og:title" content="inputMediaUploadedDocument"> + <meta property="description" content="Poll"> + <meta property="og:title" content="poll"> <meta property="og:image" content=""> - <meta property="og:description" content="New document"> + <meta property="og:description" content="Poll"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputMediaUploadedDocument" >inputMediaUploadedDocument</a></li></ul></div> - <h1 id="dev_page_title">inputMediaUploadedDocument</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/poll" >poll</a></li></ul></div> + <h1 id="dev_page_title">poll</h1> - <div id="dev_page_content"><p>New document</p> + <div id="dev_page_content"><p>Poll</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputMediaUploadedDocument" class="current_page_link" >inputMediaUploadedDocument</a>#5b38c6c1 flags:<a href="/type/%23" >#</a> nosound_video:flags.3?true force_file:flags.4?true file:<a href="/type/InputFile" >InputFile</a> thumb:flags.2?<a href="/type/InputFile" >InputFile</a> mime_type:<a href="/type/string" >string</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> stickers:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputDocument" >InputDocument</a>> ttl_seconds:flags.1?<a href="/type/int" >int</a> = <a href="/type/InputMedia" >InputMedia</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/poll" class="current_page_link" >poll</a>#86e18161 id:<a href="/type/long" >long</a> flags:<a href="/type/%23" >#</a> closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:<a href="/type/string" >string</a> answers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PollAnswer" >PollAnswer</a>> close_period:flags.4?<a href="/type/int" >int</a> close_date:flags.5?<a href="/type/int" >int</a> = <a href="/type/Poll" >Poll</a>;</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> @@ -64,57 +64,62 @@ </thead> <tbody> <tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>ID of the poll</td> +</tr> +<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>nosound_video</strong></td> +<td><strong>closed</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 the poll is closed and doesn't accept any more answers</td> +</tr> +<tr> +<td><strong>public_voters</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>Whether cast votes are publicly visible to all users (non-anonymous poll)</td> +</tr> +<tr> +<td><strong>multiple_choice</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>Whether multiple options can be chosen as answer</td> +</tr> +<tr> +<td><strong>quiz</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>Whether the specified document is a video file with no audio tracks (a GIF animation (even as MPEG4), for example)</td> +<td>Whether this is a quiz (with wrong and correct answers, results shown in the return type)</td> </tr> <tr> -<td><strong>force_file</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>Force the media file to be uploaded as document</td> -</tr> -<tr> -<td><strong>file</strong></td> -<td style="text-align: center;"><a href="/type/InputFile">InputFile</a></td> -<td>The <a href="/api/files">uploaded file</a></td> -</tr> -<tr> -<td><strong>thumb</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/InputFile">InputFile</a></td> -<td>Thumbnail of the document, uploaded as for the file</td> -</tr> -<tr> -<td><strong>mime_type</strong></td> +<td><strong>question</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>MIME type of document</td> +<td>The question of the poll</td> </tr> <tr> -<td><strong>attributes</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/DocumentAttribute">DocumentAttribute</a>></td> -<td>Attributes that specify the type of the document (video, audio, voice, sticker, etc.)</td> +<td><strong>answers</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/PollAnswer">PollAnswer</a>></td> +<td>The possible answers, vote using <a href="/method/messages.sendVote">messages.sendVote</a>.</td> </tr> <tr> -<td><strong>stickers</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Vector%20t">Vector</a><<a href="/type/InputDocument">InputDocument</a>></td> -<td>Attached stickers</td> +<td><strong>close_period</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/int">int</a></td> +<td>Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with close_date.</td> </tr> <tr> -<td><strong>ttl_seconds</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>Time to live in seconds of self-destructing document</td> +<td><strong>close_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/int">int</a></td> +<td>Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future; can't be used together with close_period.</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/InputMedia">InputMedia</a></p> +<p><a href="/type/Poll">Poll</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="#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></div> +<h4><a class="anchor" href="#messagessendvote" id="messagessendvote" name="messagessendvote"><i class="anchor-icon"></i></a><a href="/method/messages.sendVote">messages.sendVote</a></h4> +<p>Vote in a <a href="/constructor/poll">poll</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/pollResults.html b/data/corefork.telegram.org/constructor/pollResults.html new file mode 100644 index 0000000000..864f573504 --- /dev/null +++ b/data/corefork.telegram.org/constructor/pollResults.html @@ -0,0 +1,184 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>pollResults</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Results of poll"> + <meta property="og:title" content="pollResults"> + <meta property="og:image" content=""> + <meta property="og:description" content="Results of poll"> + <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?215" 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/pollResults" >pollResults</a></li></ul></div> + <h1 id="dev_page_title">pollResults</h1> + + <div id="dev_page_content"><p>Results of poll</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/pollResults" class="current_page_link" >pollResults</a>#dcb82ea3 flags:<a href="/type/%23" >#</a> min:flags.0?true results:flags.1?<a href="/type/Vector%20t" >Vector</a><<a href="/type/PollAnswerVoters" >PollAnswerVoters</a>> total_voters:flags.2?<a href="/type/int" >int</a> recent_voters:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> solution:flags.4?<a href="/type/string" >string</a> solution_entities:flags.4?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/PollResults" >PollResults</a>;</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>min</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>Similar to <a href="/api/min">min</a> objects, used for poll constructors that are the same for all users so they don't have option chosen by the current user (you can use <a href="/method/messages.getPollResults">messages.getPollResults</a> to get the full poll results).</td> +</tr> +<tr> +<td><strong>results</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/Vector%20t">Vector</a><<a href="/type/PollAnswerVoters">PollAnswerVoters</a>></td> +<td>Poll results</td> +</tr> +<tr> +<td><strong>total_voters</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/int">int</a></td> +<td>Total number of people that voted in the poll</td> +</tr> +<tr> +<td><strong>recent_voters</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>></td> +<td>IDs of the last users that recently voted in the poll</td> +</tr> +<tr> +<td><strong>solution</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/string">string</a></td> +<td>Explanation of quiz solution</td> +</tr> +<tr> +<td><strong>solution_entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td><a href="/api/entities">Message entities for styled text in quiz solution</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/PollResults">PollResults</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="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.</p> +<h4><a class="anchor" href="#messagesgetpollresults" id="messagesgetpollresults" name="messagesgetpollresults"><i class="anchor-icon"></i></a><a href="/method/messages.getPollResults">messages.getPollResults</a></h4> +<p>Get poll results</p> +<h4><a class="anchor" href="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/replyKeyboardHide.html b/data/corefork.telegram.org/constructor/replyKeyboardHide.html new file mode 100644 index 0000000000..cd43360855 --- /dev/null +++ b/data/corefork.telegram.org/constructor/replyKeyboardHide.html @@ -0,0 +1,152 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>replyKeyboardHide</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Hide sent bot keyboard"> + <meta property="og:title" content="replyKeyboardHide"> + <meta property="og:image" content=""> + <meta property="og:description" content="Hide sent bot keyboard"> + <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?215" 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/replyKeyboardHide" >replyKeyboardHide</a></li></ul></div> + <h1 id="dev_page_title">replyKeyboardHide</h1> + + <div id="dev_page_content"><p>Hide sent bot keyboard</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/replyKeyboardHide" class="current_page_link" >replyKeyboardHide</a>#a03e5b85 flags:<a href="/type/%23" >#</a> selective:flags.2?true = <a href="/type/ReplyMarkup" >ReplyMarkup</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>selective</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>Use this flag if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.<br><br>Example: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet</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/ReplyMarkup">ReplyMarkup</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/secureCredentialsEncrypted.html b/data/corefork.telegram.org/constructor/secureCredentialsEncrypted.html new file mode 100644 index 0000000000..5e1b6bc939 --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureCredentialsEncrypted.html @@ -0,0 +1,159 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureCredentialsEncrypted</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Encrypted credentials required to decrypt telegram passport data."> + <meta property="og:title" content="secureCredentialsEncrypted"> + <meta property="og:image" content=""> + <meta property="og:description" content="Encrypted credentials required to decrypt telegram passport data."> + <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?215" 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/secureCredentialsEncrypted" >secureCredentialsEncrypted</a></li></ul></div> + <h1 id="dev_page_title">secureCredentialsEncrypted</h1> + + <div id="dev_page_content"><p>Encrypted credentials required to decrypt <a href="/passport">telegram passport</a> data.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureCredentialsEncrypted" class="current_page_link" >secureCredentialsEncrypted</a>#33f0ea47 data:<a href="/type/bytes" >bytes</a> hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureCredentialsEncrypted" >SecureCredentialsEncrypted</a>;</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>data</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Encrypted JSON-serialized data with unique user's payload, data hashes and secrets required for EncryptedPassportElement decryption and authentication, as described in <a href="/passport#decrypting-data">decrypting data »</a></td> +</tr> +<tr> +<td><strong>hash</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Data hash for data authentication as described in <a href="/passport#decrypting-data">decrypting data »</a></td> +</tr> +<tr> +<td><strong>secret</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Secret, encrypted with the bot's public RSA key, required for data decryption as described in <a href="/passport#decrypting-data">decrypting data »</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/SecureCredentialsEncrypted">SecureCredentialsEncrypted</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/inputSecureFile.html b/data/corefork.telegram.org/constructor/secureData.html similarity index 85% rename from data/core.telegram.org/constructor/inputSecureFile.html rename to data/corefork.telegram.org/constructor/secureData.html index aaefa7288d..5b643b2390 100644 --- a/data/core.telegram.org/constructor/inputSecureFile.html +++ b/data/corefork.telegram.org/constructor/secureData.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputSecureFile</title> + <title>secureData</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Preuploaded passport file, for more info see the passport docs »"> - <meta property="og:title" content="inputSecureFile"> + <meta property="description" content="Secure passport data, for more info see the passport docs »"> + <meta property="og:title" content="secureData"> <meta property="og:image" content=""> - <meta property="og:description" content="Preuploaded passport file, for more info see the passport docs »"> + <meta property="og:description" content="Secure passport data, for more info see the passport docs »"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputSecureFile" >inputSecureFile</a></li></ul></div> - <h1 id="dev_page_title">inputSecureFile</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/secureData" >secureData</a></li></ul></div> + <h1 id="dev_page_title">secureData</h1> - <div id="dev_page_content"><p>Preuploaded <a href="/passport">passport</a> file, for more info <a href="/passport/encryption#inputsecurefile">see the passport docs »</a></p> + <div id="dev_page_content"><p>Secure <a href="/passport">passport</a> data, for more info <a href="/passport/encryption#securedata">see the passport docs »</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputSecureFile" class="current_page_link" >inputSecureFile</a>#5367e5be id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputSecureFile" >InputSecureFile</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/secureData" class="current_page_link" >secureData</a>#8aeabec3 data:<a href="/type/bytes" >bytes</a> data_hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureData" >SecureData</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -64,19 +64,24 @@ </thead> <tbody> <tr> -<td><strong>id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Secure file ID</td> +<td><strong>data</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Data</td> </tr> <tr> -<td><strong>access_hash</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Secure file access hash</td> +<td><strong>data_hash</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Data hash</td> +</tr> +<tr> +<td><strong>secret</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Secret</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/InputSecureFile">InputSecureFile</a></p> +<p><a href="/type/SecureData">SecureData</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4> <h4><a class="anchor" href="#telegram-passport-encryption-details" id="telegram-passport-encryption-details" name="telegram-passport-encryption-details"><i class="anchor-icon"></i></a><a href="/passport/encryption">Telegram Passport Encryption Details</a></h4></div> @@ -118,9 +123,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -137,7 +142,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/constructor/secureFile.html b/data/corefork.telegram.org/constructor/secureFile.html new file mode 100644 index 0000000000..1302ab99e3 --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureFile.html @@ -0,0 +1,180 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureFile</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Secure passport file, for more info see the passport docs »"> + <meta property="og:title" content="secureFile"> + <meta property="og:image" content=""> + <meta property="og:description" content="Secure passport file, for more info see the passport docs »"> + <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?215" 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/secureFile" >secureFile</a></li></ul></div> + <h1 id="dev_page_title">secureFile</h1> + + <div id="dev_page_content"><p>Secure <a href="/passport">passport</a> file, for more info <a href="/passport/encryption#inputsecurefile">see the passport docs »</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureFile" class="current_page_link" >secureFile</a>#e0277a62 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> size:<a href="/type/int" >int</a> dc_id:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> file_hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureFile" >SecureFile</a>;</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>ID</td> +</tr> +<tr> +<td><strong>access_hash</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Access hash</td> +</tr> +<tr> +<td><strong>size</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>File size</td> +</tr> +<tr> +<td><strong>dc_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>DC ID</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Date of upload</td> +</tr> +<tr> +<td><strong>file_hash</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>File hash</td> +</tr> +<tr> +<td><strong>secret</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Secret</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/SecureFile">SecureFile</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4> +<h4><a class="anchor" href="#telegram-passport-encryption-details" id="telegram-passport-encryption-details" name="telegram-passport-encryption-details"><i class="anchor-icon"></i></a><a href="/passport/encryption">Telegram Passport Encryption Details</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/secureValue.html b/data/corefork.telegram.org/constructor/secureValue.html new file mode 100644 index 0000000000..24dbd1116d --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureValue.html @@ -0,0 +1,194 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValue</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Secure value"> + <meta property="og:title" content="secureValue"> + <meta property="og:image" content=""> + <meta property="og:description" content="Secure value"> + <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?215" 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/secureValue" >secureValue</a></li></ul></div> + <h1 id="dev_page_title">secureValue</h1> + + <div id="dev_page_content"><p>Secure value</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValue" class="current_page_link" >secureValue</a>#187fa0ca flags:<a href="/type/%23" >#</a> type:<a href="/type/SecureValueType" >SecureValueType</a> data:flags.0?<a href="/type/SecureData" >SecureData</a> front_side:flags.1?<a href="/type/SecureFile" >SecureFile</a> reverse_side:flags.2?<a href="/type/SecureFile" >SecureFile</a> selfie:flags.3?<a href="/type/SecureFile" >SecureFile</a> translation:flags.6?<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureFile" >SecureFile</a>> files:flags.4?<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureFile" >SecureFile</a>> plain_data:flags.5?<a href="/type/SecurePlainData" >SecurePlainData</a> hash:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureValue" >SecureValue</a>;</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>type</strong></td> +<td style="text-align: center;"><a href="/type/SecureValueType">SecureValueType</a></td> +<td>Secure <a href="/passport">passport</a> value type</td> +</tr> +<tr> +<td><strong>data</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/SecureData">SecureData</a></td> +<td>Encrypted <a href="/passport">Telegram Passport</a> element data</td> +</tr> +<tr> +<td><strong>front_side</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/SecureFile">SecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the front side of the document</td> +</tr> +<tr> +<td><strong>reverse_side</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/SecureFile">SecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the reverse side of the document</td> +</tr> +<tr> +<td><strong>selfie</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/SecureFile">SecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with a selfie of the user holding the document</td> +</tr> +<tr> +<td><strong>translation</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/Vector%20t">Vector</a><<a href="/type/SecureFile">SecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with translated versions of the provided documents</td> +</tr> +<tr> +<td><strong>files</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/SecureFile">SecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with photos the of the documents</td> +</tr> +<tr> +<td><strong>plain_data</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/SecurePlainData">SecurePlainData</a></td> +<td>Plaintext verified <a href="/passport">passport</a> data</td> +</tr> +<tr> +<td><strong>hash</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Data hash</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/SecureValue">SecureValue</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/secureValueTypeAddress.html b/data/corefork.telegram.org/constructor/secureValueTypeAddress.html new file mode 100644 index 0000000000..1c1497b354 --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureValueTypeAddress.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypeAddress</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Address"> + <meta property="og:title" content="secureValueTypeAddress"> + <meta property="og:image" content=""> + <meta property="og:description" content="Address"> + <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?215" 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/secureValueTypeAddress" >secureValueTypeAddress</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeAddress</h1> + + <div id="dev_page_content"><p>Address</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeAddress" class="current_page_link" >secureValueTypeAddress</a>#cbe31e26 = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/secureValueTypeBankStatement.html b/data/corefork.telegram.org/constructor/secureValueTypeBankStatement.html new file mode 100644 index 0000000000..3bece8b5f6 --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureValueTypeBankStatement.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypeBankStatement</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Bank statement"> + <meta property="og:title" content="secureValueTypeBankStatement"> + <meta property="og:image" content=""> + <meta property="og:description" content="Bank statement"> + <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?215" 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/secureValueTypeBankStatement" >secureValueTypeBankStatement</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeBankStatement</h1> + + <div id="dev_page_content"><p>Bank statement</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeBankStatement" class="current_page_link" >secureValueTypeBankStatement</a>#89137c0d = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/secureValueTypeDriverLicense.html b/data/corefork.telegram.org/constructor/secureValueTypeDriverLicense.html new file mode 100644 index 0000000000..babcab882e --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureValueTypeDriverLicense.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypeDriverLicense</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Driver's license"> + <meta property="og:title" content="secureValueTypeDriverLicense"> + <meta property="og:image" content=""> + <meta property="og:description" content="Driver's license"> + <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?215" 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/secureValueTypeDriverLicense" >secureValueTypeDriverLicense</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeDriverLicense</h1> + + <div id="dev_page_content"><p>Driver's license</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeDriverLicense" class="current_page_link" >secureValueTypeDriverLicense</a>#6e425c4 = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inputPrivacyValueDisallowContacts.html b/data/corefork.telegram.org/constructor/secureValueTypeEmail.html similarity index 91% rename from data/corefork.telegram.org/constructor/inputPrivacyValueDisallowContacts.html rename to data/corefork.telegram.org/constructor/secureValueTypeEmail.html index 13f3961173..aa7c0e0f68 100644 --- a/data/corefork.telegram.org/constructor/inputPrivacyValueDisallowContacts.html +++ b/data/corefork.telegram.org/constructor/secureValueTypeEmail.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputPrivacyValueDisallowContacts</title> + <title>secureValueTypeEmail</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Disallow only contacts"> - <meta property="og:title" content="inputPrivacyValueDisallowContacts"> + <meta property="description" content="Email"> + <meta property="og:title" content="secureValueTypeEmail"> <meta property="og:image" content=""> - <meta property="og:description" content="Disallow only contacts"> + <meta property="og:description" content="Email"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputPrivacyValueDisallowContacts" >inputPrivacyValueDisallowContacts</a></li></ul></div> - <h1 id="dev_page_title">inputPrivacyValueDisallowContacts</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/secureValueTypeEmail" >secureValueTypeEmail</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeEmail</h1> - <div id="dev_page_content"><p>Disallow only contacts</p> + <div id="dev_page_content"><p>Email</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputPrivacyValueDisallowContacts" class="current_page_link" >inputPrivacyValueDisallowContacts</a>#ba52007 = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeEmail" class="current_page_link" >secureValueTypeEmail</a>#8e3ca7ee = <a href="/type/SecureValueType" >SecureValueType</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/InputPrivacyRule">InputPrivacyRule</a></p></div> +<p><a href="/type/SecureValueType">SecureValueType</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/secureValueTypeIdentityCard.html b/data/corefork.telegram.org/constructor/secureValueTypeIdentityCard.html new file mode 100644 index 0000000000..15a907e957 --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureValueTypeIdentityCard.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypeIdentityCard</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Identity card"> + <meta property="og:title" content="secureValueTypeIdentityCard"> + <meta property="og:image" content=""> + <meta property="og:description" content="Identity card"> + <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?215" 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/secureValueTypeIdentityCard" >secureValueTypeIdentityCard</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeIdentityCard</h1> + + <div id="dev_page_content"><p>Identity card</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeIdentityCard" class="current_page_link" >secureValueTypeIdentityCard</a>#a0d0744b = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inlineQueryPeerTypeChat.html b/data/corefork.telegram.org/constructor/secureValueTypeInternalPassport.html similarity index 89% rename from data/corefork.telegram.org/constructor/inlineQueryPeerTypeChat.html rename to data/corefork.telegram.org/constructor/secureValueTypeInternalPassport.html index 10677b9ffe..4fda53c4ca 100644 --- a/data/corefork.telegram.org/constructor/inlineQueryPeerTypeChat.html +++ b/data/corefork.telegram.org/constructor/secureValueTypeInternalPassport.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inlineQueryPeerTypeChat</title> + <title>secureValueTypeInternalPassport</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="The inline query was sent in a chat"> - <meta property="og:title" content="inlineQueryPeerTypeChat"> + <meta property="description" content="Internal passport"> + <meta property="og:title" content="secureValueTypeInternalPassport"> <meta property="og:image" content=""> - <meta property="og:description" content="The inline query was sent in a chat"> + <meta property="og:description" content="Internal passport"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inlineQueryPeerTypeChat" >inlineQueryPeerTypeChat</a></li></ul></div> - <h1 id="dev_page_title">inlineQueryPeerTypeChat</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/secureValueTypeInternalPassport" >secureValueTypeInternalPassport</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeInternalPassport</h1> - <div id="dev_page_content"><p>The inline query was sent in a <a href="/api/channel">chat</a></p> + <div id="dev_page_content"><p>Internal <a href="/passport">passport</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,14 +52,13 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inlineQueryPeerTypeChat" class="current_page_link" >inlineQueryPeerTypeChat</a>#d766c50a = <a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeInternalPassport" class="current_page_link" >secureValueTypeInternalPassport</a>#99a48f23 = <a href="/type/SecureValueType" >SecureValueType</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <p>This constructor does not require any parameters.</p> <h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> -<p><a href="/type/InlineQueryPeerType">InlineQueryPeerType</a></p> +<p><a href="/type/SecureValueType">SecureValueType</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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> -<p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></div> </div> diff --git a/data/corefork.telegram.org/constructor/secureValueTypePassport.html b/data/corefork.telegram.org/constructor/secureValueTypePassport.html new file mode 100644 index 0000000000..dc61d341fe --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureValueTypePassport.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypePassport</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Passport"> + <meta property="og:title" content="secureValueTypePassport"> + <meta property="og:image" content=""> + <meta property="og:description" content="Passport"> + <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?215" 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/secureValueTypePassport" >secureValueTypePassport</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypePassport</h1> + + <div id="dev_page_content"><p>Passport</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypePassport" class="current_page_link" >secureValueTypePassport</a>#3dac6a00 = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inputMessagesFilterMyMentions.html b/data/corefork.telegram.org/constructor/secureValueTypePassportRegistration.html similarity index 87% rename from data/corefork.telegram.org/constructor/inputMessagesFilterMyMentions.html rename to data/corefork.telegram.org/constructor/secureValueTypePassportRegistration.html index 4a36089329..b70c4991b7 100644 --- a/data/corefork.telegram.org/constructor/inputMessagesFilterMyMentions.html +++ b/data/corefork.telegram.org/constructor/secureValueTypePassportRegistration.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputMessagesFilterMyMentions</title> + <title>secureValueTypePassportRegistration</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Return only messages where the current user was mentioned."> - <meta property="og:title" content="inputMessagesFilterMyMentions"> + <meta property="description" content="Internal registration passport"> + <meta property="og:title" content="secureValueTypePassportRegistration"> <meta property="og:image" content=""> - <meta property="og:description" content="Return only messages where the current user was mentioned."> + <meta property="og:description" content="Internal registration passport"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputMessagesFilterMyMentions" >inputMessagesFilterMyMentions</a></li></ul></div> - <h1 id="dev_page_title">inputMessagesFilterMyMentions</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/secureValueTypePassportRegistration" >secureValueTypePassportRegistration</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypePassportRegistration</h1> - <div id="dev_page_content"><p>Return only messages where the current user was <a href="/api/mentions">mentioned</a>.</p> + <div id="dev_page_content"><p>Internal registration <a href="/passport">passport</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,14 +52,13 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputMessagesFilterMyMentions" class="current_page_link" >inputMessagesFilterMyMentions</a>#c1f8e69a = <a href="/type/MessagesFilter" >MessagesFilter</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypePassportRegistration" class="current_page_link" >secureValueTypePassportRegistration</a>#99e3806a = <a href="/type/SecureValueType" >SecureValueType</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/MessagesFilter">MessagesFilter</a></p> +<p><a href="/type/SecureValueType">SecureValueType</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="#mentions" id="mentions" name="mentions"><i class="anchor-icon"></i></a><a href="/api/mentions">Mentions</a></h4> -<p>Telegram allows mentioning other users in case of urgent duckling matters, and quickly navigating to those mentions in order to read them as swiftly as possible.</p></div> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></div> </div> diff --git a/data/corefork.telegram.org/constructor/secureValueTypePersonalDetails.html b/data/corefork.telegram.org/constructor/secureValueTypePersonalDetails.html new file mode 100644 index 0000000000..022f29e3e5 --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureValueTypePersonalDetails.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypePersonalDetails</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Personal details"> + <meta property="og:title" content="secureValueTypePersonalDetails"> + <meta property="og:image" content=""> + <meta property="og:description" content="Personal details"> + <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?215" 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/secureValueTypePersonalDetails" >secureValueTypePersonalDetails</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypePersonalDetails</h1> + + <div id="dev_page_content"><p>Personal details</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypePersonalDetails" class="current_page_link" >secureValueTypePersonalDetails</a>#9d2a81e3 = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/secureValueTypeRentalAgreement.html b/data/corefork.telegram.org/constructor/secureValueTypeRentalAgreement.html new file mode 100644 index 0000000000..dd9f2e1c44 --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureValueTypeRentalAgreement.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypeRentalAgreement</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Rental agreement"> + <meta property="og:title" content="secureValueTypeRentalAgreement"> + <meta property="og:image" content=""> + <meta property="og:description" content="Rental agreement"> + <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?215" 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/secureValueTypeRentalAgreement" >secureValueTypeRentalAgreement</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeRentalAgreement</h1> + + <div id="dev_page_content"><p>Rental agreement</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeRentalAgreement" class="current_page_link" >secureValueTypeRentalAgreement</a>#8b883488 = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/secureValueTypeTemporaryRegistration.html b/data/corefork.telegram.org/constructor/secureValueTypeTemporaryRegistration.html new file mode 100644 index 0000000000..e5ed262ca8 --- /dev/null +++ b/data/corefork.telegram.org/constructor/secureValueTypeTemporaryRegistration.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>secureValueTypeTemporaryRegistration</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Temporary registration"> + <meta property="og:title" content="secureValueTypeTemporaryRegistration"> + <meta property="og:image" content=""> + <meta property="og:description" content="Temporary registration"> + <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?215" 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/secureValueTypeTemporaryRegistration" >secureValueTypeTemporaryRegistration</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeTemporaryRegistration</h1> + + <div id="dev_page_content"><p>Temporary registration</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeTemporaryRegistration" class="current_page_link" >secureValueTypeTemporaryRegistration</a>#ea02ec33 = <a href="/type/SecureValueType" >SecureValueType</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/SecureValueType">SecureValueType</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/decryptedMessageActionNoop.html b/data/corefork.telegram.org/constructor/secureValueTypeUtilityBill.html similarity index 91% rename from data/corefork.telegram.org/constructor/decryptedMessageActionNoop.html rename to data/corefork.telegram.org/constructor/secureValueTypeUtilityBill.html index f458ff7207..964f3b3a37 100644 --- a/data/corefork.telegram.org/constructor/decryptedMessageActionNoop.html +++ b/data/corefork.telegram.org/constructor/secureValueTypeUtilityBill.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>decryptedMessageActionNoop</title> + <title>secureValueTypeUtilityBill</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="NOOP action"> - <meta property="og:title" content="decryptedMessageActionNoop"> + <meta property="description" content="Utility bill"> + <meta property="og:title" content="secureValueTypeUtilityBill"> <meta property="og:image" content=""> - <meta property="og:description" content="NOOP action"> + <meta property="og:description" content="Utility bill"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/decryptedMessageActionNoop" >decryptedMessageActionNoop</a></li></ul></div> - <h1 id="dev_page_title">decryptedMessageActionNoop</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/secureValueTypeUtilityBill" >secureValueTypeUtilityBill</a></li></ul></div> + <h1 id="dev_page_title">secureValueTypeUtilityBill</h1> - <div id="dev_page_content"><p>NOOP action</p> + <div id="dev_page_content"><p>Utility bill</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,12 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code>===20=== -<a href="/constructor/decryptedMessageActionNoop" class="current_page_link" >decryptedMessageActionNoop</a>#a82fdd63 = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypeUtilityBill" class="current_page_link" >secureValueTypeUtilityBill</a>#fc36954e = <a href="/type/SecureValueType" >SecureValueType</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/DecryptedMessageAction">DecryptedMessageAction</a></p></div> +<p><a href="/type/SecureValueType">SecureValueType</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/statsPercentValue.html b/data/corefork.telegram.org/constructor/topPeer.html similarity index 85% rename from data/corefork.telegram.org/constructor/statsPercentValue.html rename to data/corefork.telegram.org/constructor/topPeer.html index d6718df044..aae8b55857 100644 --- a/data/corefork.telegram.org/constructor/statsPercentValue.html +++ b/data/corefork.telegram.org/constructor/topPeer.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>statsPercentValue</title> + <title>topPeer</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Channel statistics percentage. Compute the percentage simply by doing part * total / 100"> - <meta property="og:title" content="statsPercentValue"> + <meta property="description" content="Top peer"> + <meta property="og:title" content="topPeer"> <meta property="og:image" content=""> - <meta property="og:description" content="Channel statistics percentage. Compute the percentage simply by doing part * total / 100"> + <meta property="og:description" content="Top peer"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,11 +36,10 @@ <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/statsPercentValue" >statsPercentValue</a></li></ul></div> - <h1 id="dev_page_title">statsPercentValue</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/topPeer" >topPeer</a></li></ul></div> + <h1 id="dev_page_title">topPeer</h1> - <div id="dev_page_content"><p><a href="/api/stats">Channel statistics percentage</a>.<br> -Compute the percentage simply by doing <code>part * total / 100</code></p> + <div id="dev_page_content"><p>Top peer</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -53,7 +52,7 @@ Compute the percentage simply by doing <code>part * total / 100</code></p> </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/statsPercentValue" class="current_page_link" >statsPercentValue</a>#cbce2fe0 part:<a href="/type/double" >double</a> total:<a href="/type/double" >double</a> = <a href="/type/StatsPercentValue" >StatsPercentValue</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/topPeer" class="current_page_link" >topPeer</a>#edcdc05b peer:<a href="/type/Peer" >Peer</a> rating:<a href="/type/double" >double</a> = <a href="/type/TopPeer" >TopPeer</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> @@ -65,22 +64,22 @@ Compute the percentage simply by doing <code>part * total / 100</code></p> </thead> <tbody> <tr> -<td><strong>part</strong></td> -<td style="text-align: center;"><a href="/type/double">double</a></td> -<td>Partial value</td> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> +<td>Peer</td> </tr> <tr> -<td><strong>total</strong></td> +<td><strong>rating</strong></td> <td style="text-align: center;"><a href="/type/double">double</a></td> -<td>Total value</td> +<td>Rating as computed in <a href="/api/top-rating">top peer rating »</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/StatsPercentValue">StatsPercentValue</a></p> +<p><a href="/type/TopPeer">TopPeer</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="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> -<p>Telegram offers detailed channel statistics for channels and supergroups.</p></div> +<h4><a class="anchor" href="#top-peer-rating" id="top-peer-rating" name="top-peer-rating"><i class="anchor-icon"></i></a><a href="/api/top-rating">Top peer rating</a></h4> +<p>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).</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/inputPrivacyValueAllowAll.html b/data/corefork.telegram.org/constructor/topPeerCategoryBotsInline.html similarity index 92% rename from data/corefork.telegram.org/constructor/inputPrivacyValueAllowAll.html rename to data/corefork.telegram.org/constructor/topPeerCategoryBotsInline.html index 9ebfae5431..88a29e8c29 100644 --- a/data/corefork.telegram.org/constructor/inputPrivacyValueAllowAll.html +++ b/data/corefork.telegram.org/constructor/topPeerCategoryBotsInline.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputPrivacyValueAllowAll</title> + <title>topPeerCategoryBotsInline</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Allow all users"> - <meta property="og:title" content="inputPrivacyValueAllowAll"> + <meta property="description" content="Most used inline bots"> + <meta property="og:title" content="topPeerCategoryBotsInline"> <meta property="og:image" content=""> - <meta property="og:description" content="Allow all users"> + <meta property="og:description" content="Most used inline bots"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputPrivacyValueAllowAll" >inputPrivacyValueAllowAll</a></li></ul></div> - <h1 id="dev_page_title">inputPrivacyValueAllowAll</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/topPeerCategoryBotsInline" >topPeerCategoryBotsInline</a></li></ul></div> + <h1 id="dev_page_title">topPeerCategoryBotsInline</h1> - <div id="dev_page_content"><p>Allow all users</p> + <div id="dev_page_content"><p>Most used inline bots</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputPrivacyValueAllowAll" class="current_page_link" >inputPrivacyValueAllowAll</a>#184b35ce = <a href="/type/InputPrivacyRule" >InputPrivacyRule</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryBotsInline" class="current_page_link" >topPeerCategoryBotsInline</a>#148677e2 = <a href="/type/TopPeerCategory" >TopPeerCategory</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/InputPrivacyRule">InputPrivacyRule</a></p></div> +<p><a href="/type/TopPeerCategory">TopPeerCategory</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/topPeerCategoryBotsPM.html b/data/corefork.telegram.org/constructor/topPeerCategoryBotsPM.html new file mode 100644 index 0000000000..7555aa5b7b --- /dev/null +++ b/data/corefork.telegram.org/constructor/topPeerCategoryBotsPM.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>topPeerCategoryBotsPM</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Most used bots"> + <meta property="og:title" content="topPeerCategoryBotsPM"> + <meta property="og:image" content=""> + <meta property="og:description" content="Most used bots"> + <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?215" 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/topPeerCategoryBotsPM" >topPeerCategoryBotsPM</a></li></ul></div> + <h1 id="dev_page_title">topPeerCategoryBotsPM</h1> + + <div id="dev_page_content"><p>Most used bots</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryBotsPM" class="current_page_link" >topPeerCategoryBotsPM</a>#ab661b5b = <a href="/type/TopPeerCategory" >TopPeerCategory</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/TopPeerCategory">TopPeerCategory</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/topPeerCategoryChannels.html b/data/corefork.telegram.org/constructor/topPeerCategoryChannels.html new file mode 100644 index 0000000000..6e95852db4 --- /dev/null +++ b/data/corefork.telegram.org/constructor/topPeerCategoryChannels.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>topPeerCategoryChannels</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Most frequently visited channels"> + <meta property="og:title" content="topPeerCategoryChannels"> + <meta property="og:image" content=""> + <meta property="og:description" content="Most frequently visited channels"> + <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?215" 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/topPeerCategoryChannels" >topPeerCategoryChannels</a></li></ul></div> + <h1 id="dev_page_title">topPeerCategoryChannels</h1> + + <div id="dev_page_content"><p>Most frequently visited channels</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryChannels" class="current_page_link" >topPeerCategoryChannels</a>#161d9628 = <a href="/type/TopPeerCategory" >TopPeerCategory</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/TopPeerCategory">TopPeerCategory</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/topPeerCategoryCorrespondents.html b/data/corefork.telegram.org/constructor/topPeerCategoryCorrespondents.html new file mode 100644 index 0000000000..8d8c2a2863 --- /dev/null +++ b/data/corefork.telegram.org/constructor/topPeerCategoryCorrespondents.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>topPeerCategoryCorrespondents</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Users we've chatted most frequently with"> + <meta property="og:title" content="topPeerCategoryCorrespondents"> + <meta property="og:image" content=""> + <meta property="og:description" content="Users we've chatted most frequently with"> + <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?215" 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/topPeerCategoryCorrespondents" >topPeerCategoryCorrespondents</a></li></ul></div> + <h1 id="dev_page_title">topPeerCategoryCorrespondents</h1> + + <div id="dev_page_content"><p>Users we've chatted most frequently with</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryCorrespondents" class="current_page_link" >topPeerCategoryCorrespondents</a>#637b7ed = <a href="/type/TopPeerCategory" >TopPeerCategory</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/TopPeerCategory">TopPeerCategory</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inputPrivacyKeyStatusTimestamp.html b/data/corefork.telegram.org/constructor/topPeerCategoryForwardChats.html similarity index 90% rename from data/corefork.telegram.org/constructor/inputPrivacyKeyStatusTimestamp.html rename to data/corefork.telegram.org/constructor/topPeerCategoryForwardChats.html index 44820d0b49..27ccb1b3b0 100644 --- a/data/corefork.telegram.org/constructor/inputPrivacyKeyStatusTimestamp.html +++ b/data/corefork.telegram.org/constructor/topPeerCategoryForwardChats.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputPrivacyKeyStatusTimestamp</title> + <title>topPeerCategoryForwardChats</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Whether we can see the exact last online timestamp of the user"> - <meta property="og:title" content="inputPrivacyKeyStatusTimestamp"> + <meta property="description" content="Chats to which the users often forwards messages to"> + <meta property="og:title" content="topPeerCategoryForwardChats"> <meta property="og:image" content=""> - <meta property="og:description" content="Whether we can see the exact last online timestamp of the user"> + <meta property="og:description" content="Chats to which the users often forwards messages to"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputPrivacyKeyStatusTimestamp" >inputPrivacyKeyStatusTimestamp</a></li></ul></div> - <h1 id="dev_page_title">inputPrivacyKeyStatusTimestamp</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/topPeerCategoryForwardChats" >topPeerCategoryForwardChats</a></li></ul></div> + <h1 id="dev_page_title">topPeerCategoryForwardChats</h1> - <div id="dev_page_content"><p>Whether we can see the exact last online timestamp of the user</p> + <div id="dev_page_content"><p>Chats to which the users often forwards messages to</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputPrivacyKeyStatusTimestamp" class="current_page_link" >inputPrivacyKeyStatusTimestamp</a>#4f96cb18 = <a href="/type/InputPrivacyKey" >InputPrivacyKey</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryForwardChats" class="current_page_link" >topPeerCategoryForwardChats</a>#fbeec0f0 = <a href="/type/TopPeerCategory" >TopPeerCategory</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/InputPrivacyKey">InputPrivacyKey</a></p></div> +<p><a href="/type/TopPeerCategory">TopPeerCategory</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/topPeerCategoryForwardUsers.html b/data/corefork.telegram.org/constructor/topPeerCategoryForwardUsers.html new file mode 100644 index 0000000000..28f0729f2f --- /dev/null +++ b/data/corefork.telegram.org/constructor/topPeerCategoryForwardUsers.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>topPeerCategoryForwardUsers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Users to which the users often forwards messages to"> + <meta property="og:title" content="topPeerCategoryForwardUsers"> + <meta property="og:image" content=""> + <meta property="og:description" content="Users to which the users often forwards messages to"> + <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?215" 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/topPeerCategoryForwardUsers" >topPeerCategoryForwardUsers</a></li></ul></div> + <h1 id="dev_page_title">topPeerCategoryForwardUsers</h1> + + <div id="dev_page_content"><p>Users to which the users often forwards messages to</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryForwardUsers" class="current_page_link" >topPeerCategoryForwardUsers</a>#a8406ca9 = <a href="/type/TopPeerCategory" >TopPeerCategory</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/TopPeerCategory">TopPeerCategory</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/topPeerCategoryGroups.html b/data/corefork.telegram.org/constructor/topPeerCategoryGroups.html new file mode 100644 index 0000000000..ec756ecbb1 --- /dev/null +++ b/data/corefork.telegram.org/constructor/topPeerCategoryGroups.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>topPeerCategoryGroups</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Often-opened groups and supergroups"> + <meta property="og:title" content="topPeerCategoryGroups"> + <meta property="og:image" content=""> + <meta property="og:description" content="Often-opened groups and supergroups"> + <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?215" 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/topPeerCategoryGroups" >topPeerCategoryGroups</a></li></ul></div> + <h1 id="dev_page_title">topPeerCategoryGroups</h1> + + <div id="dev_page_content"><p>Often-opened groups and supergroups</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryGroups" class="current_page_link" >topPeerCategoryGroups</a>#bd17a14a = <a href="/type/TopPeerCategory" >TopPeerCategory</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/TopPeerCategory">TopPeerCategory</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/topPeerCategoryPhoneCalls.html b/data/corefork.telegram.org/constructor/topPeerCategoryPhoneCalls.html new file mode 100644 index 0000000000..85a5d09006 --- /dev/null +++ b/data/corefork.telegram.org/constructor/topPeerCategoryPhoneCalls.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>topPeerCategoryPhoneCalls</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Most frequently called users"> + <meta property="og:title" content="topPeerCategoryPhoneCalls"> + <meta property="og:image" content=""> + <meta property="og:description" content="Most frequently called users"> + <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?215" 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/topPeerCategoryPhoneCalls" >topPeerCategoryPhoneCalls</a></li></ul></div> + <h1 id="dev_page_title">topPeerCategoryPhoneCalls</h1> + + <div id="dev_page_content"><p>Most frequently called users</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryPhoneCalls" class="current_page_link" >topPeerCategoryPhoneCalls</a>#1e76a78c = <a href="/type/TopPeerCategory" >TopPeerCategory</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/TopPeerCategory">TopPeerCategory</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/constructor/updateDialogFilter.html b/data/corefork.telegram.org/constructor/updateDialogFilter.html similarity index 98% rename from data/core.telegram.org/constructor/updateDialogFilter.html rename to data/corefork.telegram.org/constructor/updateDialogFilter.html index eece7615f2..2731c3ce3b 100644 --- a/data/core.telegram.org/constructor/updateDialogFilter.html +++ b/data/corefork.telegram.org/constructor/updateDialogFilter.html @@ -123,9 +123,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -142,7 +142,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/constructor/updateDeleteScheduledMessages.html b/data/corefork.telegram.org/constructor/updateDialogFilterOrder.html similarity index 85% rename from data/corefork.telegram.org/constructor/updateDeleteScheduledMessages.html rename to data/corefork.telegram.org/constructor/updateDialogFilterOrder.html index b378b8ec13..8728715ab0 100644 --- a/data/corefork.telegram.org/constructor/updateDeleteScheduledMessages.html +++ b/data/corefork.telegram.org/constructor/updateDialogFilterOrder.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>updateDeleteScheduledMessages</title> + <title>updateDialogFilterOrder</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Some scheduled messages were deleted from the schedule queue of a chat"> - <meta property="og:title" content="updateDeleteScheduledMessages"> + <meta property="description" content="New folder order"> + <meta property="og:title" content="updateDialogFilterOrder"> <meta property="og:image" content=""> - <meta property="og:description" content="Some scheduled messages were deleted from the schedule queue of a chat"> + <meta property="og:description" content="New folder order"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/updateDeleteScheduledMessages" >updateDeleteScheduledMessages</a></li></ul></div> - <h1 id="dev_page_title">updateDeleteScheduledMessages</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateDialogFilterOrder" >updateDialogFilterOrder</a></li></ul></div> + <h1 id="dev_page_title">updateDialogFilterOrder</h1> - <div id="dev_page_content"><p>Some <a href="/api/scheduled-messages">scheduled messages</a> were deleted from the schedule queue of a chat</p> + <div id="dev_page_content"><p>New <a href="/api/folders">folder</a> order</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/updateDeleteScheduledMessages" class="current_page_link" >updateDeleteScheduledMessages</a>#90866cee peer:<a href="/type/Peer" >Peer</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" >Update</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateDialogFilterOrder" class="current_page_link" >updateDialogFilterOrder</a>#a5d72105 order:<a href="/type/Vector%20t" >Vector</a><<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> @@ -64,22 +64,17 @@ </thead> <tbody> <tr> -<td><strong>peer</strong></td> -<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> -<td>Peer</td> -</tr> -<tr> -<td><strong>messages</strong></td> +<td><strong>order</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> -<td>Deleted scheduled messages</td> +<td>Ordered <a href="/api/folders">folder IDs</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="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> -<p>Telegram allows scheduling messages</p></div> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/updateDialogFilters.html b/data/corefork.telegram.org/constructor/updateDialogFilters.html new file mode 100644 index 0000000000..0be8003fbf --- /dev/null +++ b/data/corefork.telegram.org/constructor/updateDialogFilters.html @@ -0,0 +1,135 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updateDialogFilters</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Clients should update folder info"> + <meta property="og:title" content="updateDialogFilters"> + <meta property="og:image" content=""> + <meta property="og:description" content="Clients should update folder 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?215" 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/updateDialogFilters" >updateDialogFilters</a></li></ul></div> + <h1 id="dev_page_title">updateDialogFilters</h1> + + <div id="dev_page_content"><p>Clients should update <a href="/api/folders">folder</a> info</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updateDialogFilters" class="current_page_link" >updateDialogFilters</a>#3504914f = <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> +<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/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="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/accountDaysTTL.html b/data/corefork.telegram.org/constructor/updateEncryption.html similarity index 89% rename from data/corefork.telegram.org/constructor/accountDaysTTL.html rename to data/corefork.telegram.org/constructor/updateEncryption.html index daf9ec750c..db8f4479c4 100644 --- a/data/corefork.telegram.org/constructor/accountDaysTTL.html +++ b/data/corefork.telegram.org/constructor/updateEncryption.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>accountDaysTTL</title> + <title>updateEncryption</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Time to live in days of the current account"> - <meta property="og:title" content="accountDaysTTL"> + <meta property="description" content="Change of state in an encrypted chat."> + <meta property="og:title" content="updateEncryption"> <meta property="og:image" content=""> - <meta property="og:description" content="Time to live in days of the current account"> + <meta property="og:description" content="Change of state in an encrypted chat."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/accountDaysTTL" >accountDaysTTL</a></li></ul></div> - <h1 id="dev_page_title">accountDaysTTL</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateEncryption" >updateEncryption</a></li></ul></div> + <h1 id="dev_page_title">updateEncryption</h1> - <div id="dev_page_content"><p>Time to live in days of the current account</p> + <div id="dev_page_content"><p>Change of state in an encrypted chat.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/accountDaysTTL" class="current_page_link" >accountDaysTTL</a>#b8d0afdf days:<a href="/type/int" >int</a> = <a href="/type/AccountDaysTTL" >AccountDaysTTL</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateEncryption" class="current_page_link" >updateEncryption</a>#b4a2e88d chat:<a href="/type/EncryptedChat" >EncryptedChat</a> date:<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> @@ -64,14 +64,19 @@ </thead> <tbody> <tr> -<td><strong>days</strong></td> +<td><strong>chat</strong></td> +<td style="text-align: center;"><a href="/type/EncryptedChat">EncryptedChat</a></td> +<td>Encrypted chat</td> +</tr> +<tr> +<td><strong>date</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>This account will self-destruct in the specified number of days</td> +<td>Date of change</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/AccountDaysTTL">AccountDaysTTL</a></p></div> +<p><a href="/type/Update">Update</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/updateFolderPeers.html b/data/corefork.telegram.org/constructor/updateFolderPeers.html new file mode 100644 index 0000000000..43bcabc7f8 --- /dev/null +++ b/data/corefork.telegram.org/constructor/updateFolderPeers.html @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updateFolderPeers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="The peer list of a peer folder was updated"> + <meta property="og:title" content="updateFolderPeers"> + <meta property="og:image" content=""> + <meta property="og:description" content="The peer list of a peer folder was updated"> + <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?215" 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/updateFolderPeers" >updateFolderPeers</a></li></ul></div> + <h1 id="dev_page_title">updateFolderPeers</h1> + + <div id="dev_page_content"><p>The peer list of a <a href="/api/folders#peer-folders">peer folder</a> was updated</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updateFolderPeers" class="current_page_link" >updateFolderPeers</a>#19360dc0 folder_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/FolderPeer" >FolderPeer</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</code></pre></p> +<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>folder_peers</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/FolderPeer">FolderPeer</a>></td> +<td>New peer list</td> +</tr> +<tr> +<td><strong>pts</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/updates">Event count after generation</a></td> +</tr> +<tr> +<td><strong>pts_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/updates">Number of events that were generated</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> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/updateLoginToken.html b/data/corefork.telegram.org/constructor/updateLoginToken.html new file mode 100644 index 0000000000..b49cabf6c4 --- /dev/null +++ b/data/corefork.telegram.org/constructor/updateLoginToken.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updateLoginToken</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="A login token (for login via QR code) was accepted."> + <meta property="og:title" content="updateLoginToken"> + <meta property="og:image" content=""> + <meta property="og:description" content="A login token (for login via QR code) was accepted."> + <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?215" 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/updateLoginToken" >updateLoginToken</a></li></ul></div> + <h1 id="dev_page_title">updateLoginToken</h1> + + <div id="dev_page_content"><p>A login token (for login via QR code) was accepted.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updateLoginToken" class="current_page_link" >updateLoginToken</a>#564fe691 = <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> +<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/Update">Update</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/inputStickerSetThumb.html b/data/corefork.telegram.org/constructor/updateMessageID.html similarity index 85% rename from data/corefork.telegram.org/constructor/inputStickerSetThumb.html rename to data/corefork.telegram.org/constructor/updateMessageID.html index 2f4b17e558..f5539d8dc5 100644 --- a/data/corefork.telegram.org/constructor/inputStickerSetThumb.html +++ b/data/corefork.telegram.org/constructor/updateMessageID.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputStickerSetThumb</title> + <title>updateMessageID</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Location of stickerset thumbnail (see files)"> - <meta property="og:title" content="inputStickerSetThumb"> + <meta property="description" content="Sent message with random_id client identifier was assigned an identifier."> + <meta property="og:title" content="updateMessageID"> <meta property="og:image" content=""> - <meta property="og:description" content="Location of stickerset thumbnail (see files)"> + <meta property="og:description" content="Sent message with random_id client identifier was assigned an identifier."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputStickerSetThumb" >inputStickerSetThumb</a></li></ul></div> - <h1 id="dev_page_title">inputStickerSetThumb</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateMessageID" >updateMessageID</a></li></ul></div> + <h1 id="dev_page_title">updateMessageID</h1> - <div id="dev_page_content"><p>Location of stickerset thumbnail (see <a href="/api/files">files</a>)</p> + <div id="dev_page_content"><p>Sent message with <strong>random_id</strong> client identifier was assigned an identifier.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputStickerSetThumb" class="current_page_link" >inputStickerSetThumb</a>#9d84f3db stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> thumb_version:<a href="/type/int" >int</a> = <a href="/type/InputFileLocation" >InputFileLocation</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateMessageID" class="current_page_link" >updateMessageID</a>#4e90bfd6 id:<a href="/type/int" >int</a> random_id:<a href="/type/long" >long</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> @@ -64,22 +64,22 @@ </thead> <tbody> <tr> -<td><strong>stickerset</strong></td> -<td style="text-align: center;"><a href="/type/InputStickerSet">InputStickerSet</a></td> -<td>Sticker set</td> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><strong>id</strong> identifier of a respective <a href="/type/Message">Message</a></td> </tr> <tr> -<td><strong>thumb_version</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Thumbnail version</td> +<td><strong>random_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Previuosly transferred client <strong>random_id</strong> identifier</td> </tr> </tbody> </table> <h3><a class="anchor" href="#type" id="type" name="type"><i class="anchor-icon"></i></a>Type</h3> -<p><a href="/type/InputFileLocation">InputFileLocation</a></p> +<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="#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></div> +<h4><a class="anchor" href="#message" id="message" name="message"><i class="anchor-icon"></i></a><a href="/type/Message">Message</a></h4> +<p>Object describing a message.</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/inputGeoPoint.html b/data/corefork.telegram.org/constructor/updateMessagePoll.html similarity index 86% rename from data/corefork.telegram.org/constructor/inputGeoPoint.html rename to data/corefork.telegram.org/constructor/updateMessagePoll.html index 529d71f208..00db776cef 100644 --- a/data/corefork.telegram.org/constructor/inputGeoPoint.html +++ b/data/corefork.telegram.org/constructor/updateMessagePoll.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>inputGeoPoint</title> + <title>updateMessagePoll</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Defines a GeoPoint by its coordinates."> - <meta property="og:title" content="inputGeoPoint"> + <meta property="description" content="The results of a poll have changed"> + <meta property="og:title" content="updateMessagePoll"> <meta property="og:image" content=""> - <meta property="og:description" content="Defines a GeoPoint by its coordinates."> + <meta property="og:description" content="The results of a poll have changed"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/inputGeoPoint" >inputGeoPoint</a></li></ul></div> - <h1 id="dev_page_title">inputGeoPoint</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateMessagePoll" >updateMessagePoll</a></li></ul></div> + <h1 id="dev_page_title">updateMessagePoll</h1> - <div id="dev_page_content"><p>Defines a GeoPoint by its coordinates.</p> + <div id="dev_page_content"><p>The results of a poll have changed</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputGeoPoint" class="current_page_link" >inputGeoPoint</a>#48222faf flags:<a href="/type/%23" >#</a> lat:<a href="/type/double" >double</a> long:<a href="/type/double" >double</a> accuracy_radius:flags.0?<a href="/type/int" >int</a> = <a href="/type/InputGeoPoint" >InputGeoPoint</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateMessagePoll" class="current_page_link" >updateMessagePoll</a>#aca1657b flags:<a href="/type/%23" >#</a> poll_id:<a href="/type/long" >long</a> poll:flags.0?<a href="/type/Poll" >Poll</a> results:<a href="/type/PollResults" >PollResults</a> = <a href="/type/Update" >Update</a>;</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> @@ -69,24 +69,24 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>lat</strong></td> -<td style="text-align: center;"><a href="/type/double">double</a></td> -<td>Latitide</td> +<td><strong>poll_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Poll ID</td> </tr> <tr> -<td><strong>long</strong></td> -<td style="text-align: center;"><a href="/type/double">double</a></td> -<td>Longtitude</td> +<td><strong>poll</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Poll">Poll</a></td> +<td>If the server knows the client hasn't cached this poll yet, the poll itself</td> </tr> <tr> -<td><strong>accuracy_radius</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 estimated horizontal accuracy of the location, in meters; as defined by the sender.</td> +<td><strong>results</strong></td> +<td style="text-align: center;"><a href="/type/PollResults">PollResults</a></td> +<td>New poll results</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/InputGeoPoint">InputGeoPoint</a></p></div> +<p><a href="/type/Update">Update</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/updateMessagePollVote.html b/data/corefork.telegram.org/constructor/updateMessagePollVote.html new file mode 100644 index 0000000000..d7a61893e9 --- /dev/null +++ b/data/corefork.telegram.org/constructor/updateMessagePollVote.html @@ -0,0 +1,165 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updateMessagePollVote</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="A specific user has voted in a poll"> + <meta property="og:title" content="updateMessagePollVote"> + <meta property="og:image" content=""> + <meta property="og:description" content="A specific user has voted in a poll"> + <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?215" 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/updateMessagePollVote" >updateMessagePollVote</a></li></ul></div> + <h1 id="dev_page_title">updateMessagePollVote</h1> + + <div id="dev_page_content"><p>A specific user has voted in a poll</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updateMessagePollVote" class="current_page_link" >updateMessagePollVote</a>#106395c9 poll_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> qts:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</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>poll_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Poll ID</td> +</tr> +<tr> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>User ID</td> +</tr> +<tr> +<td><strong>options</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/bytes">bytes</a>></td> +<td>Chosen option(s)</td> +</tr> +<tr> +<td><strong>qts</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>New <strong>qts</strong> value, see <a href="/api/updates">updates »</a> for more info.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/fileLocation.html b/data/corefork.telegram.org/constructor/updateNewMessage.html similarity index 87% rename from data/corefork.telegram.org/constructor/fileLocation.html rename to data/corefork.telegram.org/constructor/updateNewMessage.html index ba82b320f9..0a1dd082dc 100644 --- a/data/corefork.telegram.org/constructor/fileLocation.html +++ b/data/corefork.telegram.org/constructor/updateNewMessage.html @@ -2,32 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>fileLocation</title> + <title>updateNewMessage</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="File location. -Parameters -Name -Type -Description -dc_id -int -Number of the data center holding the file -volume_id -long -Server…"> - <meta property="og:title" content="fileLocation"> + <meta property="description" content="New message in a private chat or in a legacy group."> + <meta property="og:title" content="updateNewMessage"> <meta property="og:image" content=""> - <meta property="og:description" content="File location. -Parameters -Name -Type -Description -dc_id -int -Number of the data center holding the file -volume_id -long -Server…"> + <meta property="og:description" content="New message in a private chat or in a legacy group."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -56,10 +36,10 @@ Server…"> <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/fileLocation" >fileLocation</a></li></ul></div> - <h1 id="dev_page_title">fileLocation</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updateNewMessage" >updateNewMessage</a></li></ul></div> + <h1 id="dev_page_title">updateNewMessage</h1> - <div id="dev_page_content"><p>File location.</p> + <div id="dev_page_content"><p>New message in a private chat or in a <a href="https://core.telegram.org/api/channel">legacy group</a>.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -72,7 +52,7 @@ Server…"> </li> </ul> </div> -<pre class="page_scheme"><code>Constructor schema is available as of layer 86. <a href="?layer=86">Switch »</a></code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updateNewMessage" class="current_page_link" >updateNewMessage</a>#1f2b0afd message:<a href="/type/Message" >Message</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -84,29 +64,24 @@ Server…"> </thead> <tbody> <tr> -<td><strong>dc_id</strong></td> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/Message">Message</a></td> +<td>Message</td> +</tr> +<tr> +<td><strong>pts</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of the data center holding the file</td> +<td>New quantity of actions in a message box</td> </tr> <tr> -<td><strong>volume_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Server volume</td> -</tr> -<tr> -<td><strong>local_id</strong></td> +<td><strong>pts_count</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>File ID</td> -</tr> -<tr> -<td><strong>secret</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Checksum to access the file</td> +<td>Number of generated 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/FileLocation">FileLocation</a></p></div> +<p><a href="/type/Update">Update</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/updatePinnedMessages.html b/data/corefork.telegram.org/constructor/updatePinnedMessages.html new file mode 100644 index 0000000000..0b7c6e4213 --- /dev/null +++ b/data/corefork.telegram.org/constructor/updatePinnedMessages.html @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updatePinnedMessages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Some messages were pinned in a chat"> + <meta property="og:title" content="updatePinnedMessages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Some messages were pinned in a chat"> + <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?215" 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/updatePinnedMessages" >updatePinnedMessages</a></li></ul></div> + <h1 id="dev_page_title">updatePinnedMessages</h1> + + <div id="dev_page_content"><p>Some messages were pinned in a chat</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatePinnedMessages" class="current_page_link" >updatePinnedMessages</a>#ed85eab5 flags:<a href="/type/%23" >#</a> pinned:flags.0?true peer:<a href="/type/Peer" >Peer</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" >Update</a>;</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>pinned</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 the messages were pinned or unpinned</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/Peer">Peer</a></td> +<td>Peer</td> +</tr> +<tr> +<td><strong>messages</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> +<td>Message IDs</td> +</tr> +<tr> +<td><strong>pts</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/updates">Event count after generation</a></td> +</tr> +<tr> +<td><strong>pts_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/updates">Number of events that were generated</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/messages.statedMessageLink b/data/corefork.telegram.org/constructor/updates.html similarity index 87% rename from data/corefork.telegram.org/constructor/messages.statedMessageLink rename to data/corefork.telegram.org/constructor/updates.html index b5729cc686..8f32e83775 100644 --- a/data/corefork.telegram.org/constructor/messages.statedMessageLink +++ b/data/corefork.telegram.org/constructor/updates.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.statedMessageLink</title> + <title>Updates</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Message with auxiliary data, state data and the list of changed links."> - <meta property="og:title" content="messages.statedMessageLink"> + <meta property="description" content="Full constructor of updates"> + <meta property="og:title" content="Updates"> <meta property="og:image" content=""> - <meta property="og:description" content="Message with auxiliary data, state data and the list of changed links."> + <meta property="og:description" content="Full constructor of updates"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.statedMessageLink" >messages.statedMessageLink</a></li></ul></div> - <h1 id="dev_page_title">messages.statedMessageLink</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/updates" >Updates</a></li></ul></div> + <h1 id="dev_page_title">Updates</h1> - <div id="dev_page_content"><p>Message with auxiliary data, state data and the list of changed links.</p> + <div id="dev_page_content"><p>Full constructor of updates</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code>Constructor schema is available as of layer 24. <a href="?layer=24">Switch »</a></code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/updates" class="current_page_link" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>;</code></pre></p> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -64,39 +64,34 @@ </thead> <tbody> <tr> -<td><strong>message</strong></td> -<td style="text-align: center;"><a href="/type/Message">Message</a></td> -<td>Message</td> -</tr> -<tr> -<td><strong>chats</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> -<td>List of chats mentioned in message</td> +<td><strong>updates</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Update">Update</a>></td> +<td>List of updates</td> </tr> <tr> <td><strong>users</strong></td> <td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/User">User</a>></td> -<td>List of users mentioned in message and chats</td> +<td>List of users mentioned in updates</td> </tr> <tr> -<td><strong>links</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/contacts.Link">contacts.Link</a>></td> -<td>List of changed links</td> +<td><strong>chats</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/Chat">Chat</a>></td> +<td>List of chats mentioned in updates</td> </tr> <tr> -<td><strong>pts</strong></td> +<td><strong>date</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of events occurred in text box</td> +<td>Current date</td> </tr> <tr> <td><strong>seq</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Number of sent updates</td> +<td>Total number of sent updates</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.StatedMessage">messages.StatedMessage</a></p></div> +<p><a href="/type/Updates">Updates</a></p></div> </div> diff --git a/data/corefork.telegram.org/constructor/sendMessageEmojiInteractionSeen.html b/data/corefork.telegram.org/constructor/urlAuthResultAccepted.html similarity index 85% rename from data/corefork.telegram.org/constructor/sendMessageEmojiInteractionSeen.html rename to data/corefork.telegram.org/constructor/urlAuthResultAccepted.html index c17e3db971..3550841877 100644 --- a/data/corefork.telegram.org/constructor/sendMessageEmojiInteractionSeen.html +++ b/data/corefork.telegram.org/constructor/urlAuthResultAccepted.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>sendMessageEmojiInteractionSeen</title> + <title>urlAuthResultAccepted</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="User is watching an animated emoji reaction triggered by another user, click here for more info »."> - <meta property="og:title" content="sendMessageEmojiInteractionSeen"> - <meta property="og:image" content=""> - <meta property="og:description" content="User is watching an animated emoji reaction triggered by another user, click here for more info »."> + <meta property="description" content="Details about an accepted authorization request, for more info click here »"> + <meta property="og:title" content="urlAuthResultAccepted"> + <meta property="og:image" content="a561ed38147d779e5b"> + <meta property="og:description" content="Details about an accepted authorization request, for more info click here »"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/sendMessageEmojiInteractionSeen" >sendMessageEmojiInteractionSeen</a></li></ul></div> - <h1 id="dev_page_title">sendMessageEmojiInteractionSeen</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/constructor/urlAuthResultAccepted" >urlAuthResultAccepted</a></li></ul></div> + <h1 id="dev_page_title">urlAuthResultAccepted</h1> - <div id="dev_page_content"><p>User is watching an animated emoji reaction triggered by another user, <a href="/api/animated-emojis#emoji-reactions">click here for more info »</a>.</p> + <div id="dev_page_content"><p>Details about an accepted authorization request, for more info <a href="/api/url-authorization">click here »</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/sendMessageEmojiInteractionSeen" class="current_page_link" >sendMessageEmojiInteractionSeen</a>#b665902e emoticon:<a href="/type/string" >string</a> = <a href="/type/SendMessageAction" >SendMessageAction</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/urlAuthResultAccepted" class="current_page_link" >urlAuthResultAccepted</a>#8f8c0e4e url:<a href="/type/string" >string</a> = <a href="/type/UrlAuthResult" >UrlAuthResult</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> @@ -64,17 +64,17 @@ </thead> <tbody> <tr> -<td><strong>emoticon</strong></td> +<td><strong>url</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Emoji</td> +<td>The URL name of the website on which the user has logged in.</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/SendMessageAction">SendMessageAction</a></p> +<p><a href="/type/UrlAuthResult">UrlAuthResult</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="#animated-emojis" id="animated-emojis" name="animated-emojis"><i class="anchor-icon"></i></a><a href="/api/animated-emojis">Animated Emojis</a></h4> -<p>Graphical telegram clients should transform emojis into their respective animated version.</p></div> +<h4><a class="anchor" href="#seamless-telegram-login" id="seamless-telegram-login" name="seamless-telegram-login"><i class="anchor-icon"></i></a><a href="/api/url-authorization">Seamless Telegram Login</a></h4> +<p>Handle Seamless Telegram Login URL authorization requests.</p></div> </div> diff --git a/data/corefork.telegram.org/constructor/urlAuthResultRequest.html b/data/corefork.telegram.org/constructor/urlAuthResultRequest.html new file mode 100644 index 0000000000..0cb43ed8e9 --- /dev/null +++ b/data/corefork.telegram.org/constructor/urlAuthResultRequest.html @@ -0,0 +1,165 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>urlAuthResultRequest</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Details about the authorization request, for more info click here »"> + <meta property="og:title" content="urlAuthResultRequest"> + <meta property="og:image" content="89c8b62c02bdf56f89"> + <meta property="og:description" content="Details about the authorization request, for more info click here »"> + <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?215" 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/urlAuthResultRequest" >urlAuthResultRequest</a></li></ul></div> + <h1 id="dev_page_title">urlAuthResultRequest</h1> + + <div id="dev_page_content"><p>Details about the authorization request, for more info <a href="/api/url-authorization">click here »</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/urlAuthResultRequest" class="current_page_link" >urlAuthResultRequest</a>#92d33a0e flags:<a href="/type/%23" >#</a> request_write_access:flags.0?true bot:<a href="/type/User" >User</a> domain:<a href="/type/string" >string</a> = <a href="/type/UrlAuthResult" >UrlAuthResult</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>request_write_access</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 the bot would like to send messages to the user</td> +</tr> +<tr> +<td><strong>bot</strong></td> +<td style="text-align: center;"><a href="/type/User">User</a></td> +<td>Username of a bot, which will be used for user authorization. If not specified, the current bot's username will be assumed. The url's domain must be the same as the domain linked with the bot. See <a href="https://core.telegram.org/widgets/login#linking-your-domain-to-the-bot">Linking your domain to the bot</a> for more details.</td> +</tr> +<tr> +<td><strong>domain</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The domain name of the website on which the user will log in.</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/UrlAuthResult">UrlAuthResult</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="#seamless-telegram-login" id="seamless-telegram-login" name="seamless-telegram-login"><i class="anchor-icon"></i></a><a href="/api/url-authorization">Seamless Telegram Login</a></h4> +<p>Handle Seamless Telegram Login URL authorization requests.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/user.html b/data/corefork.telegram.org/constructor/user.html new file mode 100644 index 0000000000..55b01c34a4 --- /dev/null +++ b/data/corefork.telegram.org/constructor/user.html @@ -0,0 +1,287 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>user</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Indicates info about a certain user"> + <meta property="og:title" content="user"> + <meta property="og:image" content=""> + <meta property="og:description" content="Indicates info about a certain user"> + <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?215" 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/user" >user</a></li></ul></div> + <h1 id="dev_page_title">user</h1> + + <div id="dev_page_content"><p>Indicates info about a certain user</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/user" class="current_page_link" >user</a>#3ff6ecb0 flags:<a href="/type/%23" >#</a> self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true id:<a href="/type/long" >long</a> access_hash:flags.0?<a href="/type/long" >long</a> first_name:flags.1?<a href="/type/string" >string</a> last_name:flags.2?<a href="/type/string" >string</a> username:flags.3?<a href="/type/string" >string</a> phone:flags.4?<a href="/type/string" >string</a> photo:flags.5?<a href="/type/UserProfilePhoto" >UserProfilePhoto</a> status:flags.6?<a href="/type/UserStatus" >UserStatus</a> bot_info_version:flags.14?<a href="/type/int" >int</a> restriction_reason:flags.18?<a href="/type/Vector%20t" >Vector</a><<a href="/type/RestrictionReason" >RestrictionReason</a>> bot_inline_placeholder:flags.19?<a href="/type/string" >string</a> lang_code:flags.22?<a href="/type/string" >string</a> = <a href="/type/User" >User</a>;</code></pre></p> +<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>self</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>Whether this user indicates the currently logged in user</td> +</tr> +<tr> +<td><strong>contact</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>Whether this user is a contact</td> +</tr> +<tr> +<td><strong>mutual_contact</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>Whether this user is a mutual contact</td> +</tr> +<tr> +<td><strong>deleted</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>Whether the account of this user was deleted</td> +</tr> +<tr> +<td><strong>bot</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>Is this user a bot?</td> +</tr> +<tr> +<td><strong>bot_chat_history</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>Can the bot see all messages in groups?</td> +</tr> +<tr> +<td><strong>bot_nochats</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.16?<a href="/constructor/true">true</a></td> +<td>Can the bot be added to groups?</td> +</tr> +<tr> +<td><strong>verified</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.17?<a href="/constructor/true">true</a></td> +<td>Whether this user is verified</td> +</tr> +<tr> +<td><strong>restricted</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.18?<a href="/constructor/true">true</a></td> +<td>Access to this user must be restricted for the reason specified in <code>restriction_reason</code></td> +</tr> +<tr> +<td><strong>min</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.20?<a href="/constructor/true">true</a></td> +<td>See <a href="/api/min">min</a></td> +</tr> +<tr> +<td><strong>bot_inline_geo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.21?<a href="/constructor/true">true</a></td> +<td>Whether the bot can request our geolocation in inline mode</td> +</tr> +<tr> +<td><strong>support</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.23?<a href="/constructor/true">true</a></td> +<td>Whether this is an official support user</td> +</tr> +<tr> +<td><strong>scam</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.24?<a href="/constructor/true">true</a></td> +<td>This may be a scam user</td> +</tr> +<tr> +<td><strong>apply_min_photo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.25?<a href="/constructor/true">true</a></td> +<td>If set, the profile picture for this user should be refetched</td> +</tr> +<tr> +<td><strong>fake</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.26?<a href="/constructor/true">true</a></td> +<td>If set, this user was reported by many users as a fake or scam user: be careful when interacting with them.</td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>ID of the user</td> +</tr> +<tr> +<td><strong>access_hash</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/long">long</a></td> +<td>Access hash of the user</td> +</tr> +<tr> +<td><strong>first_name</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/string">string</a></td> +<td>First name</td> +</tr> +<tr> +<td><strong>last_name</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td> +<td>Last name</td> +</tr> +<tr> +<td><strong>username</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/string">string</a></td> +<td>Username</td> +</tr> +<tr> +<td><strong>phone</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/string">string</a></td> +<td>Phone number</td> +</tr> +<tr> +<td><strong>photo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/UserProfilePhoto">UserProfilePhoto</a></td> +<td>Profile picture of user</td> +</tr> +<tr> +<td><strong>status</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/UserStatus">UserStatus</a></td> +<td>Online status of user</td> +</tr> +<tr> +<td><strong>bot_info_version</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/int">int</a></td> +<td>Version of the <a href="/constructor/userFull">bot_info field in userFull</a>, incremented every time it changes</td> +</tr> +<tr> +<td><strong>restriction_reason</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.18?<a href="/type/Vector%20t">Vector</a><<a href="/type/RestrictionReason">RestrictionReason</a>></td> +<td>Contains the reason why access to this user must be restricted.</td> +</tr> +<tr> +<td><strong>bot_inline_placeholder</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.19?<a href="/type/string">string</a></td> +<td>Inline placeholder for this inline bot</td> +</tr> +<tr> +<td><strong>lang_code</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.22?<a href="/type/string">string</a></td> +<td>Language code of the user</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/User">User</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="#min-constructors" id="min-constructors" name="min-constructors"><i class="anchor-icon"></i></a><a href="/api/min">Min constructors</a></h4> +<p>In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.</p> +<h4><a class="anchor" href="#userfull" id="userfull" name="userfull"><i class="anchor-icon"></i></a><a href="/constructor/userFull">userFull</a></h4> +<p>Extended user info</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/userFull.html b/data/corefork.telegram.org/constructor/userFull.html new file mode 100644 index 0000000000..d030d3d747 --- /dev/null +++ b/data/corefork.telegram.org/constructor/userFull.html @@ -0,0 +1,239 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>userFull</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Extended user info"> + <meta property="og:title" content="userFull"> + <meta property="og:image" content=""> + <meta property="og:description" content="Extended user 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?215" 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/userFull" >userFull</a></li></ul></div> + <h1 id="dev_page_title">userFull</h1> + + <div id="dev_page_content"><p>Extended user info</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/userFull" class="current_page_link" >userFull</a>#d697ff05 flags:<a href="/type/%23" >#</a> blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true user:<a href="/type/User" >User</a> about:flags.1?<a href="/type/string" >string</a> settings:<a href="/type/PeerSettings" >PeerSettings</a> profile_photo:flags.2?<a href="/type/Photo" >Photo</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> bot_info:flags.3?<a href="/type/BotInfo" >BotInfo</a> pinned_msg_id:flags.6?<a href="/type/int" >int</a> common_chats_count:<a href="/type/int" >int</a> folder_id:flags.11?<a href="/type/int" >int</a> ttl_period:flags.14?<a href="/type/int" >int</a> theme_emoticon:flags.15?<a href="/type/string" >string</a> = <a href="/type/UserFull" >UserFull</a>;</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>blocked</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 you have blocked this user</td> +</tr> +<tr> +<td><strong>phone_calls_available</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>Whether this user can make VoIP calls</td> +</tr> +<tr> +<td><strong>phone_calls_private</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>Whether this user's privacy settings allow you to call him</td> +</tr> +<tr> +<td><strong>can_pin_message</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>Whether you can pin messages in the chat with this user, you can do this only for a chat with yourself</td> +</tr> +<tr> +<td><strong>has_scheduled</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>Whether <a href="/api/scheduled-messages">scheduled messages</a> are available</td> +</tr> +<tr> +<td><strong>video_calls_available</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>Whether the user can receive video calls</td> +</tr> +<tr> +<td><strong>user</strong></td> +<td style="text-align: center;"><a href="/type/User">User</a></td> +<td>Remaining user info</td> +</tr> +<tr> +<td><strong>about</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/string">string</a></td> +<td>Bio of the user</td> +</tr> +<tr> +<td><strong>settings</strong></td> +<td style="text-align: center;"><a href="/type/PeerSettings">PeerSettings</a></td> +<td>Peer settings</td> +</tr> +<tr> +<td><strong>profile_photo</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/Photo">Photo</a></td> +<td>Profile photo</td> +</tr> +<tr> +<td><strong>notify_settings</strong></td> +<td style="text-align: center;"><a href="/type/PeerNotifySettings">PeerNotifySettings</a></td> +<td>Notification settings</td> +</tr> +<tr> +<td><strong>bot_info</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/BotInfo">BotInfo</a></td> +<td>For bots, info about the bot (bot commands, etc)</td> +</tr> +<tr> +<td><strong>pinned_msg_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/int">int</a></td> +<td>Message ID of the last <a href="/api/pin">pinned message</a></td> +</tr> +<tr> +<td><strong>common_chats_count</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Chats in common with this user</td> +</tr> +<tr> +<td><strong>folder_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.11?<a href="/type/int">int</a></td> +<td><a href="/api/folders#peer-folders">Peer folder ID, for more info click here</a></td> +</tr> +<tr> +<td><strong>ttl_period</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.14?<a href="/type/int">int</a></td> +<td>Time To Live of all messages in this chat; once a message is this many seconds old, it must be deleted.</td> +</tr> +<tr> +<td><strong>theme_emoticon</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.15?<a href="/type/string">string</a></td> +<td>Emoji associated with chat theme</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/UserFull">UserFull</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="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages</p> +<h4><a class="anchor" href="#pinned-messages" id="pinned-messages" name="pinned-messages"><i class="anchor-icon"></i></a><a href="/api/pin">Pinned messages</a></h4> +<p>Telegram allows pinning multiple messages on top of a specific chat.</p> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/css/core-widgets.css b/data/corefork.telegram.org/css/core-widgets.css new file mode 100644 index 0000000000..6b86cfbf74 --- /dev/null +++ b/data/corefork.telegram.org/css/core-widgets.css @@ -0,0 +1,105 @@ +.widget-accent-colors { + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + max-width: 480px; + margin: 3px 0 0; +} +.widget-accent-colors .widget-accent-color-item { + position: relative; + flex-basis: 42px; + font-weight: normal; + text-align: center; + cursor: pointer; +} +.widget-accent-color-item input.radio { + position: absolute; + left: -5000px; +} +.widget-accent-color-item input.radio + .widget-color-circle:after { + position: absolute; + left: 0; + display: inline-block; + content: ''; + width: 100%; + height: 100%; + border-radius: 50%; + vertical-align: top; + background: url('data:image/svg+xml,%3Csvg height="15" viewBox="0 0 18 15" width="18" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="%23fff" fill-rule="evenodd"%3E%3Crect height="8" rx="1.472727" transform="matrix(.70710678 -.70710678 .70710678 .70710678 -5.753048 6.110913)" width="3" x="3" y="6"/%3E%3Crect height="3" rx="1.472727" transform="matrix(.70710678 -.70710678 .70710678 .70710678 -2.081475 9.974874)" width="16" x="3" y="6"/%3E%3C/g%3E%3C/svg%3E') no-repeat center 11px; + transition: transform 0.12s linear; + transform: scale3d(0, 0, 1); +} +.widget-accent-color-item input.radio + .widget-color-circle.bordered, +.widget-accent-color-item input.radio:checked + .widget-color-circle-custom.bordered { + box-shadow: inset 0 0 0 1px #eaeaea; +} +.widget-accent-color-item input.radio + .widget-color-circle-custom.bordered { + border: none; +} +.widget-accent-color-item input.radio + .widget-color-circle.light:after { + background-image: url('data:image/svg+xml,%3Csvg height="15" viewBox="0 0 18 15" width="18" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="%2315202b" fill-rule="evenodd"%3E%3Crect height="8" rx="1.472727" transform="matrix(.70710678 -.70710678 .70710678 .70710678 -5.753048 6.110913)" width="3" x="3" y="6"/%3E%3Crect height="3" rx="1.472727" transform="matrix(.70710678 -.70710678 .70710678 .70710678 -2.081475 9.974874)" width="16" x="3" y="6"/%3E%3C/g%3E%3C/svg%3E'); +} +.widget-accent-color-item input.radio:checked + .widget-color-circle:after { + transform: scale3d(1, 1, 1); +} +.widget-color-circle { + position: relative; + display: inline-block; + vertical-align: top; + width: 36px; + height: 36px; + border-radius: 50%; + background-color: #319BE6; + transition: background-color 0.12s ease, box-shadow 0.12s ease; +} +.widget-color-circle-custom { + background-color: #F5F5F5; + color: #F5F5F5; +} +.widget-accent-color-item input.radio + .widget-color-circle-custom:before { + position: absolute; + left: 0; + display: inline-block; + content: ''; + width: 100%; + height: 100%; + vertical-align: top; + background: url('data:image/svg+xml,%3Csvg height="14" viewBox="0 0 15 14" width="15" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="m3.9468491 8.55631162c-1.3103539 0-2.36810946 1.04207749-2.36810946 2.33300928 0 1.0187474-.91566899 1.5553396-1.57873964 1.5553396.72622023.9487571 1.96553085 1.5553395 3.15747928 1.5553395 1.7445073 0 3.15747928-1.3920289 3.15747928-3.1106791 0-1.29093179-1.05775556-2.33300928-2.36810946-2.33300928zm10.8222602-7.28676572-1.0577555-1.04207749c-.3078543-.30329121-.8051572-.30329121-1.1130115 0l-7.07275356 6.96792112 2.170767 2.13859186 7.07275356-6.96792112c.3078543-.30329121.3078543-.79322316 0-1.09651437z" fill="%23bdbdbd"/%3E%3C/svg%3E') no-repeat center; + transition: opacity 0.12s ease; +} +.widget-color-label { + font-size: 12px; + line-height: 14px; + margin-top: 8px; + color: #333; +} +.widget-color-label-custom { + transition: opacity 0.12s ease; + position: absolute; + width: 100%; +} +.widget-accent-color-field-item { + transition: all .2s ease; + opacity: 0; +} +.widget-accent-color-field-item input.widget-accent-color-field { + font-size: 12px !important; + line-height: 14px !important; + text-transform: uppercase; + position: relative; + text-align: center; + margin-top: 3px !important; + padding: 5px 0 !important; + color: #222 !important; + width: 52px !important; +} +.widget-accent-color-item input.radio:checked ~ .widget-accent-color-field-item { + opacity: 1; +} +.widget-accent-color-item input.radio:checked ~ .widget-color-circle-custom { + background-color: currentColor !important; +} +.widget-accent-color-item input.radio:checked + .widget-color-circle-custom:before, +.widget-accent-color-item input.radio:checked ~ .widget-color-label-custom { + opacity: 0; +} diff --git a/data/corefork.telegram.org/getProxyConfig.html b/data/corefork.telegram.org/getProxyConfig.html new file mode 100644 index 0000000000..7238f2dd28 --- /dev/null +++ b/data/corefork.telegram.org/getProxyConfig.html @@ -0,0 +1,24 @@ +# force_probability 10 10 +default 2; +proxy_for 1 149.154.X.X:8888; +proxy_for -1 149.154.X.X:8888; +proxy_for 2 149.154.X.X:8888; +proxy_for -2 149.154.X.X:8888; +proxy_for 3 149.154.X.X:8888; +proxy_for -3 149.154.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for 4 91.108.X.X:8888; +proxy_for -4 149.154.X.X:8888; +proxy_for -4 149.154.X.X:8888; +proxy_for 5 91.108.X.X:8888; +proxy_for 5 91.108.X.X:8888; +proxy_for -5 91.108.X.X:8888; +proxy_for -5 91.108.X.X:8888; diff --git a/data/corefork.telegram.org/js/core-widgets.js b/data/corefork.telegram.org/js/core-widgets.js new file mode 100644 index 0000000000..67bf4c7d05 --- /dev/null +++ b/data/corefork.telegram.org/js/core-widgets.js @@ -0,0 +1,279 @@ +function fixColor(color) { + color = color.toUpperCase(); + if (color.length == 1 || color.length == 2) { + color = color + color + color; + } else if (color.length > 3 && color.length < 6) { + color = color.substr(0, 3); + } else if (color.length > 6) { + color = color.substr(0, 6); + } + return color; +} + +function isColorLight(color, k) { + var hsl = rgb2hsl(color); + if (typeof k === 'undefined') k = 0.8; + if (k > 0) return (hsl.l > k); + return (hsl.l < (1 + k)); +} + +function rgb2hsl(rgb) { + rgb = fixColor(rgb); + if (rgb.length == 3) { + rgb = rgb[0] + rgb[0] + rgb[1] + rgb[1] + rgb[2] + rgb[2]; + } + var r = parseInt(rgb.substr(0, 2), 16); + var g = parseInt(rgb.substr(2, 2), 16); + var b = parseInt(rgb.substr(4, 2), 16); + r /= 255; g /= 255; b /= 255; + var max = Math.max(r, g, b), + min = Math.min(r, g, b); + var h, s, l = (max + min) / 2; + if (max == min) { + h = s = 0; // achromatic + } else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch (max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return {h: h, s: s, l: l}; +} + +var PostWidget = { + options: {}, + init: function(options) { + var form = $('#post_widget_config').get(0); + if (!form) return; + PostWidget.options = options || {}; + $('.form-telegram input.form-control[type="text"]').on('change blur', function() { + PostWidget.update(); + }); + $('.form-telegram input.radio, .form-telegram input.checkbox').on('change', function() { + var is_dark = (this.getAttribute('name') == 'dark'); + PostWidget.update(is_dark); + }); + $('.widget-accent-color-item input.radio').on('change', function() { + if (this.value == 'custom') { + $('.widget-accent-color-field').select(); + } + PostWidget.update(); + }); + $('.widget-accent-color-field').on('input', function() { + var val = this.value; + this.value = val.toUpperCase().replace(/[^0-9A-F]+/g, ''); + var color = fixColor(this.value); + $('.widget-color-circle-custom').css('color', color ? '#' + color : '').toggleClass('light', isColorLight(color)).toggleClass('bordered', isColorLight(color, 0.95)); + }); + $('.widget-accent-color-field').on('focus', function() { + $('.widget-accent-color-item .radio[value="custom"]').prop('checked', true); + PostWidget.update(); + }); + PostWidget.update(); + initRipple(); + }, + update: function(toggle_dark) { + var options = PostWidget.options || {}; + var form = $('#post_widget_config').get(0); + if (!form) return; + var tfi = $('#post_link').parents('.textfield-item'); + var post_link = $('#post_link').val() || options.default_link, + match; + if (match = post_link.match(/^(?:(?:https?):\/\/)?(?:t\.me|telegram\.me|telegram\.dog)\/([a-zA-Z0-9_]+\/\d+)(?:\?(.*))?$/i)) { + var post_id = match[1], suffix = match[2] || ''; + var querystring = suffix.split('#')[0]; + var str_values = querystring.split('&'); + var query = {}; + for (var i = 0; i < str_values.length; i++) { + var key_value = str_values[i].split('='); + var key = decodeURIComponent(key_value[0]); + var value = key_value.length > 1 ? decodeURIComponent(key_value[1]) : null; + query[key] = value; + } + var single = typeof query.single !== 'undefined'; + var comment_id = parseInt(query.comment); + } else { + tfi.addClass('is-invalid'); + $('#post_link_error').html(options.link_error); + $('#post_link').one('input', function() { + tfi.removeClass('is-invalid'); + }); + return; + } + tfi.removeClass('is-invalid'); + var width = form.width.value; + if (!width) width = '100%'; + var author_photo = form.author_photo.value; + var dark = form.dark.checked; + var dark_colors = {}; + $('.widget-accent-color-item[data-color]').each(function() { + var color = $(this).attr('data-color'); + var dark_color = $(this).attr('data-dark-color'); + var bg_color = $(this).attr(dark ? 'data-dark-color' : 'data-bg-color'); + var text = $(this).attr(dark ? 'data-dark-text' : 'data-text'); + var cur_color = dark && dark_color ? dark_color : color; + dark_colors[color] = dark_color; + $('.widget-color-circle', this).css('backgroundColor', '#' + bg_color).toggleClass('light', isColorLight(cur_color)).toggleClass('bordered', isColorLight(cur_color, 0.95)); + if (text) { + $('.widget-color-label', this).text(text); + } + }); + var color = form.color.value; + var dark_color = ''; + var customcolor = form.customcolor.value; + if (color == 'default') { + color = ''; + dark_color = ''; + } else if (color == 'custom') { + color = fixColor(customcolor); + if (color != customcolor) { + form.customcolor.value = color; + $('.widget-color-circle-custom').css('color', color ? '#' + color : '').toggleClass('light', isColorLight(color)).toggleClass('bordered', isColorLight(color, 0.95)); + } + dark_color = color; + } else { + dark_color = dark_colors[color] || color; + } + if (!color) { + color = ''; + dark_color = ''; + $('.widget-accent-color-item .radio[value="default"]').prop('checked', true); + var custom_default = form.customcolor.defaultValue; + form.customcolor.value = custom_default; + $('.widget-color-circle-custom').css('color', custom_default ? '#' + custom_default : '').toggleClass('light', isColorLight(custom_default)).toggleClass('bordered', isColorLight(custom_default, 0.95)); + } + var code = '<script async src="' + options.widget_script + '" data-telegram-post="' + escapeHTML(post_id) + '"' + (comment_id ? ' data-comment="' + comment_id + '"' : '') + ' data-width="' + escapeHTML(width) + '"' + (author_photo ? ' data-userpic="' + author_photo + '"' : '') + (single ? ' data-single' : '') + (color ? ' data-color="' + color + '"' : '') + (dark ? ' data-dark="1"' : '') + (dark_color && dark_color != color ? ' data-dark-color="' + dark_color + '"' : '') + '></script>'; + $('#embed_code').val(code); + $('#embed_code').height(0); + $('#embed_code').height($('#embed_code').get(0).scrollHeight); + if (PostWidget.lastCode != code) { + PostWidget.lastCode = code; + $('#widget_container').toggleClass('dark', !!dark); + if (toggle_dark) { + var frame = $('#widget_container iframe').get(0); + Telegram.setWidgetOptions({dark: dark}, frame); + } else { + $('#widget_container').html(code); + } + } + } +}; + +var DiscussionWidget = { + options: {}, + init: function(options) { + var form = $('#discussion_widget_config').get(0); + if (!form) return; + DiscussionWidget.options = options || {}; + $('.form-telegram input.form-control[type="text"]').on('change blur', function() { + DiscussionWidget.update(); + }); + $('.form-telegram input.checkbox').on('change', function() { + var is_dark = (this.getAttribute('name') == 'dark'); + DiscussionWidget.update(is_dark); + }); + $('.widget-accent-color-item input.radio').on('change', function() { + if (this.value == 'custom') { + $('.widget-accent-color-field').select(); + } + DiscussionWidget.update(); + }); + $('.widget-accent-color-field').on('input', function() { + var val = this.value; + this.value = val.toUpperCase().replace(/[^0-9A-F]+/g, ''); + var color = fixColor(this.value); + $('.widget-color-circle-custom').css('color', color ? '#' + color : '').toggleClass('light', isColorLight(color)).toggleClass('bordered', isColorLight(color, 0.95)); + }); + $('.widget-accent-color-field').on('focus', function() { + $('.widget-accent-color-item .radio[value="custom"]').prop('checked', true); + DiscussionWidget.update(); + }); + DiscussionWidget.update(); + initRipple(); + }, + update: function(toggle_dark) { + var options = DiscussionWidget.options || {}; + var form = $('#discussion_widget_config').get(0); + if (!form) return; + var tfi = $('#post_link').parents('.textfield-item'); + var post_link = $('#post_link').val() || options.default_link, + match; + var post_full_id = '', post_id = 0; + if (match = post_link.match(/^(?:(?:https?):\/\/)?(?:t\.me|telegram\.me|telegram\.dog)\/([a-zA-Z0-9_]+(\/\d+)?)/i)) { + post_full_id = match[1]; + post_id = match[2] || 0; + } else { + tfi.addClass('is-invalid'); + $('#post_link_error').html(options.link_error); + $('#post_link').one('input', function() { + tfi.removeClass('is-invalid'); + }); + return; + } + $('.canonical-helper', form).toggleClass('hide', !!post_id); + tfi.removeClass('is-invalid'); + var limit = parseInt(form.comments_limit.value) || 5; + var real_limit = Math.max(3, Math.min(50, limit)); + form.comments_limit.value = real_limit; + var height = parseInt(form.height.value) || 0; + var real_height = height > 0 ? Math.max(300, height) : 0; + form.height.value = real_height || ''; + var dark = form.dark.checked; + var dark_colors = {}; + $('.widget-accent-color-item[data-color]').each(function() { + var color = $(this).attr('data-color'); + var dark_color = $(this).attr('data-dark-color'); + var bg_color = $(this).attr(dark ? 'data-dark-color' : 'data-bg-color'); + var text = $(this).attr(dark ? 'data-dark-text' : 'data-text'); + var cur_color = dark && dark_color ? dark_color : color; + dark_colors[color] = dark_color; + $('.widget-color-circle', this).css('backgroundColor', '#' + bg_color).toggleClass('light', isColorLight(cur_color)).toggleClass('bordered', isColorLight(cur_color, 0.95)); + if (text) { + $('.widget-color-label', this).text(text); + } + }); + var color = form.color.value; + var dark_color = ''; + var customcolor = form.customcolor.value; + if (color == 'default') { + color = ''; + dark_color = ''; + } else if (color == 'custom') { + color = fixColor(customcolor); + if (color != customcolor) { + form.customcolor.value = color; + $('.widget-color-circle-custom').css('color', color ? '#' + color : '').toggleClass('light', isColorLight(color)).toggleClass('bordered', isColorLight(color, 0.95)); + } + dark_color = color; + } else { + dark_color = dark_colors[color] || color; + } + if (!color) { + color = ''; + dark_color = ''; + $('.widget-accent-color-item .radio[value="default"]').prop('checked', true); + var custom_default = form.customcolor.defaultValue; + form.customcolor.value = custom_default; + $('.widget-color-circle-custom').css('color', custom_default ? '#' + custom_default : '').toggleClass('light', isColorLight(custom_default)).toggleClass('bordered', isColorLight(custom_default, 0.95)); + } + var colorful = form.colorful.checked; + var code = '<script async src="' + options.widget_script + '" data-telegram-discussion="' + escapeHTML(post_full_id) + '" data-comments-limit="' + escapeHTML(real_limit.toString()) + '"' + (real_height > 0 ? ' data-height="' + escapeHTML(real_height.toString()) + '"' : '') + (colorful ? ' data-colorful="1"' : '') + (color ? ' data-color="' + color + '"' : '') + (dark ? ' data-dark="1"' : '') + (dark_color && dark_color != color ? ' data-dark-color="' + dark_color + '"' : '') + '></script>'; + $('#embed_code').val(code); + $('#embed_code').height(0); + $('#embed_code').height($('#embed_code').get(0).scrollHeight); + if (DiscussionWidget.lastCode != code) { + DiscussionWidget.lastCode = code; + $('#widget_container').toggleClass('dark', !!dark); + if (toggle_dark) { + var frame = $('#widget_container iframe').get(0); + Telegram.setWidgetOptions({dark: dark}, frame); + } else { + $('#widget_container').html(code); + } + } + } +}; diff --git a/data/corefork.telegram.org/method/account.acceptAuthorization b/data/corefork.telegram.org/method/account.acceptAuthorization new file mode 100644 index 0000000000..3292165b02 --- /dev/null +++ b/data/corefork.telegram.org/method/account.acceptAuthorization @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.acceptAuthorization</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Sends a Telegram Passport authorization form, effectively sharing data with the service"> + <meta property="og:title" content="account.acceptAuthorization"> + <meta property="og:image" content=""> + <meta property="og:description" content="Sends a Telegram Passport authorization form, effectively sharing data with the service"> + <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?215" 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/account.acceptAuthorization" >account.acceptAuthorization</a></li></ul></div> + <h1 id="dev_page_title">account.acceptAuthorization</h1> + + <div id="dev_page_content"><p>Sends a Telegram Passport authorization form, effectively sharing data with the service</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/account.acceptAuthorization" class="current_page_link" >account.acceptAuthorization</a>#f3ed4c73 bot_id:<a href="/type/long" >long</a> scope:<a href="/type/string" >string</a> public_key:<a href="/type/string" >string</a> value_hashes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueHash" >SecureValueHash</a>> credentials:<a href="/type/SecureCredentialsEncrypted" >SecureCredentialsEncrypted</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<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>bot_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Bot ID</td> +</tr> +<tr> +<td><strong>scope</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Telegram Passport element types requested by the service</td> +</tr> +<tr> +<td><strong>public_key</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Service's public key</td> +</tr> +<tr> +<td><strong>value_hashes</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/SecureValueHash">SecureValueHash</a>></td> +<td>Types of values sent and their hashes</td> +</tr> +<tr> +<td><strong>credentials</strong></td> +<td style="text-align: center;"><a href="/type/SecureCredentialsEncrypted">SecureCredentialsEncrypted</a></td> +<td>Encrypted values</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/Bool">Bool</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/account.cancelPasswordEmail b/data/corefork.telegram.org/method/account.cancelPasswordEmail new file mode 100644 index 0000000000..3a22a5529e --- /dev/null +++ b/data/corefork.telegram.org/method/account.cancelPasswordEmail @@ -0,0 +1,138 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.cancelPasswordEmail</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Cancel the code that was sent to verify an email to use as 2FA recovery method."> + <meta property="og:title" content="account.cancelPasswordEmail"> + <meta property="og:image" content=""> + <meta property="og:description" content="Cancel the code that was sent to verify an email to use as 2FA recovery method."> + <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?215" 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/account.cancelPasswordEmail" >account.cancelPasswordEmail</a></li></ul></div> + <h1 id="dev_page_title">account.cancelPasswordEmail</h1> + + <div id="dev_page_content"><p>Cancel the code that was sent to verify an email to use as <a href="/api/srp">2FA recovery method</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/account.cancelPasswordEmail" class="current_page_link" >account.cancelPasswordEmail</a>#c1cbd5b6 = <a href="/type/Bool" >Bool</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/Bool">Bool</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/auth.checkPhone b/data/corefork.telegram.org/method/account.confirmPasswordEmail similarity index 83% rename from data/corefork.telegram.org/method/auth.checkPhone rename to data/corefork.telegram.org/method/account.confirmPasswordEmail index d2419a2778..f960fb7b81 100644 --- a/data/corefork.telegram.org/method/auth.checkPhone +++ b/data/corefork.telegram.org/method/account.confirmPasswordEmail @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>auth.checkPhone</title> + <title>account.confirmPasswordEmail</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Returns information on whether the passed phone number was registered."> - <meta property="og:title" content="auth.checkPhone"> + <meta property="description" content="Verify an email to use as 2FA recovery method."> + <meta property="og:title" content="account.confirmPasswordEmail"> <meta property="og:image" content=""> - <meta property="og:description" content="Returns information on whether the passed phone number was registered."> + <meta property="og:description" content="Verify an email to use as 2FA recovery method."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/auth.checkPhone" >auth.checkPhone</a></li></ul></div> - <h1 id="dev_page_title">auth.checkPhone</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/account.confirmPasswordEmail" >account.confirmPasswordEmail</a></li></ul></div> + <h1 id="dev_page_title">account.confirmPasswordEmail</h1> - <div id="dev_page_content"><p>Returns information on whether the passed phone number was registered.</p> + <div id="dev_page_content"><p>Verify an email to use as <a href="/api/srp">2FA recovery method</a>.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,10 @@ </li> </ul> </div> -<pre class="page_scheme"> <code>Method schema is available as of layer 78. <a href="?layer=78">Switch »</a></code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/account.confirmPasswordEmail" class="current_page_link" >account.confirmPasswordEmail</a>#8fdf1920 code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</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> @@ -64,21 +67,14 @@ </thead> <tbody> <tr> -<td><strong>phone_number</strong></td> +<td><strong>code</strong></td> <td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Phone number in the international format</td> +<td>The phone code that was received after <a href="/api/srp#email-verification">setting a recovery email</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> -<p>The method returns an <a href="/type/auth.CheckedPhone">auth.CheckedPhone</a> type object with information on whether an account with such a phone number has already been registered, as well as whether invitations were sent to this number (using the <a href="/method/auth.sendInvites">auth.sendInvites</a> method).</p> -<h3><a class="anchor" href="#query-example" id="query-example" name="query-example"><i class="anchor-icon"></i></a>Query example</h3> -<pre><code>(auth.checkPhone "79123413132") -= -(auth.checkedPhone - phone_registered:(boolFalse) - phone_invited:(boolFalse) -)</code></pre> +<p><a href="/type/Bool">Bool</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> @@ -91,16 +87,19 @@ <tbody> <tr> <td>400</td> -<td>PHONE_NUMBER_BANNED</td> -<td>The provided phone number is banned from telegram</td> +<td>CODE_INVALID</td> +<td>Code invalid.</td> </tr> <tr> <td>400</td> -<td>PHONE_NUMBER_INVALID</td> -<td>Invalid phone number</td> +<td>EMAIL_HASH_EXPIRED</td> +<td>Email hash expired.</td> </tr> </tbody> -</table></div> +</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> </div> diff --git a/data/corefork.telegram.org/method/messages.reportEncryptedSpam b/data/corefork.telegram.org/method/account.declinePasswordReset similarity index 86% rename from data/corefork.telegram.org/method/messages.reportEncryptedSpam rename to data/corefork.telegram.org/method/account.declinePasswordReset index 7775a2dc05..e1ca2b8585 100644 --- a/data/corefork.telegram.org/method/messages.reportEncryptedSpam +++ b/data/corefork.telegram.org/method/account.declinePasswordReset @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.reportEncryptedSpam</title> + <title>account.declinePasswordReset</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Report a secret chat for spam"> - <meta property="og:title" content="messages.reportEncryptedSpam"> + <meta property="description" content="Abort a pending 2FA password reset, see here for more info »"> + <meta property="og:title" content="account.declinePasswordReset"> <meta property="og:image" content=""> - <meta property="og:description" content="Report a secret chat for spam"> + <meta property="og:description" content="Abort a pending 2FA password reset, see 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"> @@ -36,10 +36,10 @@ <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.reportEncryptedSpam" >messages.reportEncryptedSpam</a></li></ul></div> - <h1 id="dev_page_title">messages.reportEncryptedSpam</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/account.declinePasswordReset" >account.declinePasswordReset</a></li></ul></div> + <h1 id="dev_page_title">account.declinePasswordReset</h1> - <div id="dev_page_content"><p>Report a secret chat for spam</p> + <div id="dev_page_content"><p>Abort a pending 2FA password reset, <a href="/api/srp#password-reset">see here for more info »</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -55,24 +55,9 @@ <pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; <a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/messages.reportEncryptedSpam" class="current_page_link" >messages.reportEncryptedSpam</a>#4b0c8c0f peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/account.declinePasswordReset" class="current_page_link" >account.declinePasswordReset</a>#4c9409f6 = <a href="/type/Bool" >Bool</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/InputEncryptedChat">InputEncryptedChat</a></td> -<td>The secret chat to report</td> -</tr> -</tbody> -</table> +<p>This constructor does not require any parameters.</p> <h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> <p><a href="/type/Bool">Bool</a></p> <h3><a class="anchor" href="#possible-errors" id="possible-errors" name="possible-errors"><i class="anchor-icon"></i></a>Possible errors</h3> @@ -87,11 +72,14 @@ <tbody> <tr> <td>400</td> -<td>CHAT_ID_INVALID</td> -<td>The provided chat id is invalid.</td> +<td>RESET_REQUEST_MISSING</td> +<td>No password reset is in progress.</td> </tr> </tbody> -</table></div> +</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> </div> diff --git a/data/corefork.telegram.org/method/account.deleteAccount b/data/corefork.telegram.org/method/account.deleteAccount new file mode 100644 index 0000000000..56a03c27d6 --- /dev/null +++ b/data/corefork.telegram.org/method/account.deleteAccount @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.deleteAccount</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the 2FA password and no recovery method is configured."> + <meta property="og:title" content="account.deleteAccount"> + <meta property="og:image" content=""> + <meta property="og:description" content="Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the 2FA password and no recovery method is configured."> + <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?215" 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/account.deleteAccount" >account.deleteAccount</a></li></ul></div> + <h1 id="dev_page_title">account.deleteAccount</h1> + + <div id="dev_page_content"><p>Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the <a href="/api/srp">2FA password and no recovery method is configured</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/account.deleteAccount" class="current_page_link" >account.deleteAccount</a>#418d4e0b reason:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</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>reason</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Why is the account being deleted, can be empty</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/Bool">Bool</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>420</td> +<td>2FA_CONFIRM_WAIT_X</td> +<td>Since this account is active and protected by a 2FA password, we will delete it in 1 week for security purposes. You can cancel this process at any time, you'll be able to reset your account in X seconds.</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/account.getAuthorizationForm b/data/corefork.telegram.org/method/account.getAuthorizationForm new file mode 100644 index 0000000000..55e4233610 --- /dev/null +++ b/data/corefork.telegram.org/method/account.getAuthorizationForm @@ -0,0 +1,176 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.getAuthorizationForm</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Returns a Telegram Passport authorization form for sharing data with a service"> + <meta property="og:title" content="account.getAuthorizationForm"> + <meta property="og:image" content=""> + <meta property="og:description" content="Returns a Telegram Passport authorization form for sharing data with a service"> + <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?215" 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/account.getAuthorizationForm" >account.getAuthorizationForm</a></li></ul></div> + <h1 id="dev_page_title">account.getAuthorizationForm</h1> + + <div id="dev_page_content"><p>Returns a Telegram Passport authorization form for sharing data with a service</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/account.authorizationForm" >account.authorizationForm</a>#ad2e1cd8 flags:<a href="/type/%23" >#</a> required_types:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureRequiredType" >SecureRequiredType</a>> values:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValue" >SecureValue</a>> errors:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueError" >SecureValueError</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> privacy_policy_url:flags.0?<a href="/type/string" >string</a> = <a href="/type/account.AuthorizationForm" >account.AuthorizationForm</a>; +---functions--- +<a href="/method/account.getAuthorizationForm" class="current_page_link" >account.getAuthorizationForm</a>#a929597a bot_id:<a href="/type/long" >long</a> scope:<a href="/type/string" >string</a> public_key:<a href="/type/string" >string</a> = <a href="/type/account.AuthorizationForm" >account.AuthorizationForm</a>;</code></pre></p> +<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>bot_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>User identifier of the service's bot</td> +</tr> +<tr> +<td><strong>scope</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Telegram Passport element types requested by the service</td> +</tr> +<tr> +<td><strong>public_key</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Service's public key</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/account.AuthorizationForm">account.AuthorizationForm</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>PUBLIC_KEY_REQUIRED</td> +<td>A public key is required.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/account.getPasswordSettings b/data/corefork.telegram.org/method/account.getPasswordSettings new file mode 100644 index 0000000000..4420ff1f14 --- /dev/null +++ b/data/corefork.telegram.org/method/account.getPasswordSettings @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.getPasswordSettings</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get private info associated to the password info (recovery email, telegram passport info & so on)"> + <meta property="og:title" content="account.getPasswordSettings"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get private info associated to the password info (recovery email, telegram passport info & 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?215" 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/account.getPasswordSettings" >account.getPasswordSettings</a></li></ul></div> + <h1 id="dev_page_title">account.getPasswordSettings</h1> + + <div id="dev_page_content"><p>Get private info associated to the password info (recovery email, telegram <a href="/passport">passport</a> info & so on)</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/account.passwordSettings" >account.passwordSettings</a>#9a5c33e5 flags:<a href="/type/%23" >#</a> email:flags.0?<a href="/type/string" >string</a> secure_settings:flags.1?<a href="/type/SecureSecretSettings" >SecureSecretSettings</a> = <a href="/type/account.PasswordSettings" >account.PasswordSettings</a>; +---functions--- +<a href="/method/account.getPasswordSettings" class="current_page_link" >account.getPasswordSettings</a>#9cd4eaf9 password:<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> = <a href="/type/account.PasswordSettings" >account.PasswordSettings</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>password</strong></td> +<td style="text-align: center;"><a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a></td> +<td>The password (see <a href="/api/srp">SRP</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/account.PasswordSettings">account.PasswordSettings</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>PASSWORD_HASH_INVALID</td> +<td>The provided password hash 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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/account.getWebAuthorizations b/data/corefork.telegram.org/method/account.getWebAuthorizations new file mode 100644 index 0000000000..839d82e415 --- /dev/null +++ b/data/corefork.telegram.org/method/account.getWebAuthorizations @@ -0,0 +1,136 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.getWebAuthorizations</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get web login widget authorizations"> + <meta property="og:title" content="account.getWebAuthorizations"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get web login widget authorizations"> + <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?215" 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/account.getWebAuthorizations" >account.getWebAuthorizations</a></li></ul></div> + <h1 id="dev_page_title">account.getWebAuthorizations</h1> + + <div id="dev_page_content"><p>Get web <a href="/widgets/login">login widget</a> authorizations</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/account.webAuthorizations" >account.webAuthorizations</a>#ed56c9fc authorizations:<a href="/type/Vector%20t" >Vector</a><<a href="/type/WebAuthorization" >WebAuthorization</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/account.WebAuthorizations" >account.WebAuthorizations</a>; +---functions--- +<a href="/method/account.getWebAuthorizations" class="current_page_link" >account.getWebAuthorizations</a>#182e6d6f = <a href="/type/account.WebAuthorizations" >account.WebAuthorizations</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/account.WebAuthorizations">account.WebAuthorizations</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="#telegram-login-widget" id="telegram-login-widget" name="telegram-login-widget"><i class="anchor-icon"></i></a><a href="/widgets/login">Telegram Login Widget</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/account.resetPassword b/data/corefork.telegram.org/method/account.resetPassword new file mode 100644 index 0000000000..357c4dfee7 --- /dev/null +++ b/data/corefork.telegram.org/method/account.resetPassword @@ -0,0 +1,139 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.resetPassword</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Initiate a 2FA password reset: can only be used if the user is already logged-in, see here for more info »"> + <meta property="og:title" content="account.resetPassword"> + <meta property="og:image" content=""> + <meta property="og:description" content="Initiate a 2FA password reset: can only be used if the user is already logged-in, see 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?215" 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/account.resetPassword" >account.resetPassword</a></li></ul></div> + <h1 id="dev_page_title">account.resetPassword</h1> + + <div id="dev_page_content"><p>Initiate a 2FA password reset: can only be used if the user is already logged-in, <a href="/api/srp#password-reset">see 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/account.resetPasswordFailedWait" >account.resetPasswordFailedWait</a>#e3779861 retry_date:<a href="/type/int" >int</a> = <a href="/type/account.ResetPasswordResult" >account.ResetPasswordResult</a>; +<a href="/constructor/account.resetPasswordRequestedWait" >account.resetPasswordRequestedWait</a>#e9effc7d until_date:<a href="/type/int" >int</a> = <a href="/type/account.ResetPasswordResult" >account.ResetPasswordResult</a>; +<a href="/constructor/account.resetPasswordOk" >account.resetPasswordOk</a>#e926d63e = <a href="/type/account.ResetPasswordResult" >account.ResetPasswordResult</a>; +---functions--- +<a href="/method/account.resetPassword" class="current_page_link" >account.resetPassword</a>#9308ce1b = <a href="/type/account.ResetPasswordResult" >account.ResetPasswordResult</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/account.ResetPasswordResult">account.ResetPasswordResult</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/langpack.getLangPack b/data/corefork.telegram.org/method/account.setGlobalPrivacySettings similarity index 84% rename from data/corefork.telegram.org/method/langpack.getLangPack rename to data/corefork.telegram.org/method/account.setGlobalPrivacySettings index f264abf862..01a004581b 100644 --- a/data/corefork.telegram.org/method/langpack.getLangPack +++ b/data/corefork.telegram.org/method/account.setGlobalPrivacySettings @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>langpack.getLangPack</title> + <title>account.setGlobalPrivacySettings</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Get localization pack strings"> - <meta property="og:title" content="langpack.getLangPack"> + <meta property="description" content="Set global privacy settings"> + <meta property="og:title" content="account.setGlobalPrivacySettings"> <meta property="og:image" content=""> - <meta property="og:description" content="Get localization pack strings"> + <meta property="og:description" content="Set global privacy settings"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.getLangPack" >langpack.getLangPack</a></li></ul></div> - <h1 id="dev_page_title">langpack.getLangPack</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/account.setGlobalPrivacySettings" >account.setGlobalPrivacySettings</a></li></ul></div> + <h1 id="dev_page_title">account.setGlobalPrivacySettings</h1> - <div id="dev_page_content"><p>Get localization pack strings</p> + <div id="dev_page_content"><p>Set global privacy settings</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,9 @@ </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><<a href="/type/LangPackString" >LangPackString</a>> = <a href="/type/LangPackDifference" >LangPackDifference</a>; +<pre class="page_scheme"><code><a href="/constructor/globalPrivacySettings" >globalPrivacySettings</a>#bea2f424 flags:<a href="/type/%23" >#</a> archive_and_mute_new_noncontact_peers:flags.0?<a href="/type/Bool" >Bool</a> = <a href="/type/GlobalPrivacySettings" >GlobalPrivacySettings</a>; ---functions--- -<a href="/method/langpack.getLangPack" class="current_page_link" >langpack.getLangPack</a>#f2f2330a lang_pack:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> = <a href="/type/LangPackDifference" >LangPackDifference</a>;</code></pre></p> +<a href="/method/account.setGlobalPrivacySettings" class="current_page_link" >account.setGlobalPrivacySettings</a>#1edaaac2 settings:<a href="/type/GlobalPrivacySettings" >GlobalPrivacySettings</a> = <a href="/type/GlobalPrivacySettings" >GlobalPrivacySettings</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> @@ -66,19 +66,14 @@ </thead> <tbody> <tr> -<td><strong>lang_pack</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Language pack name</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> +<td><strong>settings</strong></td> +<td style="text-align: center;"><a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</a></td> +<td>Global privacy settings</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> +<p><a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</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> @@ -91,8 +86,8 @@ <tbody> <tr> <td>400</td> -<td>LANG_PACK_INVALID</td> -<td>The provided language pack is invalid.</td> +<td>AUTOARCHIVE_NOT_AVAILABLE</td> +<td>The autoarchive setting is not available at this time: please check the value of the <a href="https://core.telegram.org/api/config#client-configuration">autoarchive_setting_available field in client config »</a> before calling this method.</td> </tr> </tbody> </table></div> diff --git a/data/corefork.telegram.org/method/account.updatePasswordSettings b/data/corefork.telegram.org/method/account.updatePasswordSettings new file mode 100644 index 0000000000..3c9ee4f64e --- /dev/null +++ b/data/corefork.telegram.org/method/account.updatePasswordSettings @@ -0,0 +1,207 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>account.updatePasswordSettings</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Set a new 2FA password"> + <meta property="og:title" content="account.updatePasswordSettings"> + <meta property="og:image" content=""> + <meta property="og:description" content="Set a new 2FA 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?215" 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/account.updatePasswordSettings" >account.updatePasswordSettings</a></li></ul></div> + <h1 id="dev_page_title">account.updatePasswordSettings</h1> + + <div id="dev_page_content"><p>Set a new 2FA 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/account.updatePasswordSettings" class="current_page_link" >account.updatePasswordSettings</a>#a59b102f password:<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> new_settings:<a href="/type/account.PasswordInputSettings" >account.PasswordInputSettings</a> = <a href="/type/Bool" >Bool</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>password</strong></td> +<td style="text-align: center;"><a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a></td> +<td>The old password (see <a href="/api/srp">SRP</a>)</td> +</tr> +<tr> +<td><strong>new_settings</strong></td> +<td style="text-align: center;"><a href="/type/account.PasswordInputSettings">account.PasswordInputSettings</a></td> +<td>The new password (see <a href="/api/srp">SRP</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/Bool">Bool</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>EMAIL_UNCONFIRMED</td> +<td>Email unconfirmed.</td> +</tr> +<tr> +<td>400</td> +<td>EMAIL_UNCONFIRMED_X</td> +<td>The provided email isn't confirmed, X is the length of the verification code that was just sent to the email: use <a href="/method/account.verifyEmail">account.verifyEmail</a> to enter the received verification code and enable the recovery email.</td> +</tr> +<tr> +<td>400</td> +<td>NEW_SALT_INVALID</td> +<td>The new salt is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>NEW_SETTINGS_INVALID</td> +<td>The new password settings are invalid.</td> +</tr> +<tr> +<td>400</td> +<td>PASSWORD_HASH_INVALID</td> +<td>The old password hash is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>SRP_ID_INVALID</td> +<td>Invalid SRP ID provided.</td> +</tr> +<tr> +<td>400</td> +<td>SRP_PASSWORD_CHANGED</td> +<td>Password has changed.</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p> +<h4><a class="anchor" href="#accountverifyemail" id="accountverifyemail" name="accountverifyemail"><i class="anchor-icon"></i></a><a href="/method/account.verifyEmail">account.verifyEmail</a></h4> +<p>Verify an email address for telegram <a href="/passport">passport</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/auth.acceptLoginToken b/data/corefork.telegram.org/method/auth.acceptLoginToken new file mode 100644 index 0000000000..4e79b36bc1 --- /dev/null +++ b/data/corefork.telegram.org/method/auth.acceptLoginToken @@ -0,0 +1,171 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.acceptLoginToken</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Accept QR code login token, logging in the app that generated it."> + <meta property="og:title" content="auth.acceptLoginToken"> + <meta property="og:image" content=""> + <meta property="og:description" content="Accept QR code login token, logging in the app that generated it."> + <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?215" 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/auth.acceptLoginToken" >auth.acceptLoginToken</a></li></ul></div> + <h1 id="dev_page_title">auth.acceptLoginToken</h1> + + <div id="dev_page_content"><p>Accept QR code login token, logging in the app that generated it.</p> +<p>Returns info about the new session.</p> +<p>For more info, see <a href="/api/qr-login">login via QR code</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/authorization" >authorization</a>#ad01d61d flags:<a href="/type/%23" >#</a> current:flags.0?true official_app:flags.1?true password_pending:flags.2?true encrypted_requests_disabled:flags.3?true call_requests_disabled:flags.4?true hash:<a href="/type/long" >long</a> device_model:<a href="/type/string" >string</a> platform:<a href="/type/string" >string</a> system_version:<a href="/type/string" >string</a> api_id:<a href="/type/int" >int</a> app_name:<a href="/type/string" >string</a> app_version:<a href="/type/string" >string</a> date_created:<a href="/type/int" >int</a> date_active:<a href="/type/int" >int</a> ip:<a href="/type/string" >string</a> country:<a href="/type/string" >string</a> region:<a href="/type/string" >string</a> = <a href="/type/Authorization" >Authorization</a>; +---functions--- +<a href="/method/auth.acceptLoginToken" class="current_page_link" >auth.acceptLoginToken</a>#e894ad4d token:<a href="/type/bytes" >bytes</a> = <a href="/type/Authorization" >Authorization</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>token</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Login token embedded in QR code, for more info, see <a href="/api/qr-login">login via QR code</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/Authorization">Authorization</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>AUTH_TOKEN_INVALIDX</td> +<td>The specified auth token 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="#login-via-qr-code" id="login-via-qr-code" name="login-via-qr-code"><i class="anchor-icon"></i></a><a href="/api/qr-login">Login via QR code</a></h4> +<p>QR code login flow</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/auth.checkPassword b/data/corefork.telegram.org/method/auth.checkPassword new file mode 100644 index 0000000000..930a4f083a --- /dev/null +++ b/data/corefork.telegram.org/method/auth.checkPassword @@ -0,0 +1,180 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.checkPassword</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Try logging to an account protected by a 2FA password."> + <meta property="og:title" content="auth.checkPassword"> + <meta property="og:image" content=""> + <meta property="og:description" content="Try logging to an account protected by a 2FA 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?215" 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/auth.checkPassword" >auth.checkPassword</a></li></ul></div> + <h1 id="dev_page_title">auth.checkPassword</h1> + + <div id="dev_page_content"><p>Try logging to an account protected by a <a href="/api/srp">2FA password</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.authorization" >auth.authorization</a>#cd050916 flags:<a href="/type/%23" >#</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> user:<a href="/type/User" >User</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/constructor/auth.authorizationSignUpRequired" >auth.authorizationSignUpRequired</a>#44747e9a flags:<a href="/type/%23" >#</a> terms_of_service:flags.0?<a href="/type/help.TermsOfService" >help.TermsOfService</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +---functions--- +<a href="/method/auth.checkPassword" class="current_page_link" >auth.checkPassword</a>#d18b4d16 password:<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> = <a href="/type/auth.Authorization" >auth.Authorization</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>password</strong></td> +<td style="text-align: center;"><a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a></td> +<td>The account's password (see <a href="/api/srp">SRP</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/auth.Authorization">auth.Authorization</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>PASSWORD_HASH_INVALID</td> +<td>The provided password isn't valid.</td> +</tr> +<tr> +<td>400</td> +<td>SRP_ID_INVALID</td> +<td>Invalid SRP ID provided.</td> +</tr> +<tr> +<td>400</td> +<td>SRP_PASSWORD_CHANGED</td> +<td>Password has changed.</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/auth.checkRecoveryPassword b/data/corefork.telegram.org/method/auth.checkRecoveryPassword new file mode 100644 index 0000000000..c47c7a3a0a --- /dev/null +++ b/data/corefork.telegram.org/method/auth.checkRecoveryPassword @@ -0,0 +1,174 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.checkRecoveryPassword</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Check if the 2FA recovery code sent using auth.requestPasswordRecovery is valid, before passing it to auth.recoverPassword."> + <meta property="og:title" content="auth.checkRecoveryPassword"> + <meta property="og:image" content=""> + <meta property="og:description" content="Check if the 2FA recovery code sent using auth.requestPasswordRecovery is valid, before passing it to auth.recoverPassword."> + <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?215" 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/auth.checkRecoveryPassword" >auth.checkRecoveryPassword</a></li></ul></div> + <h1 id="dev_page_title">auth.checkRecoveryPassword</h1> + + <div id="dev_page_content"><p>Check if the <a href="/api/srp">2FA recovery code</a> sent using <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a> is valid, before passing it to <a href="/method/auth.recoverPassword">auth.recoverPassword</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/auth.checkRecoveryPassword" class="current_page_link" >auth.checkRecoveryPassword</a>#d36bf79 code:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</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>code</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Code received via email</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/Bool">Bool</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>PASSWORD_RECOVERY_EXPIRED</td> +<td>The recovery code has expired.</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p> +<h4><a class="anchor" href="#authrequestpasswordrecovery" id="authrequestpasswordrecovery" name="authrequestpasswordrecovery"><i class="anchor-icon"></i></a><a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a></h4> +<p>Request recovery code of a <a href="/api/srp">2FA password</a>, only for accounts with a <a href="/api/srp#email-verification">recovery email configured</a>.</p> +<h4><a class="anchor" href="#authrecoverpassword" id="authrecoverpassword" name="authrecoverpassword"><i class="anchor-icon"></i></a><a href="/method/auth.recoverPassword">auth.recoverPassword</a></h4> +<p>Reset the <a href="/api/srp">2FA password</a> using the recovery code sent using <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/auth.exportLoginToken b/data/corefork.telegram.org/method/auth.exportLoginToken new file mode 100644 index 0000000000..8a2d4932e9 --- /dev/null +++ b/data/corefork.telegram.org/method/auth.exportLoginToken @@ -0,0 +1,183 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.exportLoginToken</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Generate a login token, for login via QR code. The generated login token should be encoded using base64url, then shown as a tg://login?token=base64encodedtoken URL in the QR code."> + <meta property="og:title" content="auth.exportLoginToken"> + <meta property="og:image" content=""> + <meta property="og:description" content="Generate a login token, for login via QR code. The generated login token should be encoded using base64url, then shown as a tg://login?token=base64encodedtoken URL in the QR code."> + <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?215" 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/auth.exportLoginToken" >auth.exportLoginToken</a></li></ul></div> + <h1 id="dev_page_title">auth.exportLoginToken</h1> + + <div id="dev_page_content"><p>Generate a login token, for <a href="/api/qr-login">login via QR code</a>.<br> +The generated login token should be encoded using base64url, then shown as a <code>tg://login?token=base64encodedtoken</code> URL in the QR code.</p> +<p>For more info, see <a href="/api/qr-login">login via QR code</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.loginToken" >auth.loginToken</a>#629f1980 expires:<a href="/type/int" >int</a> token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +<a href="/constructor/auth.loginTokenMigrateTo" >auth.loginTokenMigrateTo</a>#68e9916 dc_id:<a href="/type/int" >int</a> token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +<a href="/constructor/auth.loginTokenSuccess" >auth.loginTokenSuccess</a>#390d5c5e authorization:<a href="/type/auth.Authorization" >auth.Authorization</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +---functions--- +<a href="/method/auth.exportLoginToken" class="current_page_link" >auth.exportLoginToken</a>#b7e085fe api_id:<a href="/type/int" >int</a> api_hash:<a href="/type/string" >string</a> except_ids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>;</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>api_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Application identifier (see. <a href="/myapp">App configuration</a>)</td> +</tr> +<tr> +<td><strong>api_hash</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Application identifier hash (see. <a href="/myapp">App configuration</a>)</td> +</tr> +<tr> +<td><strong>except_ids</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>></td> +<td>List of already logged-in user IDs, to prevent logging in twice with the same 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/auth.LoginToken">auth.LoginToken</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>API_ID_INVALID</td> +<td>API ID 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="#login-via-qr-code" id="login-via-qr-code" name="login-via-qr-code"><i class="anchor-icon"></i></a><a href="/api/qr-login">Login via QR code</a></h4> +<p>QR code login flow</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/auth.importLoginToken b/data/corefork.telegram.org/method/auth.importLoginToken new file mode 100644 index 0000000000..b1b82453c1 --- /dev/null +++ b/data/corefork.telegram.org/method/auth.importLoginToken @@ -0,0 +1,187 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.importLoginToken</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Login using a redirected login token, generated in case of DC mismatch during QR code login."> + <meta property="og:title" content="auth.importLoginToken"> + <meta property="og:image" content=""> + <meta property="og:description" content="Login using a redirected login token, generated in case of DC mismatch during QR code login."> + <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?215" 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/auth.importLoginToken" >auth.importLoginToken</a></li></ul></div> + <h1 id="dev_page_title">auth.importLoginToken</h1> + + <div id="dev_page_content"><p>Login using a redirected login token, generated in case of DC mismatch during <a href="/api/qr-login">QR code login</a>.</p> +<p>For more info, see <a href="/api/qr-login">login via QR code</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.loginToken" >auth.loginToken</a>#629f1980 expires:<a href="/type/int" >int</a> token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +<a href="/constructor/auth.loginTokenMigrateTo" >auth.loginTokenMigrateTo</a>#68e9916 dc_id:<a href="/type/int" >int</a> token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +<a href="/constructor/auth.loginTokenSuccess" >auth.loginTokenSuccess</a>#390d5c5e authorization:<a href="/type/auth.Authorization" >auth.Authorization</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</a>; +---functions--- +<a href="/method/auth.importLoginToken" class="current_page_link" >auth.importLoginToken</a>#95ac5ce4 token:<a href="/type/bytes" >bytes</a> = <a href="/type/auth.LoginToken" >auth.LoginToken</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>token</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>Login token</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/auth.LoginToken">auth.LoginToken</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>AUTH_TOKEN_ALREADY_ACCEPTED</td> +<td>The specified auth token was already accepted.</td> +</tr> +<tr> +<td>400</td> +<td>AUTH_TOKEN_EXPIRED</td> +<td>The authorization token has expired.</td> +</tr> +<tr> +<td>400</td> +<td>AUTH_TOKEN_INVALID</td> +<td>The specified auth token is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>AUTH_TOKEN_INVALIDX</td> +<td>The specified auth token 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="#login-via-qr-code" id="login-via-qr-code" name="login-via-qr-code"><i class="anchor-icon"></i></a><a href="/api/qr-login">Login via QR code</a></h4> +<p>QR code login flow</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/auth.recoverPassword b/data/corefork.telegram.org/method/auth.recoverPassword new file mode 100644 index 0000000000..67a4398875 --- /dev/null +++ b/data/corefork.telegram.org/method/auth.recoverPassword @@ -0,0 +1,187 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.recoverPassword</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Reset the 2FA password using the recovery code sent using auth.requestPasswordRecovery."> + <meta property="og:title" content="auth.recoverPassword"> + <meta property="og:image" content=""> + <meta property="og:description" content="Reset the 2FA password using the recovery code sent using auth.requestPasswordRecovery."> + <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?215" 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/auth.recoverPassword" >auth.recoverPassword</a></li></ul></div> + <h1 id="dev_page_title">auth.recoverPassword</h1> + + <div id="dev_page_content"><p>Reset the <a href="/api/srp">2FA password</a> using the recovery code sent using <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.authorization" >auth.authorization</a>#cd050916 flags:<a href="/type/%23" >#</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> user:<a href="/type/User" >User</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/constructor/auth.authorizationSignUpRequired" >auth.authorizationSignUpRequired</a>#44747e9a flags:<a href="/type/%23" >#</a> terms_of_service:flags.0?<a href="/type/help.TermsOfService" >help.TermsOfService</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +---functions--- +<a href="/method/auth.recoverPassword" class="current_page_link" >auth.recoverPassword</a>#37096c70 flags:<a href="/type/%23" >#</a> code:<a href="/type/string" >string</a> new_settings:flags.0?<a href="/type/account.PasswordInputSettings" >account.PasswordInputSettings</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>;</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>code</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Code received via email</td> +</tr> +<tr> +<td><strong>new_settings</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/account.PasswordInputSettings">account.PasswordInputSettings</a></td> +<td>New password</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/auth.Authorization">auth.Authorization</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>CODE_EMPTY</td> +<td>The provided code is empty.</td> +</tr> +<tr> +<td>400</td> +<td>NEW_SETTINGS_INVALID</td> +<td>The new settings are 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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p> +<h4><a class="anchor" href="#authrequestpasswordrecovery" id="authrequestpasswordrecovery" name="authrequestpasswordrecovery"><i class="anchor-icon"></i></a><a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a></h4> +<p>Request recovery code of a <a href="/api/srp">2FA password</a>, only for accounts with a <a href="/api/srp#email-verification">recovery email configured</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/auth.requestPasswordRecovery b/data/corefork.telegram.org/method/auth.requestPasswordRecovery new file mode 100644 index 0000000000..1ba3f369ea --- /dev/null +++ b/data/corefork.telegram.org/method/auth.requestPasswordRecovery @@ -0,0 +1,159 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.requestPasswordRecovery</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Request recovery code of a 2FA password, only for accounts with a recovery email configured."> + <meta property="og:title" content="auth.requestPasswordRecovery"> + <meta property="og:image" content=""> + <meta property="og:description" content="Request recovery code of a 2FA password, only for accounts with a recovery email configured."> + <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?215" 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/auth.requestPasswordRecovery" >auth.requestPasswordRecovery</a></li></ul></div> + <h1 id="dev_page_title">auth.requestPasswordRecovery</h1> + + <div id="dev_page_content"><p>Request recovery code of a <a href="/api/srp">2FA password</a>, only for accounts with a <a href="/api/srp#email-verification">recovery email configured</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.passwordRecovery" >auth.passwordRecovery</a>#137948a5 email_pattern:<a href="/type/string" >string</a> = <a href="/type/auth.PasswordRecovery" >auth.PasswordRecovery</a>; +---functions--- +<a href="/method/auth.requestPasswordRecovery" class="current_page_link" >auth.requestPasswordRecovery</a>#d897bc66 = <a href="/type/auth.PasswordRecovery" >auth.PasswordRecovery</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/auth.PasswordRecovery">auth.PasswordRecovery</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>PASSWORD_EMPTY</td> +<td>The provided password is empty.</td> +</tr> +<tr> +<td>400</td> +<td>PASSWORD_RECOVERY_NA</td> +<td>No email was set, can't recover password via email.</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.getDiscussionMessage b/data/corefork.telegram.org/method/auth.signIn similarity index 72% rename from data/corefork.telegram.org/method/messages.getDiscussionMessage rename to data/corefork.telegram.org/method/auth.signIn index 074488319e..c234fdb24d 100644 --- a/data/corefork.telegram.org/method/messages.getDiscussionMessage +++ b/data/corefork.telegram.org/method/auth.signIn @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.getDiscussionMessage</title> + <title>auth.signIn</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Get discussion message from the associated discussion group of a channel to show it on top of the comment section, without actually joining the group"> - <meta property="og:title" content="messages.getDiscussionMessage"> + <meta property="description" content="Signs in a user with a validated phone number."> + <meta property="og:title" content="auth.signIn"> <meta property="og:image" content=""> - <meta property="og:description" content="Get discussion message from the associated discussion group of a channel to show it on top of the comment section, without actually joining the group"> + <meta property="og:description" content="Signs in a user with a validated phone number."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.getDiscussionMessage" >messages.getDiscussionMessage</a></li></ul></div> - <h1 id="dev_page_title">messages.getDiscussionMessage</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/auth.signIn" >auth.signIn</a></li></ul></div> + <h1 id="dev_page_title">auth.signIn</h1> - <div id="dev_page_content"><p>Get <a href="/api/threads">discussion message</a> from the <a href="/api/discussion">associated discussion group</a> of a channel to show it on top of the comment section, without actually joining the group</p> + <div id="dev_page_content"><p>Signs in a user with a validated phone number.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,10 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.discussionMessage" >messages.discussionMessage</a>#a6341782 flags:<a href="/type/%23" >#</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> max_id:flags.0?<a href="/type/int" >int</a> read_inbox_max_id:flags.1?<a href="/type/int" >int</a> read_outbox_max_id:flags.2?<a href="/type/int" >int</a> unread_count:<a href="/type/int" >int</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.DiscussionMessage" >messages.DiscussionMessage</a>; +<pre class="page_scheme"><code><a href="/constructor/auth.authorization" >auth.authorization</a>#cd050916 flags:<a href="/type/%23" >#</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> user:<a href="/type/User" >User</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/constructor/auth.authorizationSignUpRequired" >auth.authorizationSignUpRequired</a>#44747e9a flags:<a href="/type/%23" >#</a> terms_of_service:flags.0?<a href="/type/help.TermsOfService" >help.TermsOfService</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; ---functions--- -<a href="/method/messages.getDiscussionMessage" class="current_page_link" >messages.getDiscussionMessage</a>#446972fd peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/messages.DiscussionMessage" >messages.DiscussionMessage</a>;</code></pre></p> +<a href="/method/auth.signIn" class="current_page_link" >auth.signIn</a>#bcd51581 phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> phone_code:<a href="/type/string" >string</a> = <a href="/type/auth.Authorization" >auth.Authorization</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> @@ -66,19 +67,24 @@ </thead> <tbody> <tr> -<td><strong>peer</strong></td> -<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td><a href="/api/channel">Channel ID</a></td> +<td><strong>phone_number</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Phone number in the international format</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> +<td><strong>phone_code_hash</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>SMS-message ID, obtained from <a href="/method/auth.sendCode">auth.sendCode</a></td> +</tr> +<tr> +<td><strong>phone_code</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Valid numerical code from the SMS-message</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.DiscussionMessage">messages.DiscussionMessage</a></p> +<p>Returns an <a href="/type/auth.Authorization">auth.Authorization</a> object with information on the new authorization.</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> @@ -91,23 +97,53 @@ <tbody> <tr> <td>400</td> -<td>MSG_ID_INVALID</td> -<td>Invalid message ID provided.</td> +<td>PHONE_CODE_EMPTY</td> +<td><strong>phone_code</strong> from the SMS is empty.</td> </tr> <tr> <td>400</td> -<td>PEER_ID_INVALID</td> -<td>The provided peer id is invalid.</td> +<td>PHONE_CODE_EXPIRED</td> +<td>SMS expired.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_CODE_INVALID</td> +<td>Invalid SMS code was sent.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_NUMBER_INVALID</td> +<td>Invalid phone number.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_NUMBER_UNOCCUPIED</td> +<td>The code is valid but no user with the given number is registered.</td> </tr> </tbody> </table> +<h3><a class="anchor" href="#query-example" id="query-example" name="query-example"><i class="anchor-icon"></i></a>Query example</h3> +<pre><code>(auth.signIn "79991234567" "2dc02d2cda9e615c84" "44444") += +(auth.authorization + expires:1403938438 + user:(userSelf + id:603177 + first_name:"John" + last_name:"Doe" + phone:"79991234567" + photo:(userProfilePhotoEmpty) + status:(userStatusEmpty) + inactive:(boolTrue) + ) +) + +bcd51581 3939370b 33323139 37363534 63643212 32643230 39616463 35313665 00343863 34343405 00003434 45ca2b3b += +f6b673a4 53ae6686 720535ec 00093429 686f4a04 0000006e 656f4403 3939370b 33323139 37363534 4f11bae1 09d05049 997275b5 d8487410</code></pre> <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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> -<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> -<h4><a class="anchor" href="#threads" id="threads" name="threads"><i class="anchor-icon"></i></a><a href="/api/threads">Threads</a></h4> -<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> -<h4><a class="anchor" href="#discussion-groups" id="discussion-groups" name="discussion-groups"><i class="anchor-icon"></i></a><a href="/api/discussion">Discussion groups</a></h4> -<p><a href="/api/channel">Groups</a> can be associated to a <a href="/api/channel">channel</a> as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts.</p></div> +<h4><a class="anchor" href="#authsendcode" id="authsendcode" name="authsendcode"><i class="anchor-icon"></i></a><a href="/method/auth.sendCode">auth.sendCode</a></h4> +<p>Send the verification code for login</p></div> </div> diff --git a/data/corefork.telegram.org/method/auth.signUp b/data/corefork.telegram.org/method/auth.signUp new file mode 100644 index 0000000000..c567279d0e --- /dev/null +++ b/data/corefork.telegram.org/method/auth.signUp @@ -0,0 +1,236 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>auth.signUp</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Registers a validated phone number in the system."> + <meta property="og:title" content="auth.signUp"> + <meta property="og:image" content=""> + <meta property="og:description" content="Registers a validated phone number in the system."> + <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?215" 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/auth.signUp" >auth.signUp</a></li></ul></div> + <h1 id="dev_page_title">auth.signUp</h1> + + <div id="dev_page_content"><p>Registers a validated phone number in the system.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/auth.authorization" >auth.authorization</a>#cd050916 flags:<a href="/type/%23" >#</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> user:<a href="/type/User" >User</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +<a href="/constructor/auth.authorizationSignUpRequired" >auth.authorizationSignUpRequired</a>#44747e9a flags:<a href="/type/%23" >#</a> terms_of_service:flags.0?<a href="/type/help.TermsOfService" >help.TermsOfService</a> = <a href="/type/auth.Authorization" >auth.Authorization</a>; +---functions--- +<a href="/method/auth.signUp" class="current_page_link" >auth.signUp</a>#80eee427 phone_number:<a href="/type/string" >string</a> phone_code_hash:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> = <a href="/type/auth.Authorization" >auth.Authorization</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>phone_number</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Phone number in the international format</td> +</tr> +<tr> +<td><strong>phone_code_hash</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>SMS-message ID</td> +</tr> +<tr> +<td><strong>first_name</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>New user first name</td> +</tr> +<tr> +<td><strong>last_name</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>New user last name</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p>Returns an <a href="/type/auth.Authorization">auth.Authorization</a> object with information about the new authorization.</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>FIRSTNAME_INVALID</td> +<td>Invalid first name.</td> +</tr> +<tr> +<td>400</td> +<td>LASTNAME_INVALID</td> +<td>Invalid last name.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_CODE_EMPTY</td> +<td><strong>phone_code</strong> from a SMS is empty.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_CODE_EXPIRED</td> +<td>SMS expired.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_CODE_INVALID</td> +<td>Invalid SMS code was sent.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_NUMBER_FLOOD</td> +<td>You asked for the code too many times.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_NUMBER_INVALID</td> +<td>Invalid phone number.</td> +</tr> +<tr> +<td>400</td> +<td>PHONE_NUMBER_OCCUPIED</td> +<td>The phone number is already in use.</td> +</tr> +</tbody> +</table> +<h3><a class="anchor" href="#query-example" id="query-example" name="query-example"><i class="anchor-icon"></i></a>Query example</h3> +<pre><code>(auth.signUp "79991234567" "2dc02d2cda9e615c84" "44444" "John" "Doe") += +(auth.authorization + expires:1403938438 + user:(userSelf + id:603177 + first_name:"John" + last_name:"Doe" + phone:"79991234567" + photo:(userProfilePhotoEmpty) + status:(userStatusEmpty) + inactive:(boolTrue) + ) +) + +1b067634 3939370b 33323139 37363534 63643212 32643230 39616463 35313665 00343863 34343405 00003434 686f4a04 0000006e 656f4403 c18027ca += +f6b673a4 53ae6686 720535ec 00093429 686f4a04 0000006e 656f4403 3939370b 33323139 37363534 4f11bae1 09d05049 997275b5 d8487410</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/channels.convertToGigagroup b/data/corefork.telegram.org/method/channels.convertToGigagroup new file mode 100644 index 0000000000..fc70a6340a --- /dev/null +++ b/data/corefork.telegram.org/method/channels.convertToGigagroup @@ -0,0 +1,177 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>channels.convertToGigagroup</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Convert a supergroup to a gigagroup, when requested by channel suggestions."> + <meta property="og:title" content="channels.convertToGigagroup"> + <meta property="og:image" content=""> + <meta property="og:description" content="Convert a supergroup to a gigagroup, when requested by channel suggestions."> + <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?215" 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/channels.convertToGigagroup" >channels.convertToGigagroup</a></li></ul></div> + <h1 id="dev_page_title">channels.convertToGigagroup</h1> + + <div id="dev_page_content"><p>Convert a <a href="/api/channel">supergroup</a> to a <a href="/api/channel">gigagroup</a>, when requested by <a href="/api/config#channel-suggestions">channel suggestions</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/channels.convertToGigagroup" class="current_page_link" >channels.convertToGigagroup</a>#b290c69 channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/Updates" >Updates</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>channel</strong></td> +<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> +<td>The <a href="/api/channel">supergroup</a> to convert</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/Updates">Updates</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>PARTICIPANTS_TOO_FEW</td> +<td>Not enough participants.</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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/phone.editGroupCallParticipant b/data/corefork.telegram.org/method/channels.createChannel similarity index 76% rename from data/corefork.telegram.org/method/phone.editGroupCallParticipant rename to data/corefork.telegram.org/method/channels.createChannel index 9fc06b07bf..e41f146338 100644 --- a/data/corefork.telegram.org/method/phone.editGroupCallParticipant +++ b/data/corefork.telegram.org/method/channels.createChannel @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>phone.editGroupCallParticipant</title> + <title>channels.createChannel</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Edit information about a given group call participant"> - <meta property="og:title" content="phone.editGroupCallParticipant"> + <meta property="description" content="Create a supergroup/channel."> + <meta property="og:title" content="channels.createChannel"> <meta property="og:image" content=""> - <meta property="og:description" content="Edit information about a given group call participant"> + <meta property="og:description" content="Create a supergroup/channel."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,16 +36,10 @@ <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/phone.editGroupCallParticipant" >phone.editGroupCallParticipant</a></li></ul></div> - <h1 id="dev_page_title">phone.editGroupCallParticipant</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/channels.createChannel" >channels.createChannel</a></li></ul></div> + <h1 id="dev_page_title">channels.createChannel</h1> - <div id="dev_page_content"><p>Edit information about a given group call participant</p> -<p>Note: <a href="/mtproto/TL-combinators#conditional-fields">flags</a>.N?<a href="/type/Bool">Bool</a> parameters can have three possible values:</p> -<ul> -<li>If the <a href="/mtproto/TL-combinators#conditional-fields">TL flag</a> is not set, the previous value will not be changed.</li> -<li>If the <a href="/mtproto/TL-combinators#conditional-fields">TL flag</a> is set and contains a <a href="/constructor/boolTrue">boolTrue</a>, the previous value will be overwritten to <code>true</code>.</li> -<li>If the <a href="/mtproto/TL-combinators#conditional-fields">TL flag</a> is set and contains a <a href="/constructor/boolFalse">boolFalse</a>, the previous value will be overwritten to <code>false</code>.</li> -</ul> + <div id="dev_page_content"><p>Create a <a href="/api/channel">supergroup/channel</a>.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -66,7 +60,7 @@ <a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; <a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; ---functions--- -<a href="/method/phone.editGroupCallParticipant" class="current_page_link" >phone.editGroupCallParticipant</a>#a5273abf flags:<a href="/type/%23" >#</a> call:<a href="/type/InputGroupCall" >InputGroupCall</a> participant:<a href="/type/InputPeer" >InputPeer</a> muted:flags.0?<a href="/type/Bool" >Bool</a> volume:flags.1?<a href="/type/int" >int</a> raise_hand:flags.2?<a href="/type/Bool" >Bool</a> video_stopped:flags.3?<a href="/type/Bool" >Bool</a> video_paused:flags.4?<a href="/type/Bool" >Bool</a> presentation_paused:flags.5?<a href="/type/Bool" >Bool</a> = <a href="/type/Updates" >Updates</a>;</code></pre></p> +<a href="/method/channels.createChannel" class="current_page_link" >channels.createChannel</a>#3d5fb10f flags:<a href="/type/%23" >#</a> broadcast:flags.0?true megagroup:flags.1?true for_import:flags.3?true title:<a href="/type/string" >string</a> about:<a href="/type/string" >string</a> geo_point:flags.2?<a href="/type/InputGeoPoint" >InputGeoPoint</a> address:flags.2?<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>;</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> @@ -83,44 +77,39 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>call</strong></td> -<td style="text-align: center;"><a href="/type/InputGroupCall">InputGroupCall</a></td> -<td>The group call</td> +<td><strong>broadcast</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 to create a <a href="/api/channel">channel</a></td> </tr> <tr> -<td><strong>participant</strong></td> -<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td>The group call participant (can also be the user itself)</td> +<td><strong>megagroup</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>Whether to create a <a href="/api/channel">supergroup</a></td> </tr> <tr> -<td><strong>muted</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/Bool">Bool</a></td> -<td>Whether to mute or unmute the specified participant</td> +<td><strong>for_import</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>Whether the supergroup is being created to import messages from a foreign chat service using <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a></td> </tr> <tr> -<td><strong>volume</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>New volume</td> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Channel title</td> </tr> <tr> -<td><strong>raise_hand</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/Bool">Bool</a></td> -<td>Raise or lower hand</td> +<td><strong>about</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Channel description</td> </tr> <tr> -<td><strong>video_stopped</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Bool">Bool</a></td> -<td>Start or stop the video stream</td> +<td><strong>geo_point</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/InputGeoPoint">InputGeoPoint</a></td> +<td>Geogroup location</td> </tr> <tr> -<td><strong>video_paused</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Bool">Bool</a></td> -<td>Pause or resume the video stream</td> -</tr> -<tr> -<td><strong>presentation_paused</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/Bool">Bool</a></td> -<td>Pause or resume the screen sharing stream</td> +<td><strong>address</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td> +<td>Geogroup address</td> </tr> </tbody> </table> @@ -138,18 +127,36 @@ <tbody> <tr> <td>400</td> -<td>USER_VOLUME_INVALID</td> -<td>The specified user volume is invalid.</td> +<td>CHANNELS_ADMIN_LOCATED_TOO_MUCH</td> +<td>The user has reached the limit of public geogroups.</td> +</tr> +<tr> +<td>400</td> +<td>CHANNELS_TOO_MUCH</td> +<td>You have joined too many channels/supergroups.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_ABOUT_TOO_LONG</td> +<td>Chat about too long.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_TITLE_EMPTY</td> +<td>No chat title provided.</td> +</tr> +<tr> +<td>403</td> +<td>USER_RESTRICTED</td> +<td>You're spamreported, you can't create channels or chats.</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="#bool" id="bool" name="bool"><i class="anchor-icon"></i></a><a href="/type/Bool">Bool</a></h4> -<p>Boolean type.</p> -<h4><a class="anchor" href="#booltrue" id="booltrue" name="booltrue"><i class="anchor-icon"></i></a><a href="/constructor/boolTrue">boolTrue</a></h4> -<p>The constructor can be interpreted as a <strong>boolean</strong><code>true</code> value.</p> -<h4><a class="anchor" href="#boolfalse" id="boolfalse" name="boolfalse"><i class="anchor-icon"></i></a><a href="/constructor/boolFalse">boolFalse</a></h4> -<p>Constructor may be interpreted as a <strong>boolean</strong><code>false</code> value.</p></div> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#messagesinithistoryimport" id="messagesinithistoryimport" name="messagesinithistoryimport"><i class="anchor-icon"></i></a><a href="/method/messages.initHistoryImport">messages.initHistoryImport</a></h4> +<p>Import chat history from a foreign chat app into a specific Telegram chat, <a href="/api/import">click here for more info about imported chats »</a>.</p></div> </div> diff --git a/data/corefork.telegram.org/method/channels.editAdmin b/data/corefork.telegram.org/method/channels.editAdmin new file mode 100644 index 0000000000..11a2bcbe1f --- /dev/null +++ b/data/corefork.telegram.org/method/channels.editAdmin @@ -0,0 +1,301 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>channels.editAdmin</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Modify the admin rights of a user in a supergroup/channel."> + <meta property="og:title" content="channels.editAdmin"> + <meta property="og:image" content=""> + <meta property="og:description" content="Modify the admin rights of a user in a supergroup/channel."> + <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?215" 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/channels.editAdmin" >channels.editAdmin</a></li></ul></div> + <h1 id="dev_page_title">channels.editAdmin</h1> + + <div id="dev_page_content"><p>Modify the admin rights of a user in a <a href="/api/channel">supergroup/channel</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/channels.editAdmin" class="current_page_link" >channels.editAdmin</a>#d33c8902 channel:<a href="/type/InputChannel" >InputChannel</a> user_id:<a href="/type/InputUser" >InputUser</a> admin_rights:<a href="/type/ChatAdminRights" >ChatAdminRights</a> rank:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</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>channel</strong></td> +<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> +<td>The <a href="/api/channel">supergroup/channel</a>.</td> +</tr> +<tr> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> +<td>The ID of the user whose admin rights should be modified</td> +</tr> +<tr> +<td><strong>admin_rights</strong></td> +<td style="text-align: center;"><a href="/type/ChatAdminRights">ChatAdminRights</a></td> +<td>The admin rights</td> +</tr> +<tr> +<td><strong>rank</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Indicates the role (rank) of the admin in the group: just an arbitrary string</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/Updates">Updates</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>ADMINS_TOO_MUCH</td> +<td>There are too many admins.</td> +</tr> +<tr> +<td>400</td> +<td>ADMIN_RANK_EMOJI_NOT_ALLOWED</td> +<td>An admin rank cannot contain emojis.</td> +</tr> +<tr> +<td>400</td> +<td>ADMIN_RANK_INVALID</td> +<td>The specified admin rank is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BOTS_TOO_MUCH</td> +<td>There are too many bots in this chat/channel.</td> +</tr> +<tr> +<td>400</td> +<td>BOT_CHANNELS_NA</td> +<td>Bots can't edit admin privileges.</td> +</tr> +<tr> +<td>400</td> +<td>BOT_GROUPS_BLOCKED</td> +<td>This bot can't be added to groups.</td> +</tr> +<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>403</td> +<td>CHAT_ADMIN_INVITE_REQUIRED</td> +<td>You do not have the rights to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<tr> +<td>406</td> +<td>FRESH_CHANGE_ADMINS_FORBIDDEN</td> +<td>You were just elected admin, you can't add or modify other admins yet.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</td> +</tr> +<tr> +<td>400</td> +<td>PEER_ID_INVALID</td> +<td>The provided peer id is invalid.</td> +</tr> +<tr> +<td>403</td> +<td>RIGHT_FORBIDDEN</td> +<td>Your admin rights do not allow you to do this.</td> +</tr> +<tr> +<td>400</td> +<td>USERS_TOO_MUCH</td> +<td>The maximum number of users has been exceeded (to create a chat, for example).</td> +</tr> +<tr> +<td>400</td> +<td>USER_BLOCKED</td> +<td>User blocked.</td> +</tr> +<tr> +<td>403</td> +<td>USER_CHANNELS_TOO_MUCH</td> +<td>One of the users you tried to add is already in too many channels/supergroups.</td> +</tr> +<tr> +<td>400</td> +<td>USER_CREATOR</td> +<td>You can't leave this channel, because you're its creator.</td> +</tr> +<tr> +<td>400</td> +<td>USER_ID_INVALID</td> +<td>The provided user ID is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>USER_NOT_MUTUAL_CONTACT</td> +<td>The provided user is not a mutual contact.</td> +</tr> +<tr> +<td>403</td> +<td>USER_PRIVACY_RESTRICTED</td> +<td>The user's privacy settings do not allow you to do this.</td> +</tr> +<tr> +<td>403</td> +<td>USER_RESTRICTED</td> +<td>You're spamreported, you can't create channels or chats.</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> +<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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/channels.editCreator b/data/corefork.telegram.org/method/channels.editBanned similarity index 84% rename from data/core.telegram.org/method/channels.editCreator rename to data/corefork.telegram.org/method/channels.editBanned index 9db0cc561e..60ddcdcbda 100644 --- a/data/core.telegram.org/method/channels.editCreator +++ b/data/corefork.telegram.org/method/channels.editBanned @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>channels.editCreator</title> + <title>channels.editBanned</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Transfer channel ownership"> - <meta property="og:title" content="channels.editCreator"> + <meta property="description" content="Ban/unban/kick a user in a supergroup/channel."> + <meta property="og:title" content="channels.editBanned"> <meta property="og:image" content=""> - <meta property="og:description" content="Transfer channel ownership"> + <meta property="og:description" content="Ban/unban/kick a user in a supergroup/channel."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/channels.editCreator" >channels.editCreator</a></li></ul></div> - <h1 id="dev_page_title">channels.editCreator</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/channels.editBanned" >channels.editBanned</a></li></ul></div> + <h1 id="dev_page_title">channels.editBanned</h1> - <div id="dev_page_content"><p>Transfer channel ownership</p> + <div id="dev_page_content"><p>Ban/unban/kick a user in a <a href="/api/channel">supergroup/channel</a>.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -60,7 +60,7 @@ <a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; <a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; ---functions--- -<a href="/method/channels.editCreator" class="current_page_link" >channels.editCreator</a>#8f38cd1f channel:<a href="/type/InputChannel" >InputChannel</a> user_id:<a href="/type/InputUser" >InputUser</a> password:<a href="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a> = <a href="/type/Updates" >Updates</a>;</code></pre></p> +<a href="/method/channels.editBanned" class="current_page_link" >channels.editBanned</a>#96e6cd81 channel:<a href="/type/InputChannel" >InputChannel</a> participant:<a href="/type/InputPeer" >InputPeer</a> banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> = <a href="/type/Updates" >Updates</a>;</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> @@ -74,17 +74,17 @@ <tr> <td><strong>channel</strong></td> <td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> -<td>Channel</td> +<td>The <a href="/api/channel">supergroup/channel</a>.</td> </tr> <tr> -<td><strong>user_id</strong></td> -<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> -<td>New channel owner</td> +<td><strong>participant</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>Participant to ban</td> </tr> <tr> -<td><strong>password</strong></td> -<td style="text-align: center;"><a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a></td> -<td><a href="/api/srp">2FA password</a> of account</td> +<td><strong>banned_rights</strong></td> +<td style="text-align: center;"><a href="/type/ChatBannedRights">ChatBannedRights</a></td> +<td>The banned rights</td> </tr> </tbody> </table> @@ -102,6 +102,16 @@ <tbody> <tr> <td>400</td> +<td>CHANNEL_ADD_INVALID</td> +<td>Internal error.</td> +</tr> +<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> @@ -117,28 +127,33 @@ </tr> <tr> <td>400</td> -<td>PASSWORD_HASH_INVALID</td> -<td>The provided password hash is invalid.</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</td> </tr> <tr> <td>400</td> -<td>PASSWORD_MISSING</td> -<td>You must enable 2FA in order to transfer ownership of a channel.</td> +<td>MSG_ID_INVALID</td> +<td>Invalid message ID provided.</td> </tr> <tr> <td>400</td> -<td>PASSWORD_TOO_FRESH_X</td> -<td>The password was modified less than 24 hours ago, try again in X seconds.</td> +<td>PARTICIPANT_ID_INVALID</td> +<td>The specified participant ID is invalid.</td> </tr> <tr> <td>400</td> -<td>SESSION_TOO_FRESH_X</td> -<td>This session was created less than 24 hours ago, try again in X seconds.</td> +<td>PEER_ID_INVALID</td> +<td>The provided peer id is invalid.</td> </tr> <tr> <td>400</td> -<td>SRP_ID_INVALID</td> -<td>Invalid SRP ID provided.</td> +<td>PINNED_DIALOGS_TOO_MUCH</td> +<td>Too many pinned dialogs.</td> +</tr> +<tr> +<td>400</td> +<td>USER_ADMIN_INVALID</td> +<td>You're not an admin.</td> </tr> <tr> <td>400</td> @@ -147,9 +162,10 @@ </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> <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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> -<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> </div> @@ -188,9 +204,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -207,7 +223,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/method/contacts.resolveUsername b/data/corefork.telegram.org/method/channels.getFullChannel similarity index 84% rename from data/corefork.telegram.org/method/contacts.resolveUsername rename to data/corefork.telegram.org/method/channels.getFullChannel index c6b98ab536..a707edf182 100644 --- a/data/corefork.telegram.org/method/contacts.resolveUsername +++ b/data/corefork.telegram.org/method/channels.getFullChannel @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>contacts.resolveUsername</title> + <title>channels.getFullChannel</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Resolve a @username to get peer info"> - <meta property="og:title" content="contacts.resolveUsername"> + <meta property="description" content="Get full info about a channel"> + <meta property="og:title" content="channels.getFullChannel"> <meta property="og:image" content=""> - <meta property="og:description" content="Resolve a @username to get peer info"> + <meta property="og:description" content="Get full info about a channel"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/contacts.resolveUsername" >contacts.resolveUsername</a></li></ul></div> - <h1 id="dev_page_title">contacts.resolveUsername</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/channels.getFullChannel" >channels.getFullChannel</a></li></ul></div> + <h1 id="dev_page_title">channels.getFullChannel</h1> - <div id="dev_page_content"><p>Resolve a @username to get peer info</p> + <div id="dev_page_content"><p>Get full info about a channel</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,9 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/contacts.resolvedPeer" >contacts.resolvedPeer</a>#7f077ad9 peer:<a href="/type/Peer" >Peer</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/contacts.ResolvedPeer" >contacts.ResolvedPeer</a>; +<pre class="page_scheme"><code><a href="/constructor/messages.chatFull" >messages.chatFull</a>#e5d7d19c full_chat:<a href="/type/ChatFull" >ChatFull</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.ChatFull" >messages.ChatFull</a>; ---functions--- -<a href="/method/contacts.resolveUsername" class="current_page_link" >contacts.resolveUsername</a>#f93ccba3 username:<a href="/type/string" >string</a> = <a href="/type/contacts.ResolvedPeer" >contacts.ResolvedPeer</a>;</code></pre></p> +<a href="/method/channels.getFullChannel" class="current_page_link" >channels.getFullChannel</a>#8736a09 channel:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/messages.ChatFull" >messages.ChatFull</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> @@ -66,14 +66,14 @@ </thead> <tbody> <tr> -<td><strong>username</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>@username to resolve</td> +<td><strong>channel</strong></td> +<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> +<td>The channel to get info about</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/contacts.ResolvedPeer">contacts.ResolvedPeer</a></p> +<p><a href="/type/messages.ChatFull">messages.ChatFull</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> @@ -85,24 +85,29 @@ </thead> <tbody> <tr> -<td>401</td> -<td>AUTH_KEY_PERM_EMPTY</td> -<td>The temporary auth key must be binded to the permanent auth key to use these methods.</td> +<td>400</td> +<td>CHANNEL_INVALID</td> +<td>The provided channel is invalid.</td> </tr> <tr> <td>400</td> -<td>CONNECTION_LAYER_INVALID</td> -<td>Layer invalid.</td> +<td>CHANNEL_PRIVATE</td> +<td>You haven't joined this channel/supergroup.</td> +</tr> +<tr> +<td>403</td> +<td>CHANNEL_PUBLIC_GROUP_NA</td> +<td>channel/supergroup not available.</td> </tr> <tr> <td>400</td> -<td>USERNAME_INVALID</td> -<td>The provided username is not valid.</td> +<td>CHAT_NOT_MODIFIED</td> +<td>The pinned message wasn't modified.</td> </tr> <tr> <td>400</td> -<td>USERNAME_NOT_OCCUPIED</td> -<td>The provided username is not occupied.</td> +<td>MSG_ID_INVALID</td> +<td>Invalid message ID provided.</td> </tr> </tbody> </table> diff --git a/data/corefork.telegram.org/method/channels.getGroupsForDiscussion b/data/corefork.telegram.org/method/channels.getGroupsForDiscussion new file mode 100644 index 0000000000..67d3a40964 --- /dev/null +++ b/data/corefork.telegram.org/method/channels.getGroupsForDiscussion @@ -0,0 +1,144 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>channels.getGroupsForDiscussion</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get all groups that can be used as discussion groups."> + <meta property="og:title" content="channels.getGroupsForDiscussion"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get all groups that can be used as discussion groups."> + <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?215" 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/channels.getGroupsForDiscussion" >channels.getGroupsForDiscussion</a></li></ul></div> + <h1 id="dev_page_title">channels.getGroupsForDiscussion</h1> + + <div id="dev_page_content"><p>Get all groups that can be used as <a href="/api/discussion">discussion groups</a>.</p> +<p>Returned <a href="/api/channel">legacy group chats</a> must be first upgraded to <a href="/api/channel">supergroups</a> before they can be set as a discussion group.<br> +To set a returned supergroup as a discussion group, access to its old messages must be enabled using <a href="/method/channels.togglePreHistoryHidden">channels.togglePreHistoryHidden</a>, first.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.chats" >messages.chats</a>#64ff9fd5 chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> = <a href="/type/messages.Chats" >messages.Chats</a>; +<a href="/constructor/messages.chatsSlice" >messages.chatsSlice</a>#9cd81144 count:<a href="/type/int" >int</a> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> = <a href="/type/messages.Chats" >messages.Chats</a>; +---functions--- +<a href="/method/channels.getGroupsForDiscussion" class="current_page_link" >channels.getGroupsForDiscussion</a>#f5dad378 = <a href="/type/messages.Chats" >messages.Chats</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/messages.Chats">messages.Chats</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="#discussion-groups" id="discussion-groups" name="discussion-groups"><i class="anchor-icon"></i></a><a href="/api/discussion">Discussion groups</a></h4> +<p><a href="/api/channel">Groups</a> can be associated to a <a href="/api/channel">channel</a> as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts.</p> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</p> +<h4><a class="anchor" href="#channelstoggleprehistoryhidden" id="channelstoggleprehistoryhidden" name="channelstoggleprehistoryhidden"><i class="anchor-icon"></i></a><a href="/method/channels.togglePreHistoryHidden">channels.togglePreHistoryHidden</a></h4> +<p>Hide/unhide message history for new channel/supergroup users</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/channels.getParticipants b/data/corefork.telegram.org/method/channels.getParticipants new file mode 100644 index 0000000000..fa2b18a0ba --- /dev/null +++ b/data/corefork.telegram.org/method/channels.getParticipants @@ -0,0 +1,203 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>channels.getParticipants</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get the participants of a supergroup/channel"> + <meta property="og:title" content="channels.getParticipants"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get the participants of a supergroup/channel"> + <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?215" 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/channels.getParticipants" >channels.getParticipants</a></li></ul></div> + <h1 id="dev_page_title">channels.getParticipants</h1> + + <div id="dev_page_content"><p>Get the participants of a <a href="/api/channel">supergroup/channel</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/channels.channelParticipants" >channels.channelParticipants</a>#9ab0feaf count:<a href="/type/int" >int</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/ChannelParticipant" >ChannelParticipant</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/channels.ChannelParticipants" >channels.ChannelParticipants</a>; +<a href="/constructor/channels.channelParticipantsNotModified" >channels.channelParticipantsNotModified</a>#f0173fe9 = <a href="/type/channels.ChannelParticipants" >channels.ChannelParticipants</a>; +---functions--- +<a href="/method/channels.getParticipants" class="current_page_link" >channels.getParticipants</a>#77ced9d0 channel:<a href="/type/InputChannel" >InputChannel</a> filter:<a href="/type/ChannelParticipantsFilter" >ChannelParticipantsFilter</a> offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/channels.ChannelParticipants" >channels.ChannelParticipants</a>;</code></pre></p> +<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>channel</strong></td> +<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> +<td>Channel</td> +</tr> +<tr> +<td><strong>filter</strong></td> +<td style="text-align: center;"><a href="/type/ChannelParticipantsFilter">ChannelParticipantsFilter</a></td> +<td>Which participant types to fetch</td> +</tr> +<tr> +<td><strong>offset</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/offsets">Offset</a></td> +</tr> +<tr> +<td><strong>limit</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/offsets">Limit</a></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</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/channels.ChannelParticipants">channels.ChannelParticipants</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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</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> +<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> +<h4><a class="anchor" href="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/channels.setDiscussionGroup b/data/corefork.telegram.org/method/channels.setDiscussionGroup new file mode 100644 index 0000000000..04d1c6ca7d --- /dev/null +++ b/data/corefork.telegram.org/method/channels.setDiscussionGroup @@ -0,0 +1,200 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>channels.setDiscussionGroup</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Associate a group to a channel as discussion group for that channel"> + <meta property="og:title" content="channels.setDiscussionGroup"> + <meta property="og:image" content=""> + <meta property="og:description" content="Associate a group to a channel as discussion group for that channel"> + <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?215" 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/channels.setDiscussionGroup" >channels.setDiscussionGroup</a></li></ul></div> + <h1 id="dev_page_title">channels.setDiscussionGroup</h1> + + <div id="dev_page_content"><p>Associate a group to a channel as <a href="/api/discussion">discussion group</a> for that channel</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/channels.setDiscussionGroup" class="current_page_link" >channels.setDiscussionGroup</a>#40582bb2 broadcast:<a href="/type/InputChannel" >InputChannel</a> group:<a href="/type/InputChannel" >InputChannel</a> = <a href="/type/Bool" >Bool</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>broadcast</strong></td> +<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> +<td>Channel</td> +</tr> +<tr> +<td><strong>group</strong></td> +<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> +<td><a href="/api/discussion">Discussion group</a> to associate to the channel</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/Bool">Bool</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>BROADCAST_ID_INVALID</td> +<td>Broadcast ID invalid.</td> +</tr> +<tr> +<td>400</td> +<td>CHANNEL_INVALID</td> +<td>The provided channel is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>LINK_NOT_MODIFIED</td> +<td>Discussion link not modified.</td> +</tr> +<tr> +<td>400</td> +<td>MEGAGROUP_ID_INVALID</td> +<td>Invalid supergroup ID.</td> +</tr> +<tr> +<td>400</td> +<td>MEGAGROUP_PREHISTORY_HIDDEN</td> +<td>Group with hidden history for new members can't be set as discussion groups.</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="#discussion-groups" id="discussion-groups" name="discussion-groups"><i class="anchor-icon"></i></a><a href="/api/discussion">Discussion groups</a></h4> +<p><a href="/api/channel">Groups</a> can be associated to a <a href="/api/channel">channel</a> as a <a href="https://telegram.org/blog/privacy-discussions-web-bots">discussion group</a>, to allow users to discuss about posts.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/channels.viewSponsoredMessage b/data/corefork.telegram.org/method/channels.viewSponsoredMessage deleted file mode 100644 index c50d57a092..0000000000 --- a/data/corefork.telegram.org/method/channels.viewSponsoredMessage +++ /dev/null @@ -1,177 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>channels.viewSponsoredMessage</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Mark a specific sponsored message as read"> - <meta property="og:title" content="channels.viewSponsoredMessage"> - <meta property="og:image" content=""> - <meta property="og:description" content="Mark a specific sponsored message 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?215" 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/channels.viewSponsoredMessage" >channels.viewSponsoredMessage</a></li></ul></div> - <h1 id="dev_page_title">channels.viewSponsoredMessage</h1> - - <div id="dev_page_content"><p>Mark a specific sponsored message 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; -<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ----functions--- -<a href="/method/channels.viewSponsoredMessage" class="current_page_link" >channels.viewSponsoredMessage</a>#beaedb94 channel:<a href="/type/InputChannel" >InputChannel</a> random_id:<a href="/type/bytes" >bytes</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p> -<h3><a class="anchor" name="parameters" href="#parameters"><i class="anchor-icon"></i></a>Parameters</h3> -<table class="table"> -<thead> -<tr> -<th>Name</th> -<th align="center">Type</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><strong>channel</strong></td> -<td align="center"><a href="/type/InputChannel">InputChannel</a></td> -<td>Peer</td> -</tr> -<tr> -<td><strong>random_id</strong></td> -<td align="center"><a href="/type/bytes">bytes</a></td> -<td>Message ID</td> -</tr> -</tbody> -</table> -<h3><a class="anchor" name="result" href="#result"><i class="anchor-icon"></i></a>Result</h3> -<p><a href="/type/Bool">Bool</a></p> -<h3><a class="anchor" name="possible-errors" href="#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>UNKNOWN_ERROR</td> -<td>Internal error.</td> -</tr> -</tbody> -</table> -<hr> -<h3><a class="anchor" name="related-pages" href="#related-pages"><i class="anchor-icon"></i></a>Related pages</h3> -<h4><a class="anchor" name="sponsored-messages" href="#sponsored-messages"><i class="anchor-icon"></i></a><a href="/api/sponsored-messages">Sponsored messages</a></h4> -<p>How to implement sponsored messages</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/method/phone.saveDefaultGroupCallJoinAs b/data/corefork.telegram.org/method/contacts.toggleTopPeers similarity index 86% rename from data/corefork.telegram.org/method/phone.saveDefaultGroupCallJoinAs rename to data/corefork.telegram.org/method/contacts.toggleTopPeers index 46a722be3f..ddc92a0947 100644 --- a/data/corefork.telegram.org/method/phone.saveDefaultGroupCallJoinAs +++ b/data/corefork.telegram.org/method/contacts.toggleTopPeers @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>phone.saveDefaultGroupCallJoinAs</title> + <title>contacts.toggleTopPeers</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Set the default peer that will be used to join a group call in a specific dialog."> - <meta property="og:title" content="phone.saveDefaultGroupCallJoinAs"> + <meta property="description" content="Enable/disable top peers"> + <meta property="og:title" content="contacts.toggleTopPeers"> <meta property="og:image" content=""> - <meta property="og:description" content="Set the default peer that will be used to join a group call in a specific dialog."> + <meta property="og:description" content="Enable/disable top peers"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/phone.saveDefaultGroupCallJoinAs" >phone.saveDefaultGroupCallJoinAs</a></li></ul></div> - <h1 id="dev_page_title">phone.saveDefaultGroupCallJoinAs</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/contacts.toggleTopPeers" >contacts.toggleTopPeers</a></li></ul></div> + <h1 id="dev_page_title">contacts.toggleTopPeers</h1> - <div id="dev_page_content"><p>Set the default peer that will be used to join a group call in a specific dialog.</p> + <div id="dev_page_content"><p>Enable/disable <a href="/api/top-rating">top peers</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -55,7 +55,7 @@ <pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; <a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/phone.saveDefaultGroupCallJoinAs" class="current_page_link" >phone.saveDefaultGroupCallJoinAs</a>#575e1f8c peer:<a href="/type/InputPeer" >InputPeer</a> join_as:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/contacts.toggleTopPeers" class="current_page_link" >contacts.toggleTopPeers</a>#8514bdda enabled:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</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> @@ -67,19 +67,17 @@ </thead> <tbody> <tr> -<td><strong>peer</strong></td> -<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td>The dialog</td> -</tr> -<tr> -<td><strong>join_as</strong></td> -<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td>The default peer that will be used to join group calls in this dialog, presenting yourself as a specific user/channel.</td> +<td><strong>enabled</strong></td> +<td style="text-align: center;"><a href="/type/Bool">Bool</a></td> +<td>Enable/disable</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/Bool">Bool</a></p></div> +<p><a href="/type/Bool">Bool</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="#top-peer-rating" id="top-peer-rating" name="top-peer-rating"><i class="anchor-icon"></i></a><a href="/api/top-rating">Top peer rating</a></h4> +<p>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).</p></div> </div> diff --git a/data/corefork.telegram.org/method/folders.deleteFolder b/data/corefork.telegram.org/method/folders.deleteFolder new file mode 100644 index 0000000000..d9e13c95b7 --- /dev/null +++ b/data/corefork.telegram.org/method/folders.deleteFolder @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>folders.deleteFolder</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Delete a peer folder"> + <meta property="og:title" content="folders.deleteFolder"> + <meta property="og:image" content=""> + <meta property="og:description" content="Delete a peer folder"> + <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?215" 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/folders.deleteFolder" >folders.deleteFolder</a></li></ul></div> + <h1 id="dev_page_title">folders.deleteFolder</h1> + + <div id="dev_page_content"><p>Delete a <a href="/api/folders#peer-folders">peer folder</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/folders.deleteFolder" class="current_page_link" >folders.deleteFolder</a>#1c295881 folder_id:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</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>folder_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/folders#peer-folders">Peer folder ID, 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/Updates">Updates</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>FOLDER_ID_EMPTY</td> +<td>An empty folder ID was specified.</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="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/folders.editPeerFolders b/data/corefork.telegram.org/method/folders.editPeerFolders new file mode 100644 index 0000000000..f5937fd1c0 --- /dev/null +++ b/data/corefork.telegram.org/method/folders.editPeerFolders @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>folders.editPeerFolders</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Edit peers in peer folder"> + <meta property="og:title" content="folders.editPeerFolders"> + <meta property="og:image" content=""> + <meta property="og:description" content="Edit peers in peer folder"> + <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?215" 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/folders.editPeerFolders" >folders.editPeerFolders</a></li></ul></div> + <h1 id="dev_page_title">folders.editPeerFolders</h1> + + <div id="dev_page_content"><p>Edit peers in <a href="/api/folders#peer-folders">peer folder</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/folders.editPeerFolders" class="current_page_link" >folders.editPeerFolders</a>#6847d0ab folder_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputFolderPeer" >InputFolderPeer</a>> = <a href="/type/Updates" >Updates</a>;</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>folder_peers</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/InputFolderPeer">InputFolderPeer</a>></td> +<td>New peer list</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/Updates">Updates</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>FOLDER_ID_INVALID</td> +<td>Invalid folder ID.</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="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.deleteRevokedExportedChatInvites b/data/corefork.telegram.org/method/help.acceptTermsOfService similarity index 88% rename from data/corefork.telegram.org/method/messages.deleteRevokedExportedChatInvites rename to data/corefork.telegram.org/method/help.acceptTermsOfService index 6691de4f30..9b0ab51586 100644 --- a/data/corefork.telegram.org/method/messages.deleteRevokedExportedChatInvites +++ b/data/corefork.telegram.org/method/help.acceptTermsOfService @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.deleteRevokedExportedChatInvites</title> + <title>help.acceptTermsOfService</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Delete all revoked chat invites"> - <meta property="og:title" content="messages.deleteRevokedExportedChatInvites"> + <meta property="description" content="Accept the new terms of service"> + <meta property="og:title" content="help.acceptTermsOfService"> <meta property="og:image" content=""> - <meta property="og:description" content="Delete all revoked chat invites"> + <meta property="og:description" content="Accept the new terms of service"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.deleteRevokedExportedChatInvites" >messages.deleteRevokedExportedChatInvites</a></li></ul></div> - <h1 id="dev_page_title">messages.deleteRevokedExportedChatInvites</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/help.acceptTermsOfService" >help.acceptTermsOfService</a></li></ul></div> + <h1 id="dev_page_title">help.acceptTermsOfService</h1> - <div id="dev_page_content"><p>Delete all revoked chat invites</p> + <div id="dev_page_content"><p>Accept the new terms of service</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -55,7 +55,7 @@ <pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; <a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/messages.deleteRevokedExportedChatInvites" class="current_page_link" >messages.deleteRevokedExportedChatInvites</a>#56987bd5 peer:<a href="/type/InputPeer" >InputPeer</a> admin_id:<a href="/type/InputUser" >InputUser</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/help.acceptTermsOfService" class="current_page_link" >help.acceptTermsOfService</a>#ee72f79a id:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Bool" >Bool</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> @@ -67,14 +67,9 @@ </thead> <tbody> <tr> -<td><strong>peer</strong></td> -<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td>Chat</td> -</tr> -<tr> -<td><strong>admin_id</strong></td> -<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> -<td>ID of the admin that originally generated the revoked chat invites</td> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/DataJSON">DataJSON</a></td> +<td>ID of terms of service</td> </tr> </tbody> </table> diff --git a/data/corefork.telegram.org/method/help.dismissSuggestion b/data/corefork.telegram.org/method/help.dismissSuggestion new file mode 100644 index 0000000000..c296e6b4df --- /dev/null +++ b/data/corefork.telegram.org/method/help.dismissSuggestion @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.dismissSuggestion</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Dismiss a suggestion, see here for more info »."> + <meta property="og:title" content="help.dismissSuggestion"> + <meta property="og:image" content=""> + <meta property="og:description" content="Dismiss a suggestion, see 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?215" 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/help.dismissSuggestion" >help.dismissSuggestion</a></li></ul></div> + <h1 id="dev_page_title">help.dismissSuggestion</h1> + + <div id="dev_page_content"><p>Dismiss a <a href="/api/config#suggestions">suggestion, see 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/help.dismissSuggestion" class="current_page_link" >help.dismissSuggestion</a>#f50dbaa1 peer:<a href="/type/InputPeer" >InputPeer</a> suggestion:<a href="/type/string" >string</a> = <a href="/type/Bool" >Bool</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>In the case of pending suggestions in <a href="/constructor/channelFull">channels</a>, the channel ID.</td> +</tr> +<tr> +<td><strong>suggestion</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td><a href="/api/config#suggestions">Suggestion, see here for more info »</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/Bool">Bool</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="#channelfull" id="channelfull" name="channelfull"><i class="anchor-icon"></i></a><a href="/constructor/channelFull">channelFull</a></h4> +<p>Full info about a <a href="/api/channel">channel/supergroup</a></p> +<h4><a class="anchor" href="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/help.getAppChangelog b/data/corefork.telegram.org/method/help.getAppChangelog new file mode 100644 index 0000000000..9cd2a3167e --- /dev/null +++ b/data/corefork.telegram.org/method/help.getAppChangelog @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getAppChangelog</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get changelog of current app. Typically, an updates constructor will be returned, containing one or more updateServiceNotification updates with app-specific changelogs."> + <meta property="og:title" content="help.getAppChangelog"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get changelog of current app. Typically, an updates constructor will be returned, containing one or more updateServiceNotification updates with app-specific changelogs."> + <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?215" 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/help.getAppChangelog" >help.getAppChangelog</a></li></ul></div> + <h1 id="dev_page_title">help.getAppChangelog</h1> + + <div id="dev_page_content"><p>Get changelog of current app.<br> +Typically, an <a href="/constructor/updates">updates</a> constructor will be returned, containing one or more <a href="/constructor/updateServiceNotification">updateServiceNotification</a> updates with app-specific changelogs.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/help.getAppChangelog" class="current_page_link" >help.getAppChangelog</a>#9010ef6f prev_app_version:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>;</code></pre></p> +<h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th style="text-align: center;">Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>prev_app_version</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Previous app 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/Updates">Updates</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="#updates" id="updates" name="updates"><i class="anchor-icon"></i></a><a href="/constructor/updates">Updates</a></h4> +<p>Full constructor of updates</p> +<h4><a class="anchor" href="#updateservicenotification" id="updateservicenotification" name="updateservicenotification"><i class="anchor-icon"></i></a><a href="/constructor/updateServiceNotification">updateServiceNotification</a></h4> +<p>A service message for the user.</p> +<p>The app must show the message to the user upon receiving this update. In case the <strong>popup</strong> parameter was passed, the text message must be displayed in a popup alert immediately upon receipt. It is recommended to handle the text as you would an ordinary message in terms of highlighting links, etc. The message must also be stored locally as part of the message history with the user id <code>777000</code> (Telegram Notifications).</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/help.getAppConfig b/data/corefork.telegram.org/method/help.getAppConfig new file mode 100644 index 0000000000..46b7268f49 --- /dev/null +++ b/data/corefork.telegram.org/method/help.getAppConfig @@ -0,0 +1,142 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getAppConfig</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get app-specific configuration, see client configuration for more info on the result."> + <meta property="og:title" content="help.getAppConfig"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get app-specific configuration, see client configuration for more info on the result."> + <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?215" 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/help.getAppConfig" >help.getAppConfig</a></li></ul></div> + <h1 id="dev_page_title">help.getAppConfig</h1> + + <div id="dev_page_content"><p>Get app-specific configuration, see <a href="/api/config#client-configuration">client configuration</a> for more info on the result.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/jsonNull" >jsonNull</a>#3f6d7b68 = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonBool" >jsonBool</a>#c7345e6a value:<a href="/type/Bool" >Bool</a> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonNumber" >jsonNumber</a>#2be0dfa4 value:<a href="/type/double" >double</a> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonString" >jsonString</a>#b71e767a value:<a href="/type/string" >string</a> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonArray" >jsonArray</a>#f7444763 value:<a href="/type/Vector%20t" >Vector</a><<a href="/type/JSONValue" >JSONValue</a>> = <a href="/type/JSONValue" >JSONValue</a>; +<a href="/constructor/jsonObject" >jsonObject</a>#99c1d49d value:<a href="/type/Vector%20t" >Vector</a><<a href="/type/JSONObjectValue" >JSONObjectValue</a>> = <a href="/type/JSONValue" >JSONValue</a>; +---functions--- +<a href="/method/help.getAppConfig" class="current_page_link" >help.getAppConfig</a>#98914110 = <a href="/type/JSONValue" >JSONValue</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/JSONValue">JSONValue</a>, see <a href="/api/config#client-configuration">client configuration</a> for more info on the result</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="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/help.getAppUpdate b/data/corefork.telegram.org/method/help.getAppUpdate new file mode 100644 index 0000000000..bc6bab8e7a --- /dev/null +++ b/data/corefork.telegram.org/method/help.getAppUpdate @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getAppUpdate</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Returns information on update availability for the current application."> + <meta property="og:title" content="help.getAppUpdate"> + <meta property="og:image" content=""> + <meta property="og:description" content="Returns information on update availability for the current application."> + <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?215" 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/help.getAppUpdate" >help.getAppUpdate</a></li></ul></div> + <h1 id="dev_page_title">help.getAppUpdate</h1> + + <div id="dev_page_content"><p>Returns information on update availability for the current application.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.appUpdate" >help.appUpdate</a>#ccbbce30 flags:<a href="/type/%23" >#</a> can_not_skip:flags.0?true id:<a href="/type/int" >int</a> version:<a href="/type/string" >string</a> text:<a href="/type/string" >string</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> document:flags.1?<a href="/type/Document" >Document</a> url:flags.2?<a href="/type/string" >string</a> sticker:flags.3?<a href="/type/Document" >Document</a> = <a href="/type/help.AppUpdate" >help.AppUpdate</a>; +<a href="/constructor/help.noAppUpdate" >help.noAppUpdate</a>#c45a6536 = <a href="/type/help.AppUpdate" >help.AppUpdate</a>; +---functions--- +<a href="/method/help.getAppUpdate" class="current_page_link" >help.getAppUpdate</a>#522d5a7d source:<a href="/type/string" >string</a> = <a href="/type/help.AppUpdate" >help.AppUpdate</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>source</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Source</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/help.AppUpdate">help.AppUpdate</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/help.getConfig b/data/corefork.telegram.org/method/help.getConfig new file mode 100644 index 0000000000..7c87b42057 --- /dev/null +++ b/data/corefork.telegram.org/method/help.getConfig @@ -0,0 +1,192 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getConfig</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Returns current configuration, including data center configuration."> + <meta property="og:title" content="help.getConfig"> + <meta property="og:image" content=""> + <meta property="og:description" content="Returns current configuration, including data center configuration."> + <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?215" 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/help.getConfig" >help.getConfig</a></li></ul></div> + <h1 id="dev_page_title">help.getConfig</h1> + + <div id="dev_page_content"><p>Returns current configuration, including data center configuration.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/config" >config</a>#330b4067 flags:<a href="/type/%23" >#</a> phonecalls_enabled:flags.1?true default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true ignore_phone_entities:flags.5?true revoke_pm_inbox:flags.6?true blocked_mode:flags.8?true pfs_enabled:flags.13?true date:<a href="/type/int" >int</a> expires:<a href="/type/int" >int</a> test_mode:<a href="/type/Bool" >Bool</a> this_dc:<a href="/type/int" >int</a> dc_options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DcOption" >DcOption</a>> dc_txt_domain_name:<a href="/type/string" >string</a> chat_size_max:<a href="/type/int" >int</a> megagroup_size_max:<a href="/type/int" >int</a> forwarded_count_max:<a href="/type/int" >int</a> online_update_period_ms:<a href="/type/int" >int</a> offline_blur_timeout_ms:<a href="/type/int" >int</a> offline_idle_timeout_ms:<a href="/type/int" >int</a> online_cloud_timeout_ms:<a href="/type/int" >int</a> notify_cloud_delay_ms:<a href="/type/int" >int</a> notify_default_delay_ms:<a href="/type/int" >int</a> push_chat_period_ms:<a href="/type/int" >int</a> push_chat_limit:<a href="/type/int" >int</a> saved_gifs_limit:<a href="/type/int" >int</a> edit_time_limit:<a href="/type/int" >int</a> revoke_time_limit:<a href="/type/int" >int</a> revoke_pm_time_limit:<a href="/type/int" >int</a> rating_e_decay:<a href="/type/int" >int</a> stickers_recent_limit:<a href="/type/int" >int</a> stickers_faved_limit:<a href="/type/int" >int</a> channels_read_media_period:<a href="/type/int" >int</a> tmp_sessions:flags.0?<a href="/type/int" >int</a> pinned_dialogs_count_max:<a href="/type/int" >int</a> pinned_infolder_count_max:<a href="/type/int" >int</a> call_receive_timeout_ms:<a href="/type/int" >int</a> call_ring_timeout_ms:<a href="/type/int" >int</a> call_connect_timeout_ms:<a href="/type/int" >int</a> call_packet_timeout_ms:<a href="/type/int" >int</a> me_url_prefix:<a href="/type/string" >string</a> autoupdate_url_prefix:flags.7?<a href="/type/string" >string</a> gif_search_username:flags.9?<a href="/type/string" >string</a> venue_search_username:flags.10?<a href="/type/string" >string</a> img_search_username:flags.11?<a href="/type/string" >string</a> static_maps_provider:flags.12?<a href="/type/string" >string</a> caption_length_max:<a href="/type/int" >int</a> message_length_max:<a href="/type/int" >int</a> webfile_dc_id:<a href="/type/int" >int</a> suggested_lang_code:flags.2?<a href="/type/string" >string</a> lang_pack_version:flags.2?<a href="/type/int" >int</a> base_lang_pack_version:flags.2?<a href="/type/int" >int</a> = <a href="/type/Config" >Config</a>; +---functions--- +<a href="/method/help.getConfig" class="current_page_link" >help.getConfig</a>#c4f9186b = <a href="/type/Config" >Config</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/Config">Config</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>CONNECTION_API_ID_INVALID</td> +<td>The provided API id is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>CONNECTION_APP_VERSION_EMPTY</td> +<td>App version is empty.</td> +</tr> +<tr> +<td>400</td> +<td>CONNECTION_LAYER_INVALID</td> +<td>Layer invalid.</td> +</tr> +<tr> +<td>400</td> +<td>CONNECTION_NOT_INITED</td> +<td>Connection not initialized.</td> +</tr> +<tr> +<td>400</td> +<td>DATA_INVALID</td> +<td>Encrypted data invalid.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_LAYER_INVALID</td> +<td>The provided layer is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>MSG_ID_INVALID</td> +<td>Invalid message ID provided.</td> +</tr> +<tr> +<td>400</td> +<td>USERNAME_INVALID</td> +<td>The provided username is not valid.</td> +</tr> +<tr> +<td>403</td> +<td>USER_PRIVACY_RESTRICTED</td> +<td>The user's privacy settings do not allow you to do this.</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/help.getCountriesList b/data/corefork.telegram.org/method/help.getCountriesList new file mode 100644 index 0000000000..ec87ab6a22 --- /dev/null +++ b/data/corefork.telegram.org/method/help.getCountriesList @@ -0,0 +1,158 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getCountriesList</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get name, ISO code, localized name and phone codes/patterns of all available countries"> + <meta property="og:title" content="help.getCountriesList"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get name, ISO code, localized name and phone codes/patterns of all available countries"> + <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?215" 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/help.getCountriesList" >help.getCountriesList</a></li></ul></div> + <h1 id="dev_page_title">help.getCountriesList</h1> + + <div id="dev_page_content"><p>Get name, ISO code, localized name and phone codes/patterns of all available countries</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.countriesListNotModified" >help.countriesListNotModified</a>#93cc1f32 = <a href="/type/help.CountriesList" >help.CountriesList</a>; +<a href="/constructor/help.countriesList" >help.countriesList</a>#87d0759e countries:<a href="/type/Vector%20t" >Vector</a><<a href="/type/help.Country" >help.Country</a>> hash:<a href="/type/int" >int</a> = <a href="/type/help.CountriesList" >help.CountriesList</a>; +---functions--- +<a href="/method/help.getCountriesList" class="current_page_link" >help.getCountriesList</a>#735787a8 lang_code:<a href="/type/string" >string</a> hash:<a href="/type/int" >int</a> = <a href="/type/help.CountriesList" >help.CountriesList</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_code</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Language code of the current user</td> +</tr> +<tr> +<td><strong>hash</strong></td> +<td style="text-align: center;"><a href="/type/int">int</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/help.CountriesList">help.CountriesList</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="#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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/account.getContentSettings b/data/corefork.telegram.org/method/help.getInviteText similarity index 88% rename from data/corefork.telegram.org/method/account.getContentSettings rename to data/corefork.telegram.org/method/help.getInviteText index 0c2fc7a4f3..9ecd60da01 100644 --- a/data/corefork.telegram.org/method/account.getContentSettings +++ b/data/corefork.telegram.org/method/help.getInviteText @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>account.getContentSettings</title> + <title>help.getInviteText</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Get sensitive content settings"> - <meta property="og:title" content="account.getContentSettings"> + <meta property="description" content="Returns localized text of a text message with an invitation."> + <meta property="og:title" content="help.getInviteText"> <meta property="og:image" content=""> - <meta property="og:description" content="Get sensitive content settings"> + <meta property="og:description" content="Returns localized text of a text message with an invitation."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/account.getContentSettings" >account.getContentSettings</a></li></ul></div> - <h1 id="dev_page_title">account.getContentSettings</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/help.getInviteText" >help.getInviteText</a></li></ul></div> + <h1 id="dev_page_title">help.getInviteText</h1> - <div id="dev_page_content"><p>Get sensitive content settings</p> + <div id="dev_page_content"><p>Returns localized text of a text message with an invitation.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,13 +52,13 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/account.contentSettings" >account.contentSettings</a>#57e28221 flags:<a href="/type/%23" >#</a> sensitive_enabled:flags.0?true sensitive_can_change:flags.1?true = <a href="/type/account.ContentSettings" >account.ContentSettings</a>; +<pre class="page_scheme"><code><a href="/constructor/help.inviteText" >help.inviteText</a>#18cb9f78 message:<a href="/type/string" >string</a> = <a href="/type/help.InviteText" >help.InviteText</a>; ---functions--- -<a href="/method/account.getContentSettings" class="current_page_link" >account.getContentSettings</a>#8b9b4dae = <a href="/type/account.ContentSettings" >account.ContentSettings</a>;</code></pre></p> +<a href="/method/help.getInviteText" class="current_page_link" >help.getInviteText</a>#4d392343 = <a href="/type/help.InviteText" >help.InviteText</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> -<p><a href="/type/account.ContentSettings">account.ContentSettings</a></p></div> +<p><a href="/type/help.InviteText">help.InviteText</a></p></div> </div> diff --git a/data/corefork.telegram.org/method/help.getSupport b/data/corefork.telegram.org/method/help.getSupport new file mode 100644 index 0000000000..2ac1c12f5f --- /dev/null +++ b/data/corefork.telegram.org/method/help.getSupport @@ -0,0 +1,134 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getSupport</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Returns the support user for the 'ask a question' feature."> + <meta property="og:title" content="help.getSupport"> + <meta property="og:image" content=""> + <meta property="og:description" content="Returns the support user for the 'ask a question' feature."> + <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?215" 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/help.getSupport" >help.getSupport</a></li></ul></div> + <h1 id="dev_page_title">help.getSupport</h1> + + <div id="dev_page_content"><p>Returns the support user for the 'ask a question' feature.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.support" >help.support</a>#17c6b5f6 phone_number:<a href="/type/string" >string</a> user:<a href="/type/User" >User</a> = <a href="/type/help.Support" >help.Support</a>; +---functions--- +<a href="/method/help.getSupport" class="current_page_link" >help.getSupport</a>#9cdf08cd = <a href="/type/help.Support" >help.Support</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/help.Support">help.Support</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/help.getSupportName b/data/corefork.telegram.org/method/help.getSupportName new file mode 100644 index 0000000000..d7140fa7a1 --- /dev/null +++ b/data/corefork.telegram.org/method/help.getSupportName @@ -0,0 +1,151 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getSupportName</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get localized name of the telegram support user"> + <meta property="og:title" content="help.getSupportName"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get localized name of the telegram support user"> + <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?215" 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/help.getSupportName" >help.getSupportName</a></li></ul></div> + <h1 id="dev_page_title">help.getSupportName</h1> + + <div id="dev_page_content"><p>Get localized name of the telegram support user</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.supportName" >help.supportName</a>#8c05f1c9 name:<a href="/type/string" >string</a> = <a href="/type/help.SupportName" >help.SupportName</a>; +---functions--- +<a href="/method/help.getSupportName" class="current_page_link" >help.getSupportName</a>#d360e72c = <a href="/type/help.SupportName" >help.SupportName</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/help.SupportName">help.SupportName</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>403</td> +<td>USER_INVALID</td> +<td>Invalid user provided.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/help.getTermsOfServiceUpdate b/data/corefork.telegram.org/method/help.getTermsOfServiceUpdate new file mode 100644 index 0000000000..cac127278c --- /dev/null +++ b/data/corefork.telegram.org/method/help.getTermsOfServiceUpdate @@ -0,0 +1,135 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>help.getTermsOfServiceUpdate</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Look for updates of telegram's terms of service"> + <meta property="og:title" content="help.getTermsOfServiceUpdate"> + <meta property="og:image" content=""> + <meta property="og:description" content="Look for updates of telegram's terms of service"> + <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?215" 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/help.getTermsOfServiceUpdate" >help.getTermsOfServiceUpdate</a></li></ul></div> + <h1 id="dev_page_title">help.getTermsOfServiceUpdate</h1> + + <div id="dev_page_content"><p>Look for updates of telegram's terms of service</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/help.termsOfServiceUpdateEmpty" >help.termsOfServiceUpdateEmpty</a>#e3309f7f expires:<a href="/type/int" >int</a> = <a href="/type/help.TermsOfServiceUpdate" >help.TermsOfServiceUpdate</a>; +<a href="/constructor/help.termsOfServiceUpdate" >help.termsOfServiceUpdate</a>#28ecf961 expires:<a href="/type/int" >int</a> terms_of_service:<a href="/type/help.TermsOfService" >help.TermsOfService</a> = <a href="/type/help.TermsOfServiceUpdate" >help.TermsOfServiceUpdate</a>; +---functions--- +<a href="/method/help.getTermsOfServiceUpdate" class="current_page_link" >help.getTermsOfServiceUpdate</a>#2ca51fd1 = <a href="/type/help.TermsOfServiceUpdate" >help.TermsOfServiceUpdate</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/help.TermsOfServiceUpdate">help.TermsOfServiceUpdate</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.getAttachedStickers b/data/corefork.telegram.org/method/invokeAfterMsgs.html similarity index 87% rename from data/corefork.telegram.org/method/messages.getAttachedStickers rename to data/corefork.telegram.org/method/invokeAfterMsgs.html index 548b076d12..ebf51352b2 100644 --- a/data/corefork.telegram.org/method/messages.getAttachedStickers +++ b/data/corefork.telegram.org/method/invokeAfterMsgs.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.getAttachedStickers</title> + <title>invokeAfterMsgs</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Get stickers attached to a photo or video"> - <meta property="og:title" content="messages.getAttachedStickers"> + <meta property="description" content="Invokes a query after a successfull completion of previous queries"> + <meta property="og:title" content="invokeAfterMsgs"> <meta property="og:image" content=""> - <meta property="og:description" content="Get stickers attached to a photo or video"> + <meta property="og:description" content="Invokes a query after a successfull completion of previous queries"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.getAttachedStickers" >messages.getAttachedStickers</a></li></ul></div> - <h1 id="dev_page_title">messages.getAttachedStickers</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/invokeAfterMsgs" >invokeAfterMsgs</a></li></ul></div> + <h1 id="dev_page_title">invokeAfterMsgs</h1> - <div id="dev_page_content"><p>Get stickers attached to a photo or video</p> + <div id="dev_page_content"><p>Invokes a query after a successfull completion of previous queries</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -53,7 +53,7 @@ </ul> </div> <pre class="page_scheme"><code>---functions--- -<a href="/method/messages.getAttachedStickers" class="current_page_link" >messages.getAttachedStickers</a>#cc5b67cc media:<a href="/type/InputStickeredMedia" >InputStickeredMedia</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerSetCovered" >StickerSetCovered</a>>;</code></pre></p> +<a href="/method/invokeAfterMsgs" class="current_page_link" >invokeAfterMsgs</a>#3dc4b4f0 {X:Type} msg_ids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> query:!X = X;</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> @@ -65,14 +65,20 @@ </thead> <tbody> <tr> -<td><strong>media</strong></td> -<td style="text-align: center;"><a href="/type/InputStickeredMedia">InputStickeredMedia</a></td> -<td>Stickered media</td> +<td><strong>msg_ids</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</a>></td> +<td>List of messages on which a current query depends</td> +</tr> +<tr> +<td><strong>query</strong></td> +<td style="text-align: center;">!X</td> +<td>The query itself</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/Vector%20t">Vector</a><<a href="/type/StickerSetCovered">StickerSetCovered</a>></p></div> +<p>X</p> +<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> diff --git a/data/corefork.telegram.org/method/stickers.addStickerToSet b/data/corefork.telegram.org/method/invokeWithLayer.html similarity index 80% rename from data/corefork.telegram.org/method/stickers.addStickerToSet rename to data/corefork.telegram.org/method/invokeWithLayer.html index 2d89fe942d..77ccb817e0 100644 --- a/data/corefork.telegram.org/method/stickers.addStickerToSet +++ b/data/corefork.telegram.org/method/invokeWithLayer.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>stickers.addStickerToSet</title> + <title>invokeWithLayer</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Add a sticker to a stickerset, bots only. The sticker set must have been created by the bot."> - <meta property="og:title" content="stickers.addStickerToSet"> + <meta property="description" content="Invoke the specified query using the specified API layer"> + <meta property="og:title" content="invokeWithLayer"> <meta property="og:image" content=""> - <meta property="og:description" content="Add a sticker to a stickerset, bots only. The sticker set must have been created by the bot."> + <meta property="og:description" content="Invoke the specified query using the specified API layer"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/stickers.addStickerToSet" >stickers.addStickerToSet</a></li></ul></div> - <h1 id="dev_page_title">stickers.addStickerToSet</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/invokeWithLayer" >invokeWithLayer</a></li></ul></div> + <h1 id="dev_page_title">invokeWithLayer</h1> - <div id="dev_page_content"><p>Add a sticker to a stickerset, bots only. The sticker set must have been created by the bot.</p> + <div id="dev_page_content"><p>Invoke the specified query using the specified API <a href="/api/invoking#layers">layer</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,8 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.stickerSet" >messages.stickerSet</a>#b60a24a6 set:<a href="/type/StickerSet" >StickerSet</a> packs:<a href="/type/Vector%20t" >Vector</a><<a href="/type/StickerPack" >StickerPack</a>> documents:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>; ----functions--- -<a href="/method/stickers.addStickerToSet" class="current_page_link" >stickers.addStickerToSet</a>#8653febe stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> sticker:<a href="/type/InputStickerSetItem" >InputStickerSetItem</a> = <a href="/type/messages.StickerSet" >messages.StickerSet</a>;</code></pre></p> +<pre class="page_scheme"><code>---functions--- +<a href="/method/invokeWithLayer" class="current_page_link" >invokeWithLayer</a>#da9b0d0d {X:Type} layer:<a href="/type/int" >int</a> query:!X = X;</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> @@ -66,19 +65,19 @@ </thead> <tbody> <tr> -<td><strong>stickerset</strong></td> -<td style="text-align: center;"><a href="/type/InputStickerSet">InputStickerSet</a></td> -<td>The stickerset</td> +<td><strong>layer</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The layer to use</td> </tr> <tr> -<td><strong>sticker</strong></td> -<td style="text-align: center;"><a href="/type/InputStickerSetItem">InputStickerSetItem</a></td> -<td>The sticker</td> +<td><strong>query</strong></td> +<td style="text-align: center;">!X</td> +<td>The query</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.StickerSet">messages.StickerSet</a></p> +<p>X</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> @@ -91,27 +90,45 @@ <tbody> <tr> <td>400</td> -<td>BOT_MISSING</td> -<td>This method can only be run by a bot.</td> +<td>AUTH_BYTES_INVALID</td> +<td>The provided authorization is invalid.</td> </tr> <tr> <td>400</td> -<td>STICKERSET_INVALID</td> -<td>The provided sticker set is invalid.</td> +<td>CDN_METHOD_INVALID</td> +<td>You can't call this method in a CDN DC.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> </tr> <tr> <td>400</td> -<td>STICKER_PNG_NOPNG</td> -<td>One of the specified stickers is not a valid PNG file.</td> +<td>CONNECTION_API_ID_INVALID</td> +<td>The provided API id is invalid.</td> </tr> <tr> <td>400</td> -<td>STICKER_TGS_NOTGS</td> -<td>Invalid TGS sticker provided.</td> +<td>CONNECTION_NOT_INITED</td> +<td>Connection not initialized.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_LAYER_INVALID</td> +<td>The provided layer is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>INVITE_HASH_EXPIRED</td> +<td>The invite link has expired.</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> +<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> +<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="#calling-api-methods" id="calling-api-methods" name="calling-api-methods"><i class="anchor-icon"></i></a><a href="/api/invoking">Calling API Methods</a></h4> +<p>Additional options for calling methods.</p></div> </div> diff --git a/data/corefork.telegram.org/method/messages.acceptEncryption b/data/corefork.telegram.org/method/messages.acceptEncryption new file mode 100644 index 0000000000..70b1fcda96 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.acceptEncryption @@ -0,0 +1,190 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.acceptEncryption</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Confirms creation of a secret chat"> + <meta property="og:title" content="messages.acceptEncryption"> + <meta property="og:image" content=""> + <meta property="og:description" content="Confirms creation of a secret chat"> + <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?215" 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.acceptEncryption" >messages.acceptEncryption</a></li></ul></div> + <h1 id="dev_page_title">messages.acceptEncryption</h1> + + <div id="dev_page_content"><p>Confirms creation of a secret chat</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/encryptedChatEmpty" >encryptedChatEmpty</a>#ab7ec0a0 id:<a href="/type/int" >int</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/constructor/encryptedChatWaiting" >encryptedChatWaiting</a>#66b25953 id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/constructor/encryptedChatRequested" >encryptedChatRequested</a>#48f1d94c flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_a:<a href="/type/bytes" >bytes</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/constructor/encryptedChat" >encryptedChat</a>#61f0d4c7 id:<a href="/type/int" >int</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> admin_id:<a href="/type/long" >long</a> participant_id:<a href="/type/long" >long</a> g_a_or_b:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +<a href="/constructor/encryptedChatDiscarded" >encryptedChatDiscarded</a>#1e1c7c45 flags:<a href="/type/%23" >#</a> history_deleted:flags.0?true id:<a href="/type/int" >int</a> = <a href="/type/EncryptedChat" >EncryptedChat</a>; +---functions--- +<a href="/method/messages.acceptEncryption" class="current_page_link" >messages.acceptEncryption</a>#3dbc0415 peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> g_b:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> = <a href="/type/EncryptedChat" >EncryptedChat</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/InputEncryptedChat">InputEncryptedChat</a></td> +<td>Secret chat ID</td> +</tr> +<tr> +<td><strong>g_b</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td><code>B = g ^ b mod p</code>, see <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">Wikipedia</a></td> +</tr> +<tr> +<td><strong>key_fingerprint</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>64-bit fingerprint of the received key</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/EncryptedChat">EncryptedChat</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>CHAT_ID_INVALID</td> +<td>The provided chat id is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>ENCRYPTION_ALREADY_ACCEPTED</td> +<td>Secret chat already accepted.</td> +</tr> +<tr> +<td>400</td> +<td>ENCRYPTION_ALREADY_DECLINED</td> +<td>The secret chat was already declined.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.checkHistoryImportPeer b/data/corefork.telegram.org/method/messages.checkHistoryImportPeer new file mode 100644 index 0000000000..8b850af35c --- /dev/null +++ b/data/corefork.telegram.org/method/messages.checkHistoryImportPeer @@ -0,0 +1,172 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.checkHistoryImportPeer</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Check whether chat history exported from another chat app can be imported into a specific Telegram chat, click here for more info »."> + <meta property="og:title" content="messages.checkHistoryImportPeer"> + <meta property="og:image" content=""> + <meta property="og:description" content="Check whether chat history exported from another chat app can be imported into a specific Telegram chat, 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?215" 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.checkHistoryImportPeer" >messages.checkHistoryImportPeer</a></li></ul></div> + <h1 id="dev_page_title">messages.checkHistoryImportPeer</h1> + + <div id="dev_page_content"><p>Check whether chat history exported from another chat app can be <a href="/api/import">imported into a specific Telegram chat, click here for more info »</a>.</p> +<p>If the check succeeds, and no RPC errors are returned, a <a href="/type/messages.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</a> constructor will be returned, with a confirmation text to be shown to the user, before actually initializing the import.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.checkedHistoryImportPeer" >messages.checkedHistoryImportPeer</a>#a24de717 confirm_text:<a href="/type/string" >string</a> = <a href="/type/messages.CheckedHistoryImportPeer" >messages.CheckedHistoryImportPeer</a>; +---functions--- +<a href="/method/messages.checkHistoryImportPeer" class="current_page_link" >messages.checkHistoryImportPeer</a>#5dc60f03 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/messages.CheckedHistoryImportPeer" >messages.CheckedHistoryImportPeer</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>The chat where we want to <a href="/api/import">import history »</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.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</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>USER_NOT_MUTUAL_CONTACT</td> +<td>The provided user is not a mutual contact.</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="#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> +<h4><a class="anchor" href="#messagescheckedhistoryimportpeer" id="messagescheckedhistoryimportpeer" name="messagescheckedhistoryimportpeer"><i class="anchor-icon"></i></a><a href="/type/messages.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</a></h4> +<p>Contains a confirmation text to be shown to the user, upon <a href="/api/import">importing chat history, click here for more info »</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.createChat b/data/corefork.telegram.org/method/messages.createChat new file mode 100644 index 0000000000..0831942e44 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.createChat @@ -0,0 +1,197 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.createChat</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Creates a new chat."> + <meta property="og:title" content="messages.createChat"> + <meta property="og:image" content=""> + <meta property="og:description" content="Creates a new chat."> + <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?215" 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.createChat" >messages.createChat</a></li></ul></div> + <h1 id="dev_page_title">messages.createChat</h1> + + <div id="dev_page_content"><p>Creates a new chat.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.createChat" class="current_page_link" >messages.createChat</a>#9cb126e users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/InputUser" >InputUser</a>> title:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</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>users</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/InputUser">InputUser</a>></td> +<td>List of user IDs to be invited</td> +</tr> +<tr> +<td><strong>title</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Chat name</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/Updates">Updates</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>CHAT_INVALID</td> +<td>Invalid chat.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_TITLE_EMPTY</td> +<td>No chat title provided.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</td> +</tr> +<tr> +<td>400</td> +<td>USERS_TOO_FEW</td> +<td>Not enough users (to create a chat, for example).</td> +</tr> +<tr> +<td>403</td> +<td>USER_RESTRICTED</td> +<td>You're spamreported, you can't create channels or chats.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.discardEncryption b/data/corefork.telegram.org/method/messages.discardEncryption new file mode 100644 index 0000000000..4d75229eca --- /dev/null +++ b/data/corefork.telegram.org/method/messages.discardEncryption @@ -0,0 +1,187 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.discardEncryption</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Cancels a request for creation and/or delete info on secret chat."> + <meta property="og:title" content="messages.discardEncryption"> + <meta property="og:image" content=""> + <meta property="og:description" content="Cancels a request for creation and/or delete info on secret chat."> + <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?215" 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.discardEncryption" >messages.discardEncryption</a></li></ul></div> + <h1 id="dev_page_title">messages.discardEncryption</h1> + + <div id="dev_page_content"><p>Cancels a request for creation and/or delete info on secret chat.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/messages.discardEncryption" class="current_page_link" >messages.discardEncryption</a>#f393aea0 flags:<a href="/type/%23" >#</a> delete_history:flags.0?true chat_id:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</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>delete_history</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 to delete the entire chat history for the other user as well</td> +</tr> +<tr> +<td><strong>chat_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Secret chat ID</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/Bool">Bool</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>CHAT_ID_EMPTY</td> +<td>The provided chat ID is empty.</td> +</tr> +<tr> +<td>400</td> +<td>ENCRYPTION_ALREADY_DECLINED</td> +<td>The secret chat was already declined.</td> +</tr> +<tr> +<td>400</td> +<td>ENCRYPTION_ID_INVALID</td> +<td>The provided secret chat 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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.editChatAdmin b/data/corefork.telegram.org/method/messages.editChatAdmin new file mode 100644 index 0000000000..b29e0f56e5 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.editChatAdmin @@ -0,0 +1,195 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.editChatAdmin</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Make a user admin in a legacy group."> + <meta property="og:title" content="messages.editChatAdmin"> + <meta property="og:image" content=""> + <meta property="og:description" content="Make a user admin in a legacy group."> + <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?215" 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.editChatAdmin" >messages.editChatAdmin</a></li></ul></div> + <h1 id="dev_page_title">messages.editChatAdmin</h1> + + <div id="dev_page_content"><p>Make a user admin in a <a href="/api/channel">legacy group</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/messages.editChatAdmin" class="current_page_link" >messages.editChatAdmin</a>#a85bd1c2 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/InputUser" >InputUser</a> is_admin:<a href="/type/Bool" >Bool</a> = <a href="/type/Bool" >Bool</a>;</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>chat_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>The ID of the group</td> +</tr> +<tr> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> +<td>The user to make admin</td> +</tr> +<tr> +<td><strong>is_admin</strong></td> +<td style="text-align: center;"><a href="/type/Bool">Bool</a></td> +<td>Whether to make him admin</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/Bool">Bool</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>CHAT_ID_INVALID</td> +<td>The provided chat 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_ID_INVALID</td> +<td>The provided user ID is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>USER_NOT_PARTICIPANT</td> +<td>You're not a member of this supergroup/channel.</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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.editChatDefaultBannedRights b/data/corefork.telegram.org/method/messages.editChatDefaultBannedRights new file mode 100644 index 0000000000..2a489559d3 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.editChatDefaultBannedRights @@ -0,0 +1,206 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.editChatDefaultBannedRights</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Edit the default banned rights of a channel/supergroup/group."> + <meta property="og:title" content="messages.editChatDefaultBannedRights"> + <meta property="og:image" content=""> + <meta property="og:description" content="Edit the default banned rights of a channel/supergroup/group."> + <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?215" 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.editChatDefaultBannedRights" >messages.editChatDefaultBannedRights</a></li></ul></div> + <h1 id="dev_page_title">messages.editChatDefaultBannedRights</h1> + + <div id="dev_page_content"><p>Edit the default banned rights of a <a href="/api/channel">channel/supergroup/group</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.editChatDefaultBannedRights" class="current_page_link" >messages.editChatDefaultBannedRights</a>#a5866b41 peer:<a href="/type/InputPeer" >InputPeer</a> banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> = <a href="/type/Updates" >Updates</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>The peer</td> +</tr> +<tr> +<td><strong>banned_rights</strong></td> +<td style="text-align: center;"><a href="/type/ChatBannedRights">ChatBannedRights</a></td> +<td>The new global rights</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/Updates">Updates</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>BANNED_RIGHTS_INVALID</td> +<td>You provided some invalid flags in the banned rights.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_NOT_MODIFIED</td> +<td>The pinned message wasn't modified.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</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>UNTIL_DATE_INVALID</td> +<td>Invalid until date provided.</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> +<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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.getDhConfig b/data/corefork.telegram.org/method/messages.getDhConfig new file mode 100644 index 0000000000..616eaccf05 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.getDhConfig @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getDhConfig</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Returns configuration parameters for Diffie-Hellman key generation. Can also return a random sequence of bytes of required length."> + <meta property="og:title" content="messages.getDhConfig"> + <meta property="og:image" content=""> + <meta property="og:description" content="Returns configuration parameters for Diffie-Hellman key generation. Can also return a random sequence of bytes of required length."> + <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?215" 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.getDhConfig" >messages.getDhConfig</a></li></ul></div> + <h1 id="dev_page_title">messages.getDhConfig</h1> + + <div id="dev_page_content"><p>Returns configuration parameters for Diffie-Hellman key generation. Can also return a random sequence of bytes of required length.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.dhConfigNotModified" >messages.dhConfigNotModified</a>#c0e24635 random:<a href="/type/bytes" >bytes</a> = <a href="/type/messages.DhConfig" >messages.DhConfig</a>; +<a href="/constructor/messages.dhConfig" >messages.dhConfig</a>#2c221edd g:<a href="/type/int" >int</a> p:<a href="/type/bytes" >bytes</a> version:<a href="/type/int" >int</a> random:<a href="/type/bytes" >bytes</a> = <a href="/type/messages.DhConfig" >messages.DhConfig</a>; +---functions--- +<a href="/method/messages.getDhConfig" class="current_page_link" >messages.getDhConfig</a>#26cf8950 version:<a href="/type/int" >int</a> random_length:<a href="/type/int" >int</a> = <a href="/type/messages.DhConfig" >messages.DhConfig</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>version</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Value of the <strong>version</strong> parameter from <a href="/constructor/messages.dhConfig">messages.dhConfig</a>, avialable at the client</td> +</tr> +<tr> +<td><strong>random_length</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Length of the required random sequence</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.DhConfig">messages.DhConfig</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>RANDOM_LENGTH_INVALID</td> +<td>Random length 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="#messagesdhconfig" id="messagesdhconfig" name="messagesdhconfig"><i class="anchor-icon"></i></a><a href="/constructor/messages.dhConfig">messages.dhConfig</a></h4> +<p>New set of configuring parameters.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.getDialogFilters b/data/corefork.telegram.org/method/messages.getDialogFilters new file mode 100644 index 0000000000..c596eb405c --- /dev/null +++ b/data/corefork.telegram.org/method/messages.getDialogFilters @@ -0,0 +1,136 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getDialogFilters</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get folders"> + <meta property="og:title" content="messages.getDialogFilters"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get folders"> + <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?215" 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.getDialogFilters" >messages.getDialogFilters</a></li></ul></div> + <h1 id="dev_page_title">messages.getDialogFilters</h1> + + <div id="dev_page_content"><p>Get <a href="/api/folders">folders</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code>---functions--- +<a href="/method/messages.getDialogFilters" class="current_page_link" >messages.getDialogFilters</a>#f19ed96d = <a href="/type/Vector%20t" >Vector</a><<a href="/type/DialogFilter" >DialogFilter</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/Vector%20t">Vector</a><<a href="/type/DialogFilter">DialogFilter</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="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/payments.getPaymentReceipt b/data/corefork.telegram.org/method/messages.getGameHighScores similarity index 82% rename from data/corefork.telegram.org/method/payments.getPaymentReceipt rename to data/corefork.telegram.org/method/messages.getGameHighScores index c7d144faa9..60f5c81337 100644 --- a/data/corefork.telegram.org/method/payments.getPaymentReceipt +++ b/data/corefork.telegram.org/method/messages.getGameHighScores @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>payments.getPaymentReceipt</title> + <title>messages.getGameHighScores</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Get payment receipt"> - <meta property="og:title" content="payments.getPaymentReceipt"> + <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 payment receipt"> + <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"> @@ -36,10 +36,10 @@ <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/payments.getPaymentReceipt" >payments.getPaymentReceipt</a></li></ul></div> - <h1 id="dev_page_title">payments.getPaymentReceipt</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/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 payment receipt</p> + <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"> @@ -52,9 +52,9 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/payments.paymentReceipt" >payments.paymentReceipt</a>#70c4fe03 flags:<a href="/type/%23" >#</a> date:<a href="/type/int" >int</a> bot_id:<a href="/type/long" >long</a> provider_id:<a href="/type/long" >long</a> title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.2?<a href="/type/WebDocument" >WebDocument</a> invoice:<a href="/type/Invoice" >Invoice</a> info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> shipping:flags.1?<a href="/type/ShippingOption" >ShippingOption</a> tip_amount:flags.3?<a href="/type/long" >long</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> credentials_title:<a href="/type/string" >string</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/payments.PaymentReceipt" >payments.PaymentReceipt</a>; +<pre class="page_scheme"><code><a href="/constructor/messages.highScores" >messages.highScores</a>#9a3bfd99 scores:<a href="/type/Vector%20t" >Vector</a><<a href="/type/HighScore" >HighScore</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.HighScores" >messages.HighScores</a>; ---functions--- -<a href="/method/payments.getPaymentReceipt" class="current_page_link" >payments.getPaymentReceipt</a>#2478d1cc peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/payments.PaymentReceipt" >payments.PaymentReceipt</a>;</code></pre></p> +<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> @@ -68,17 +68,22 @@ <tr> <td><strong>peer</strong></td> <td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td>The peer where the payment receipt was sent</td> +<td>Where was the game sent</td> </tr> <tr> -<td><strong>msg_id</strong></td> +<td><strong>id</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Message ID of receipt</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/payments.PaymentReceipt">payments.PaymentReceipt</a></p> +<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> @@ -94,8 +99,19 @@ <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></div> +</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> diff --git a/data/corefork.telegram.org/method/messages.getInlineGameHighScores b/data/corefork.telegram.org/method/messages.getInlineGameHighScores new file mode 100644 index 0000000000..b27ae767a8 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.getInlineGameHighScores @@ -0,0 +1,177 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getInlineGameHighScores</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get highscores of a game sent using an inline bot"> + <meta property="og:title" content="messages.getInlineGameHighScores"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get highscores of a game sent using an inline bot"> + <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?215" 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.getInlineGameHighScores" >messages.getInlineGameHighScores</a></li></ul></div> + <h1 id="dev_page_title">messages.getInlineGameHighScores</h1> + + <div id="dev_page_content"><p>Get highscores of a game sent using an inline bot</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.highScores" >messages.highScores</a>#9a3bfd99 scores:<a href="/type/Vector%20t" >Vector</a><<a href="/type/HighScore" >HighScore</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/messages.HighScores" >messages.HighScores</a>; +---functions--- +<a href="/method/messages.getInlineGameHighScores" class="current_page_link" >messages.getInlineGameHighScores</a>#f635e1b id:<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</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>id</strong></td> +<td style="text-align: center;"><a href="/type/InputBotInlineMessageID">InputBotInlineMessageID</a></td> +<td>ID of inline message</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 of 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>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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.getMessageReadParticipants b/data/corefork.telegram.org/method/messages.getMessageReadParticipants new file mode 100644 index 0000000000..fc3d628c93 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.getMessageReadParticipants @@ -0,0 +1,173 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getMessageReadParticipants</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get which users read a specific message: only available for groups and supergroups with less than chat_read_mark_size_threshold members, read receipts will be stored for chat_read_mark_expire_period seconds after the message was sent, see client configuration for more info »."> + <meta property="og:title" content="messages.getMessageReadParticipants"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get which users read a specific message: only available for groups and supergroups with less than chat_read_mark_size_threshold members, read receipts will be stored for chat_read_mark_expire_period seconds after the message was sent, see client configuration 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?215" 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.getMessageReadParticipants" >messages.getMessageReadParticipants</a></li></ul></div> + <h1 id="dev_page_title">messages.getMessageReadParticipants</h1> + + <div id="dev_page_content"><p>Get which users read a specific message: only available for groups and supergroups with less than <code>chat_read_mark_size_threshold</code> members, read receipts will be stored for <code>chat_read_mark_expire_period</code> seconds after the message was sent, see <a href="/api/config#client-configuration">client configuration 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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code>---functions--- +<a href="/method/messages.getMessageReadParticipants" class="current_page_link" >messages.getMessageReadParticipants</a>#2c6f97b7 peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>>;</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> +<tr> +<td><strong>msg_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Message ID</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/Vector%20t">Vector</a><<a href="/type/long">long</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>CHAT_TOO_BIG</td> +<td>This method is not available for groups with more than <code>chat_read_mark_size_threshold</code> members, <a href="https://core.telegram.org/api/config#client-configuration">see client configuration »</a>.</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="#client-configuration" id="client-configuration" name="client-configuration"><i class="anchor-icon"></i></a><a href="/api/config">Client configuration</a></h4> +<p>The MTProto API has multiple configuration parameters that can be fetched with the appropriate methods.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.getPollResults b/data/corefork.telegram.org/method/messages.getPollResults new file mode 100644 index 0000000000..a4b3d7f31d --- /dev/null +++ b/data/corefork.telegram.org/method/messages.getPollResults @@ -0,0 +1,177 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getPollResults</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get poll results"> + <meta property="og:title" content="messages.getPollResults"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get poll results"> + <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?215" 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.getPollResults" >messages.getPollResults</a></li></ul></div> + <h1 id="dev_page_title">messages.getPollResults</h1> + + <div id="dev_page_content"><p>Get poll results</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.getPollResults" class="current_page_link" >messages.getPollResults</a>#73bb643b peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</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 where the poll was found</td> +</tr> +<tr> +<td><strong>msg_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Message ID of poll message</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/Updates">Updates</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> +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.getStickers b/data/corefork.telegram.org/method/messages.getStickers new file mode 100644 index 0000000000..9c8918bb06 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.getStickers @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getStickers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get stickers by emoji"> + <meta property="og:title" content="messages.getStickers"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get stickers by emoji"> + <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?215" 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.getStickers" >messages.getStickers</a></li></ul></div> + <h1 id="dev_page_title">messages.getStickers</h1> + + <div id="dev_page_content"><p>Get stickers by emoji</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.stickersNotModified" >messages.stickersNotModified</a>#f1749a22 = <a href="/type/messages.Stickers" >messages.Stickers</a>; +<a href="/constructor/messages.stickers" >messages.stickers</a>#30a6ec7e hash:<a href="/type/long" >long</a> stickers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> = <a href="/type/messages.Stickers" >messages.Stickers</a>; +---functions--- +<a href="/method/messages.getStickers" class="current_page_link" >messages.getStickers</a>#d5a5d3a1 emoticon:<a href="/type/string" >string</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Stickers" >messages.Stickers</a>;</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>emoticon</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The emoji</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.Stickers">messages.Stickers</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>EMOTICON_EMPTY</td> +<td>The emoji is empty.</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.getSuggestedDialogFilters b/data/corefork.telegram.org/method/messages.getSuggestedDialogFilters new file mode 100644 index 0000000000..155c653d41 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.getSuggestedDialogFilters @@ -0,0 +1,136 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.getSuggestedDialogFilters</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get suggested folders"> + <meta property="og:title" content="messages.getSuggestedDialogFilters"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get suggested folders"> + <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?215" 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.getSuggestedDialogFilters" >messages.getSuggestedDialogFilters</a></li></ul></div> + <h1 id="dev_page_title">messages.getSuggestedDialogFilters</h1> + + <div id="dev_page_content"><p>Get <a href="/api/folders">suggested folders</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code>---functions--- +<a href="/method/messages.getSuggestedDialogFilters" class="current_page_link" >messages.getSuggestedDialogFilters</a>#a29cd42c = <a href="/type/Vector%20t" >Vector</a><<a href="/type/DialogFilterSuggested" >DialogFilterSuggested</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="#result" id="result" name="result"><i class="anchor-icon"></i></a>Result</h3> +<p><a href="/type/Vector%20t">Vector</a><<a href="/type/DialogFilterSuggested">DialogFilterSuggested</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="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.getHistory b/data/corefork.telegram.org/method/messages.getUnreadMentions similarity index 85% rename from data/corefork.telegram.org/method/messages.getHistory rename to data/corefork.telegram.org/method/messages.getUnreadMentions index 8a8846a521..b68ef6e471 100644 --- a/data/corefork.telegram.org/method/messages.getHistory +++ b/data/corefork.telegram.org/method/messages.getUnreadMentions @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.getHistory</title> + <title>messages.getUnreadMentions</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Gets back the conversation history with one interlocutor / within a chat"> - <meta property="og:title" content="messages.getHistory"> + <meta property="description" content="Get unread messages where we were mentioned"> + <meta property="og:title" content="messages.getUnreadMentions"> <meta property="og:image" content=""> - <meta property="og:description" content="Gets back the conversation history with one interlocutor / within a chat"> + <meta property="og:description" content="Get unread messages where we were mentioned"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.getHistory" >messages.getHistory</a></li></ul></div> - <h1 id="dev_page_title">messages.getHistory</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.getUnreadMentions" >messages.getUnreadMentions</a></li></ul></div> + <h1 id="dev_page_title">messages.getUnreadMentions</h1> - <div id="dev_page_content"><p>Gets back the conversation history with one interlocutor / within a chat</p> + <div id="dev_page_content"><p>Get unread messages where we were mentioned</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -57,7 +57,7 @@ <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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <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.getHistory" class="current_page_link" >messages.getHistory</a>#4423e6c5 peer:<a href="/type/InputPeer" >InputPeer</a> offset_id:<a href="/type/int" >int</a> offset_date:<a href="/type/int" >int</a> add_offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> max_id:<a href="/type/int" >int</a> min_id:<a href="/type/int" >int</a> hash:<a href="/type/long" >long</a> = <a href="/type/messages.Messages" >messages.Messages</a>;</code></pre></p> +<a href="/method/messages.getUnreadMentions" class="current_page_link" >messages.getUnreadMentions</a>#46578472 peer:<a href="/type/InputPeer" >InputPeer</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> = <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> @@ -71,42 +71,32 @@ <tr> <td><strong>peer</strong></td> <td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td>Target peer</td> +<td>Peer where to look for mentions</td> </tr> <tr> <td><strong>offset_id</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Only return messages starting from the specified message ID</td> -</tr> -<tr> -<td><strong>offset_date</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Only return messages sent before the specified date</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>Number of list elements to be skipped, negative values are also accepted.</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>Number of results to return</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 IDs less than <strong>max_id</strong></td> +<td>Maximum message ID to return, <a href="/api/offsets">see pagination</a></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 IDs more than <strong>min_id</strong></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">Result hash</a></td> +<td>Minimum message ID to return, <a href="/api/offsets">see pagination</a></td> </tr> </tbody> </table> @@ -123,11 +113,6 @@ </thead> <tbody> <tr> -<td>401</td> -<td>AUTH_KEY_PERM_EMPTY</td> -<td>The temporary auth key must be binded to the permanent auth key to use these methods.</td> -</tr> -<tr> <td>400</td> <td>CHANNEL_INVALID</td> <td>The provided channel is invalid.</td> @@ -139,11 +124,6 @@ </tr> <tr> <td>400</td> -<td>CHAT_ID_INVALID</td> -<td>The provided chat id is invalid.</td> -</tr> -<tr> -<td>400</td> <td>MSG_ID_INVALID</td> <td>Invalid message ID provided.</td> </tr> diff --git a/data/corefork.telegram.org/method/messages.migrateChat b/data/corefork.telegram.org/method/messages.migrateChat new file mode 100644 index 0000000000..a83baced49 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.migrateChat @@ -0,0 +1,190 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.migrateChat</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Turn a legacy group into a supergroup"> + <meta property="og:title" content="messages.migrateChat"> + <meta property="og:image" content=""> + <meta property="og:description" content="Turn a legacy group into a supergroup"> + <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?215" 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.migrateChat" >messages.migrateChat</a></li></ul></div> + <h1 id="dev_page_title">messages.migrateChat</h1> + + <div id="dev_page_content"><p>Turn a <a href="/api/channel">legacy group into a supergroup</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.migrateChat" class="current_page_link" >messages.migrateChat</a>#a2875319 chat_id:<a href="/type/long" >long</a> = <a href="/type/Updates" >Updates</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>chat_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Legacy group to migrate</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/Updates">Updates</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>CHANNELS_TOO_MUCH</td> +<td>You have joined too many channels/supergroups.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_ID_INVALID</td> +<td>The provided chat id is invalid.</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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> +<p>How to handle channels, supergroups, groups, and what's the difference between them.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.readHistory b/data/corefork.telegram.org/method/messages.readMentions similarity index 86% rename from data/core.telegram.org/method/messages.readHistory rename to data/corefork.telegram.org/method/messages.readMentions index 06802b10b5..d1f2520fd3 100644 --- a/data/core.telegram.org/method/messages.readHistory +++ b/data/corefork.telegram.org/method/messages.readMentions @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.readHistory</title> + <title>messages.readMentions</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Marks message history as read."> - <meta property="og:title" content="messages.readHistory"> + <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="Marks message history as read."> + <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"> @@ -36,10 +36,10 @@ <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.readHistory" >messages.readHistory</a></li></ul></div> - <h1 id="dev_page_title">messages.readHistory</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/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>Marks message history as read.</p> + <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"> @@ -52,9 +52,9 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/messages.affectedMessages" >messages.affectedMessages</a>#84d19185 pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>; +<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.readHistory" class="current_page_link" >messages.readHistory</a>#e306d3a peer:<a href="/type/InputPeer" >InputPeer</a> max_id:<a href="/type/int" >int</a> = <a href="/type/messages.AffectedMessages" >messages.AffectedMessages</a>;</code></pre></p> +<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> @@ -68,12 +68,7 @@ <tr> <td><strong>peer</strong></td> <td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td>Target user or group</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 is passed, only messages with identifiers less or equal than the given one will be read</td> +<td>Dialog</td> </tr> </tbody> </table> @@ -91,13 +86,13 @@ <tbody> <tr> <td>400</td> -<td>CHANNEL_PRIVATE</td> -<td>You haven't joined this channel/supergroup.</td> +<td>CHANNEL_INVALID</td> +<td>The provided channel is invalid.</td> </tr> <tr> <td>400</td> -<td>CHAT_ID_INVALID</td> -<td>The provided chat id is invalid.</td> +<td>CHANNEL_PRIVATE</td> +<td>You haven't joined this channel/supergroup.</td> </tr> <tr> <td>400</td> @@ -149,9 +144,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -168,7 +163,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/method/langpack.getStrings b/data/corefork.telegram.org/method/messages.receivedQueue similarity index 85% rename from data/corefork.telegram.org/method/langpack.getStrings rename to data/corefork.telegram.org/method/messages.receivedQueue index e886552dc9..2736a80725 100644 --- a/data/corefork.telegram.org/method/langpack.getStrings +++ b/data/corefork.telegram.org/method/messages.receivedQueue @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>langpack.getStrings</title> + <title>messages.receivedQueue</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Get strings from a language pack"> - <meta property="og:title" content="langpack.getStrings"> + <meta property="description" content="Confirms receipt of messages in a secret chat by client, cancels push notifications."> + <meta property="og:title" content="messages.receivedQueue"> <meta property="og:image" content=""> - <meta property="og:description" content="Get strings from a language pack"> + <meta property="og:description" content="Confirms receipt of messages in a secret chat by client, cancels push notifications."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.getStrings" >langpack.getStrings</a></li></ul></div> - <h1 id="dev_page_title">langpack.getStrings</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.receivedQueue" >messages.receivedQueue</a></li></ul></div> + <h1 id="dev_page_title">messages.receivedQueue</h1> - <div id="dev_page_content"><p>Get strings from a language pack</p> + <div id="dev_page_content"><p>Confirms receipt of messages in a secret chat by client, cancels push notifications.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -53,7 +53,7 @@ </ul> </div> <pre class="page_scheme"><code>---functions--- -<a href="/method/langpack.getStrings" class="current_page_link" >langpack.getStrings</a>#efea3803 lang_pack:<a href="/type/string" >string</a> lang_code:<a href="/type/string" >string</a> keys:<a href="/type/Vector%20t" >Vector</a><<a href="/type/string" >string</a>> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/LangPackString" >LangPackString</a>>;</code></pre></p> +<a href="/method/messages.receivedQueue" class="current_page_link" >messages.receivedQueue</a>#55a5bb66 max_qts:<a href="/type/int" >int</a> = <a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</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> @@ -65,24 +65,14 @@ </thead> <tbody> <tr> -<td><strong>lang_pack</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Language pack name</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>keys</strong></td> -<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/string">string</a>></td> -<td>Strings to get</td> +<td><strong>max_qts</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Maximum qts value available at the client</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/Vector%20t">Vector</a><<a href="/type/LangPackString">LangPackString</a>></p> +<p>Method returns a list of <strong>random_id</strong>s of messages for which push notifications were cancelled in <a href="/type/Vector%20t">Vector</a><<a href="/type/long">long</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> @@ -95,8 +85,13 @@ <tbody> <tr> <td>400</td> -<td>LANG_PACK_INVALID</td> -<td>The provided language pack is invalid.</td> +<td>MAX_QTS_INVALID</td> +<td>The specified max_qts is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>MSG_WAIT_FAILED</td> +<td>A waiting call returned an error.</td> </tr> </tbody> </table></div> diff --git a/data/core.telegram.org/method/messages.acceptUrlAuth b/data/corefork.telegram.org/method/messages.requestUrlAuth similarity index 85% rename from data/core.telegram.org/method/messages.acceptUrlAuth rename to data/corefork.telegram.org/method/messages.requestUrlAuth index 99cc2cb187..a3a893318a 100644 --- a/data/core.telegram.org/method/messages.acceptUrlAuth +++ b/data/corefork.telegram.org/method/messages.requestUrlAuth @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.acceptUrlAuth</title> + <title>messages.requestUrlAuth</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Use this to accept a Seamless Telegram Login authorization request, for more info click here »"> - <meta property="og:title" content="messages.acceptUrlAuth"> - <meta property="og:image" content="f81abf66587fc04a40"> - <meta property="og:description" content="Use this to accept a Seamless Telegram Login authorization request, for more info click here »"> + <meta property="description" content="Get more info about a Seamless Telegram Login authorization request, for more info click here »"> + <meta property="og:title" content="messages.requestUrlAuth"> + <meta property="og:image" content="eb9345ffdb04c86d59"> + <meta property="og:description" content="Get more info about a Seamless Telegram Login authorization request, for more info click here »"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.acceptUrlAuth" >messages.acceptUrlAuth</a></li></ul></div> - <h1 id="dev_page_title">messages.acceptUrlAuth</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.requestUrlAuth" >messages.requestUrlAuth</a></li></ul></div> + <h1 id="dev_page_title">messages.requestUrlAuth</h1> - <div id="dev_page_content"><p>Use this to accept a Seamless Telegram Login authorization request, for more info <a href="/api/url-authorization">click here »</a></p> + <div id="dev_page_content"><p>Get more info about a Seamless Telegram Login authorization request, for more info <a href="/api/url-authorization">click here »</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -56,7 +56,7 @@ <a href="/constructor/urlAuthResultAccepted" >urlAuthResultAccepted</a>#8f8c0e4e url:<a href="/type/string" >string</a> = <a href="/type/UrlAuthResult" >UrlAuthResult</a>; <a href="/constructor/urlAuthResultDefault" >urlAuthResultDefault</a>#a9d6db1f = <a href="/type/UrlAuthResult" >UrlAuthResult</a>; ---functions--- -<a href="/method/messages.acceptUrlAuth" class="current_page_link" >messages.acceptUrlAuth</a>#b12c7125 flags:<a href="/type/%23" >#</a> write_allowed:flags.0?true peer:flags.1?<a href="/type/InputPeer" >InputPeer</a> msg_id:flags.1?<a href="/type/int" >int</a> button_id:flags.1?<a href="/type/int" >int</a> url:flags.2?<a href="/type/string" >string</a> = <a href="/type/UrlAuthResult" >UrlAuthResult</a>;</code></pre></p> +<a href="/method/messages.requestUrlAuth" class="current_page_link" >messages.requestUrlAuth</a>#198fb446 flags:<a href="/type/%23" >#</a> peer:flags.1?<a href="/type/InputPeer" >InputPeer</a> msg_id:flags.1?<a href="/type/int" >int</a> button_id:flags.1?<a href="/type/int" >int</a> url:flags.2?<a href="/type/string" >string</a> = <a href="/type/UrlAuthResult" >UrlAuthResult</a>;</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> @@ -73,24 +73,19 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>write_allowed</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>Set this flag to allow the bot to send messages to you (if requested)</td> -</tr> -<tr> <td><strong>peer</strong></td> <td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/InputPeer">InputPeer</a></td> -<td>The location of the message</td> +<td>Peer where the message is located</td> </tr> <tr> <td><strong>msg_id</strong></td> <td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/int">int</a></td> -<td>Message ID of the message with the login button</td> +<td>The message</td> </tr> <tr> <td><strong>button_id</strong></td> <td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/int">int</a></td> -<td>ID of the login button</td> +<td>The ID of the button with the authorization request</td> </tr> <tr> <td><strong>url</strong></td> @@ -142,9 +137,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -161,7 +156,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/method/stats.getMessagePublicForwards b/data/corefork.telegram.org/method/messages.search similarity index 70% rename from data/corefork.telegram.org/method/stats.getMessagePublicForwards rename to data/corefork.telegram.org/method/messages.search index 58e491d7cd..007c86b21f 100644 --- a/data/corefork.telegram.org/method/stats.getMessagePublicForwards +++ b/data/corefork.telegram.org/method/messages.search @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>stats.getMessagePublicForwards</title> + <title>messages.search</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Obtains a list of messages, indicating to which other public channels was a channel message forwarded. Will return a list of messages with peer_id equal to the public channel to which this message was forwarded."> - <meta property="og:title" content="stats.getMessagePublicForwards"> + <meta property="description" content="Gets back found messages"> + <meta property="og:title" content="messages.search"> <meta property="og:image" content=""> - <meta property="og:description" content="Obtains a list of messages, indicating to which other public channels was a channel message forwarded. Will return a list of messages with peer_id equal to the public channel to which this message was forwarded."> + <meta property="og:description" content="Gets back found messages"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,11 +36,10 @@ <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/stats.getMessagePublicForwards" >stats.getMessagePublicForwards</a></li></ul></div> - <h1 id="dev_page_title">stats.getMessagePublicForwards</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.search" >messages.search</a></li></ul></div> + <h1 id="dev_page_title">messages.search</h1> - <div id="dev_page_content"><p>Obtains a list of messages, indicating to which other public channels was a channel message forwarded.<br> -Will return a list of <a href="/constructor/message">messages</a> with <code>peer_id</code> equal to the public channel to which this message was forwarded.</p> + <div id="dev_page_content"><p>Gets back found messages</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -58,7 +57,7 @@ Will return a list of <a href="/constructor/message">messages</a> with <code>pee <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><<a href="/type/Message" >Message</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <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/stats.getMessagePublicForwards" class="current_page_link" >stats.getMessagePublicForwards</a>#5630281b channel:<a href="/type/InputChannel" >InputChannel</a> msg_id:<a href="/type/int" >int</a> offset_rate:<a href="/type/int" >int</a> offset_peer:<a href="/type/InputPeer" >InputPeer</a> offset_id:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> = <a href="/type/messages.Messages" >messages.Messages</a>;</code></pre></p> +<a href="/method/messages.search" class="current_page_link" >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> <h3><a class="anchor" href="#parameters" id="parameters" name="parameters"><i class="anchor-icon"></i></a>Parameters</h3> <table class="table"> <thead> @@ -70,34 +69,74 @@ Will return a list of <a href="/constructor/message">messages</a> with <code>pee </thead> <tbody> <tr> -<td><strong>channel</strong></td> -<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> -<td>Source channel</td> +<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>msg_id</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Source message ID</td> -</tr> -<tr> -<td><strong>offset_rate</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Initially 0, then set to the <code>next_rate</code> parameter of <a href="/constructor/messages.messagesSlice">messages.messagesSlice</a></td> -</tr> -<tr> -<td><strong>offset_peer</strong></td> +<td><strong>peer</strong></td> <td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> -<td><a href="/api/offsets">Offsets for pagination, for more info click here</a></td> +<td>User or chat, histories with which are searched, or <a href="/constructor/inputPeerEmpty">(inputPeerEmpty)</a> constructor for global search</td> +</tr> +<tr> +<td><strong>q</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Text search request</td> +</tr> +<tr> +<td><strong>from_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/InputPeer">InputPeer</a></td> +<td>Only return messages sent by the specified user ID</td> +</tr> +<tr> +<td><strong>top_msg_id</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/int">int</a></td> +<td><a href="/api/threads">Thread ID</a></td> +</tr> +<tr> +<td><strong>filter</strong></td> +<td style="text-align: center;"><a href="/type/MessagesFilter">MessagesFilter</a></td> +<td>Filter to return only specified message types</td> +</tr> +<tr> +<td><strong>min_date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If a positive value was transferred, only messages with a sending date bigger than the transferred one will be returned</td> +</tr> +<tr> +<td><strong>max_date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>If a positive value was transferred, only messages with a sending date smaller than the transferred one will be returned</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> +<td>Only return messages starting from the specified message ID</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">Additional offset</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> +<td><a href="/api/offsets">Number of results to return</a></td> +</tr> +<tr> +<td><strong>max_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/offsets">Maximum message ID to return</a></td> +</tr> +<tr> +<td><strong>min_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td><a href="/api/offsets">Minimum message ID to return</a></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</a></td> </tr> </tbody> </table> @@ -120,23 +159,63 @@ Will return a list of <a href="/constructor/message">messages</a> with <code>pee </tr> <tr> <td>400</td> +<td>CHANNEL_PRIVATE</td> +<td>You haven't joined this channel/supergroup.</td> +</tr> +<tr> +<td>400</td> <td>CHAT_ADMIN_REQUIRED</td> <td>You must be an admin in this chat to do this.</td> </tr> <tr> <td>400</td> -<td>MESSAGE_ID_INVALID</td> -<td>The provided message id is invalid.</td> +<td>FROM_PEER_INVALID</td> +<td>The specified from_id is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_FILTER_INVALID</td> +<td>The specified filter is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</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> +<tr> +<td>400</td> +<td>PEER_ID_NOT_SUPPORTED</td> +<td>The provided peer ID is not supported.</td> +</tr> +<tr> +<td>400</td> +<td>SEARCH_QUERY_EMPTY</td> +<td>The search query is empty.</td> +</tr> +<tr> +<td>400</td> +<td>USER_ID_INVALID</td> +<td>The provided user 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="#messagesmessagesslice" id="messagesmessagesslice" name="messagesmessagesslice"><i class="anchor-icon"></i></a><a href="/constructor/messages.messagesSlice">messages.messagesSlice</a></h4> -<p>Incomplete list of messages and auxiliary data.</p> +<h4><a class="anchor" href="#inputpeerempty" id="inputpeerempty" name="inputpeerempty"><i class="anchor-icon"></i></a><a href="/constructor/inputPeerEmpty">inputPeerEmpty</a></h4> +<p>An empty constructor, no user or chat is defined.</p> +<h4><a class="anchor" href="#threads" id="threads" name="threads"><i class="anchor-icon"></i></a><a href="/api/threads">Threads</a></h4> +<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> <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> -<h4><a class="anchor" href="#message" id="message" name="message"><i class="anchor-icon"></i></a><a href="/constructor/message">message</a></h4> -<p>A message</p></div> +<p>How to fetch results from large lists of objects.</p></div> </div> diff --git a/data/corefork.telegram.org/method/messages.sendEncrypted b/data/corefork.telegram.org/method/messages.sendEncrypted new file mode 100644 index 0000000000..1be3fbfa2e --- /dev/null +++ b/data/corefork.telegram.org/method/messages.sendEncrypted @@ -0,0 +1,210 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.sendEncrypted</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Sends a text message to a secret chat."> + <meta property="og:title" content="messages.sendEncrypted"> + <meta property="og:image" content=""> + <meta property="og:description" content="Sends a text message to a secret chat."> + <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?215" 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.sendEncrypted" >messages.sendEncrypted</a></li></ul></div> + <h1 id="dev_page_title">messages.sendEncrypted</h1> + + <div id="dev_page_content"><p>Sends a text message to a secret chat.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/messages.sentEncryptedMessage" >messages.sentEncryptedMessage</a>#560f8935 date:<a href="/type/int" >int</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>; +<a href="/constructor/messages.sentEncryptedFile" >messages.sentEncryptedFile</a>#9493ff32 date:<a href="/type/int" >int</a> file:<a href="/type/EncryptedFile" >EncryptedFile</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>; +---functions--- +<a href="/method/messages.sendEncrypted" class="current_page_link" >messages.sendEncrypted</a>#44fa7a15 flags:<a href="/type/%23" >#</a> silent:flags.0?true peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> random_id:<a href="/type/long" >long</a> data:<a href="/type/bytes" >bytes</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</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>silent</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>Send encrypted message without a notification</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputEncryptedChat">InputEncryptedChat</a></td> +<td>Secret chat ID</td> +</tr> +<tr> +<td><strong>random_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Unique client message ID, necessary to avoid message resending</td> +</tr> +<tr> +<td><strong>data</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>TL-serialization of <a href="/type/DecryptedMessage">DecryptedMessage</a> type, encrypted with a key that was created during chat initialization</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.SentEncryptedMessage">messages.SentEncryptedMessage</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>CHAT_ID_INVALID</td> +<td>The provided chat id is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>DATA_INVALID</td> +<td>Encrypted data invalid.</td> +</tr> +<tr> +<td>400</td> +<td>ENCRYPTION_DECLINED</td> +<td>The secret chat was declined.</td> +</tr> +<tr> +<td>400</td> +<td>MSG_WAIT_FAILED</td> +<td>A waiting call returned an error.</td> +</tr> +<tr> +<td>403</td> +<td>USER_IS_BLOCKED</td> +<td>You were blocked by this user.</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="#decryptedmessage" id="decryptedmessage" name="decryptedmessage"><i class="anchor-icon"></i></a><a href="/type/DecryptedMessage">DecryptedMessage</a></h4> +<p>Object describes the contents of an encrypted message.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/photos.uploadProfilePhoto b/data/corefork.telegram.org/method/messages.sendEncryptedFile similarity index 74% rename from data/corefork.telegram.org/method/photos.uploadProfilePhoto rename to data/corefork.telegram.org/method/messages.sendEncryptedFile index fb1b560792..a2c3797ca4 100644 --- a/data/corefork.telegram.org/method/photos.uploadProfilePhoto +++ b/data/corefork.telegram.org/method/messages.sendEncryptedFile @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>photos.uploadProfilePhoto</title> + <title>messages.sendEncryptedFile</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Updates current user profile photo."> - <meta property="og:title" content="photos.uploadProfilePhoto"> + <meta property="description" content="Sends a message with a file attachment to a secret chat"> + <meta property="og:title" content="messages.sendEncryptedFile"> <meta property="og:image" content=""> - <meta property="og:description" content="Updates current user profile photo."> + <meta property="og:description" content="Sends a message with a file attachment to a secret chat"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/photos.uploadProfilePhoto" >photos.uploadProfilePhoto</a></li></ul></div> - <h1 id="dev_page_title">photos.uploadProfilePhoto</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.sendEncryptedFile" >messages.sendEncryptedFile</a></li></ul></div> + <h1 id="dev_page_title">messages.sendEncryptedFile</h1> - <div id="dev_page_content"><p>Updates current user profile photo.</p> + <div id="dev_page_content"><p>Sends a message with a file attachment to a secret chat</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,10 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/photos.photo" >photos.photo</a>#20212ca8 photo:<a href="/type/Photo" >Photo</a> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> = <a href="/type/photos.Photo" >photos.Photo</a>; +<pre class="page_scheme"><code><a href="/constructor/messages.sentEncryptedMessage" >messages.sentEncryptedMessage</a>#560f8935 date:<a href="/type/int" >int</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>; +<a href="/constructor/messages.sentEncryptedFile" >messages.sentEncryptedFile</a>#9493ff32 date:<a href="/type/int" >int</a> file:<a href="/type/EncryptedFile" >EncryptedFile</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</a>; ---functions--- -<a href="/method/photos.uploadProfilePhoto" class="current_page_link" >photos.uploadProfilePhoto</a>#89f30f69 flags:<a href="/type/%23" >#</a> file:flags.0?<a href="/type/InputFile" >InputFile</a> video:flags.1?<a href="/type/InputFile" >InputFile</a> video_start_ts:flags.2?<a href="/type/double" >double</a> = <a href="/type/photos.Photo" >photos.Photo</a>;</code></pre></p> +<a href="/method/messages.sendEncryptedFile" class="current_page_link" >messages.sendEncryptedFile</a>#5559481d flags:<a href="/type/%23" >#</a> silent:flags.0?true peer:<a href="/type/InputEncryptedChat" >InputEncryptedChat</a> random_id:<a href="/type/long" >long</a> data:<a href="/type/bytes" >bytes</a> file:<a href="/type/InputEncryptedFile" >InputEncryptedFile</a> = <a href="/type/messages.SentEncryptedMessage" >messages.SentEncryptedMessage</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> @@ -71,24 +72,34 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> +<td><strong>silent</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 to send the file without triggering a notification</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputEncryptedChat">InputEncryptedChat</a></td> +<td>Secret chat ID</td> +</tr> +<tr> +<td><strong>random_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Unique client message ID necessary to prevent message resending</td> +</tr> +<tr> +<td><strong>data</strong></td> +<td style="text-align: center;"><a href="/type/bytes">bytes</a></td> +<td>TL-serialization of <a href="/type/DecryptedMessage">DecryptedMessage</a> type, encrypted with a key generated during chat initialization</td> +</tr> +<tr> <td><strong>file</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/InputFile">InputFile</a></td> -<td>File saved in parts by means of <a href="/method/upload.saveFilePart">upload.saveFilePart</a> method</td> -</tr> -<tr> -<td><strong>video</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/InputFile">InputFile</a></td> -<td><a href="/api/files#animated-profile-pictures">Animated profile picture</a> video</td> -</tr> -<tr> -<td><strong>video_start_ts</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/double">double</a></td> -<td>Floating point UNIX timestamp in seconds, indicating the frame of the video that should be used as static preview.</td> +<td style="text-align: center;"><a href="/type/InputEncryptedFile">InputEncryptedFile</a></td> +<td>File attachment for the secret chat</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/photos.Photo">photos.Photo</a></p> +<p><a href="/type/messages.SentEncryptedMessage">messages.SentEncryptedMessage</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> @@ -101,51 +112,34 @@ <tbody> <tr> <td>400</td> -<td>ALBUM_PHOTOS_TOO_MANY</td> -<td>Too many .</td> +<td>DATA_TOO_LONG</td> +<td>Data too long.</td> </tr> <tr> <td>400</td> -<td>FILE_PARTS_INVALID</td> -<td>The number of file parts is invalid.</td> +<td>ENCRYPTION_DECLINED</td> +<td>The secret chat was declined.</td> </tr> <tr> <td>400</td> -<td>IMAGE_PROCESS_FAILED</td> -<td>Failure while processing image.</td> +<td>FILE_EMTPY</td> +<td>An empty file was provided.</td> </tr> <tr> <td>400</td> -<td>PHOTO_CROP_FILE_MISSING</td> -<td>Photo crop file missing.</td> +<td>MD5_CHECKSUM_INVALID</td> +<td>The MD5 checksums do not match.</td> </tr> <tr> <td>400</td> -<td>PHOTO_CROP_SIZE_SMALL</td> -<td>Photo is too small.</td> -</tr> -<tr> -<td>400</td> -<td>PHOTO_EXT_INVALID</td> -<td>The extension of the photo is invalid.</td> -</tr> -<tr> -<td>400</td> -<td>PHOTO_FILE_MISSING</td> -<td>Profile photo file missing.</td> -</tr> -<tr> -<td>400</td> -<td>VIDEO_FILE_INVALID</td> -<td>The specified video file is invalid.</td> +<td>MSG_WAIT_FAILED</td> +<td>A waiting call returned an error.</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="#uploadsavefilepart" id="uploadsavefilepart" name="uploadsavefilepart"><i class="anchor-icon"></i></a><a href="/method/upload.saveFilePart">upload.saveFilePart</a></h4> -<p>Saves a part of file for futher sending to one of the methods.</p> -<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></div> +<h4><a class="anchor" href="#decryptedmessage" id="decryptedmessage" name="decryptedmessage"><i class="anchor-icon"></i></a><a href="/type/DecryptedMessage">DecryptedMessage</a></h4> +<p>Object describes the contents of an encrypted message.</p></div> </div> diff --git a/data/corefork.telegram.org/method/messages.sendMedia b/data/corefork.telegram.org/method/messages.sendMedia new file mode 100644 index 0000000000..051920c59e --- /dev/null +++ b/data/corefork.telegram.org/method/messages.sendMedia @@ -0,0 +1,518 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.sendMedia</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Send a media"> + <meta property="og:title" content="messages.sendMedia"> + <meta property="og:image" content=""> + <meta property="og:description" content="Send a media"> + <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?215" 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.sendMedia" >messages.sendMedia</a></li></ul></div> + <h1 id="dev_page_title">messages.sendMedia</h1> + + <div id="dev_page_content"><p>Send a media</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.sendMedia" class="current_page_link" >messages.sendMedia</a>#3491eba9 flags:<a href="/type/%23" >#</a> silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> media:<a href="/type/InputMedia" >InputMedia</a> message:<a href="/type/string" >string</a> random_id:<a href="/type/long" >long</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>;</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>silent</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>Send message silently (no notification should be triggered)</td> +</tr> +<tr> +<td><strong>background</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>Send message in background</td> +</tr> +<tr> +<td><strong>clear_draft</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>Clear the draft</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>Destination</td> +</tr> +<tr> +<td><strong>reply_to_msg_id</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>Message ID to which this message should reply to</td> +</tr> +<tr> +<td><strong>media</strong></td> +<td style="text-align: center;"><a href="/type/InputMedia">InputMedia</a></td> +<td>Attached media</td> +</tr> +<tr> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>Caption</td> +</tr> +<tr> +<td><strong>random_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Random ID to avoid resending the same message</td> +</tr> +<tr> +<td><strong>reply_markup</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/ReplyMarkup">ReplyMarkup</a></td> +<td>Reply markup for bot keyboards</td> +</tr> +<tr> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td>Message <a href="/api/entities">entities</a> for styled text</td> +</tr> +<tr> +<td><strong>schedule_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/int">int</a></td> +<td>Scheduled message date for <a href="/api/scheduled-messages">scheduled messages</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/Updates">Updates</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>BOT_PAYMENTS_DISABLED</td> +<td>Please enable bot payments in botfather before calling this method.</td> +</tr> +<tr> +<td>400</td> +<td>BOT_POLLS_DISABLED</td> +<td> </td> +</tr> +<tr> +<td>400</td> +<td>BROADCAST_PUBLIC_VOTERS_FORBIDDEN</td> +<td>You can't forward polls with public voters.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_DATA_INVALID</td> +<td>The data of one or more of the buttons you provided is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_TYPE_INVALID</td> +<td>The type of one or more of the buttons you provided is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_URL_INVALID</td> +<td>Button URL invalid.</td> +</tr> +<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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_RESTRICTED</td> +<td>You can't send messages in this chat, you were restricted.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_GIFS_FORBIDDEN</td> +<td>You can't send gifs in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_MEDIA_FORBIDDEN</td> +<td>You can't send media in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_POLL_FORBIDDEN</td> +<td>You can't send polls in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_SEND_STICKERS_FORBIDDEN</td> +<td>You can't send stickers in this chat.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<tr> +<td>400</td> +<td>CURRENCY_TOTAL_AMOUNT_INVALID</td> +<td>The total amount of all prices is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>EMOTICON_INVALID</td> +<td>The specified emoji is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>EXTERNAL_URL_INVALID</td> +<td>External URL invalid.</td> +</tr> +<tr> +<td>400</td> +<td>FILE_PARTS_INVALID</td> +<td>The number of file parts is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>FILE_PART_LENGTH_INVALID</td> +<td>The length of a file part is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>FILE_REFERENCE_EMPTY</td> +<td>An empty <a href="https://core.telegram.org/api/file_reference">file reference</a> was specified.</td> +</tr> +<tr> +<td>400</td> +<td>FILE_REFERENCE_EXPIRED</td> +<td>File reference expired, it must be refetched as described in <a href="https://core.telegram.org/api/file_reference">https://core.telegram.org/api/file_reference</a>.</td> +</tr> +<tr> +<td>400</td> +<td>GAME_BOT_INVALID</td> +<td>Bots can't send another bot's game.</td> +</tr> +<tr> +<td>400</td> +<td>IMAGE_PROCESS_FAILED</td> +<td>Failure while processing image.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</td> +</tr> +<tr> +<td>400</td> +<td>MD5_CHECKSUM_INVALID</td> +<td>The MD5 checksums do not match.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_CAPTION_TOO_LONG</td> +<td>The caption is too long.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_EMPTY</td> +<td>The provided media object is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>MEDIA_INVALID</td> +<td>Media invalid.</td> +</tr> +<tr> +<td>400</td> +<td>MSG_ID_INVALID</td> +<td>Invalid message ID provided.</td> +</tr> +<tr> +<td>400</td> +<td>PAYMENT_PROVIDER_INVALID</td> +<td>The specified payment provider 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>PHOTO_EXT_INVALID</td> +<td>The extension of the photo is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>PHOTO_INVALID_DIMENSIONS</td> +<td>The photo dimensions are invalid.</td> +</tr> +<tr> +<td>400</td> +<td>PHOTO_SAVE_FILE_INVALID</td> +<td>Internal issues, try again later.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_ANSWERS_INVALID</td> +<td>Invalid poll answers were provided.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_ANSWER_INVALID</td> +<td>One of the poll answers is not acceptable.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_OPTION_DUPLICATE</td> +<td>Duplicate poll options provided.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_OPTION_INVALID</td> +<td>Invalid poll option provided.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_QUESTION_INVALID</td> +<td>One of the poll questions is not acceptable.</td> +</tr> +<tr> +<td>400</td> +<td>QUIZ_CORRECT_ANSWERS_EMPTY</td> +<td>No correct quiz answer was specified.</td> +</tr> +<tr> +<td>400</td> +<td>QUIZ_CORRECT_ANSWERS_TOO_MUCH</td> +<td>You specified too many correct answers in a quiz, quizes can only have one right answer!</td> +</tr> +<tr> +<td>400</td> +<td>QUIZ_CORRECT_ANSWER_INVALID</td> +<td>An invalid value was provided to the correct_answers field.</td> +</tr> +<tr> +<td>400</td> +<td>QUIZ_MULTIPLE_INVALID</td> +<td>Quizes can't have the multiple_choice flag set!</td> +</tr> +<tr> +<td>400</td> +<td>REPLY_MARKUP_BUY_EMPTY</td> +<td>Reply markup for buy button empty.</td> +</tr> +<tr> +<td>400</td> +<td>REPLY_MARKUP_INVALID</td> +<td>The provided reply markup is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_BOT_NOT_ALLOWED</td> +<td>Bots cannot schedule messages.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_DATE_TOO_LATE</td> +<td>You can't schedule a message this far in the future.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_TOO_MUCH</td> +<td>There are too many scheduled messages.</td> +</tr> +<tr> +<td>420</td> +<td>SLOWMODE_WAIT_X</td> +<td>Slowmode is enabled in this chat: you must wait for the specified number of seconds before sending another message to the chat.</td> +</tr> +<tr> +<td>400</td> +<td>TTL_MEDIA_INVALID</td> +<td>Invalid media Time To Live was provided.</td> +</tr> +<tr> +<td>400</td> +<td>USER_BANNED_IN_CHANNEL</td> +<td>You're banned from sending messages in supergroups/channels.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BLOCKED</td> +<td>You were blocked by this user.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BOT</td> +<td>Bots can't send messages to other bots.</td> +</tr> +<tr> +<td>400</td> +<td>VIDEO_CONTENT_TYPE_INVALID</td> +<td>The video's content type is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>WEBPAGE_CURL_FAILED</td> +<td>Failure while fetching the webpage with cURL.</td> +</tr> +<tr> +<td>400</td> +<td>WEBPAGE_MEDIA_EMPTY</td> +<td>Webpage media empty.</td> +</tr> +<tr> +<td>400</td> +<td>YOU_BLOCKED_USER</td> +<td>You blocked this user.</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> +<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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.sendMessage b/data/corefork.telegram.org/method/messages.sendMessage new file mode 100644 index 0000000000..b0a3538b5e --- /dev/null +++ b/data/corefork.telegram.org/method/messages.sendMessage @@ -0,0 +1,398 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.sendMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Sends a message to a chat"> + <meta property="og:title" content="messages.sendMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Sends a message to a chat"> + <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?215" 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.sendMessage" >messages.sendMessage</a></li></ul></div> + <h1 id="dev_page_title">messages.sendMessage</h1> + + <div id="dev_page_content"><p>Sends a message to a chat</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.sendMessage" class="current_page_link" >messages.sendMessage</a>#520c3870 flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:<a href="/type/InputPeer" >InputPeer</a> reply_to_msg_id:flags.0?<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> random_id:<a href="/type/long" >long</a> reply_markup:flags.2?<a href="/type/ReplyMarkup" >ReplyMarkup</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> schedule_date:flags.10?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>;</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>no_webpage</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>Set this flag to disable generation of the webpage preview</td> +</tr> +<tr> +<td><strong>silent</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>Send this message silently (no notifications for the receivers)</td> +</tr> +<tr> +<td><strong>background</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>Send this message as background message</td> +</tr> +<tr> +<td><strong>clear_draft</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>Clear the draft field</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>The destination where the message will be sent</td> +</tr> +<tr> +<td><strong>reply_to_msg_id</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 message ID to which this message will reply to</td> +</tr> +<tr> +<td><strong>message</strong></td> +<td style="text-align: center;"><a href="/type/string">string</a></td> +<td>The message</td> +</tr> +<tr> +<td><strong>random_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Unique client message ID required to prevent message resending</td> +</tr> +<tr> +<td><strong>reply_markup</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/ReplyMarkup">ReplyMarkup</a></td> +<td>Reply markup for sending bot buttons</td> +</tr> +<tr> +<td><strong>entities</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/Vector%20t">Vector</a><<a href="/type/MessageEntity">MessageEntity</a>></td> +<td>Message <a href="/api/entities">entities</a> for sending styled text</td> +</tr> +<tr> +<td><strong>schedule_date</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.10?<a href="/type/int">int</a></td> +<td>Scheduled message date for <a href="/api/scheduled-messages">scheduled messages</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/Updates">Updates</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>401</td> +<td>AUTH_KEY_PERM_EMPTY</td> +<td>The temporary auth key must be binded to the permanent auth key to use these methods.</td> +</tr> +<tr> +<td>400</td> +<td>BOT_DOMAIN_INVALID</td> +<td>Bot domain invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BOT_INVALID</td> +<td>This is not a valid bot.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_DATA_INVALID</td> +<td>The data of one or more of the buttons you provided is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_TYPE_INVALID</td> +<td>The type of one or more of the buttons you provided is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>BUTTON_URL_INVALID</td> +<td>Button URL invalid.</td> +</tr> +<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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_ID_INVALID</td> +<td>The provided chat id is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_RESTRICTED</td> +<td>You can't send messages in this chat, you were restricted.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<tr> +<td>400</td> +<td>ENCRYPTION_DECLINED</td> +<td>The secret chat was declined.</td> +</tr> +<tr> +<td>400</td> +<td>ENTITIES_TOO_LONG</td> +<td>You provided too many styled message entities.</td> +</tr> +<tr> +<td>400</td> +<td>ENTITY_MENTION_USER_INVALID</td> +<td>You mentioned an invalid user.</td> +</tr> +<tr> +<td>400</td> +<td>FROM_MESSAGE_BOT_DISABLED</td> +<td>Bots can't use fromMessage min constructors.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</td> +</tr> +<tr> +<td>400</td> +<td>MESSAGE_EMPTY</td> +<td>The provided message is empty.</td> +</tr> +<tr> +<td>400</td> +<td>MESSAGE_TOO_LONG</td> +<td>The provided message is too long.</td> +</tr> +<tr> +<td>400</td> +<td>MSG_ID_INVALID</td> +<td>Provided reply_to_msg_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>PINNED_DIALOGS_TOO_MUCH</td> +<td>Too many pinned dialogs.</td> +</tr> +<tr> +<td>400</td> +<td>POLL_OPTION_INVALID</td> +<td>Invalid poll option provided.</td> +</tr> +<tr> +<td>400</td> +<td>REPLY_MARKUP_INVALID</td> +<td>The provided reply markup is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>REPLY_MARKUP_TOO_LONG</td> +<td>The specified reply_markup is too long.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_BOT_NOT_ALLOWED</td> +<td>Bots cannot schedule messages.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_DATE_TOO_LATE</td> +<td>You can't schedule a message this far in the future.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_STATUS_PRIVATE</td> +<td>Can't schedule until user is online, if the user's last seen timestamp is hidden by their privacy settings.</td> +</tr> +<tr> +<td>400</td> +<td>SCHEDULE_TOO_MUCH</td> +<td>There are too many scheduled messages.</td> +</tr> +<tr> +<td>420</td> +<td>SLOWMODE_WAIT_X</td> +<td>Slowmode is enabled in this chat: you must wait for the specified number of seconds before sending another message to the chat.</td> +</tr> +<tr> +<td>400</td> +<td>USER_BANNED_IN_CHANNEL</td> +<td>You're banned from sending messages in supergroups/channels.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BLOCKED</td> +<td>You were blocked by this user.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BOT</td> +<td>Bots can't send messages to other bots.</td> +</tr> +<tr> +<td>400</td> +<td>YOU_BLOCKED_USER</td> +<td>You blocked this user.</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> +<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="#styled-text-with-message-entities" id="styled-text-with-message-entities" name="styled-text-with-message-entities"><i class="anchor-icon"></i></a><a href="/api/entities">Styled text with message entities</a></h4> +<p>How to create styled text with message entities</p> +<h4><a class="anchor" href="#scheduled-messages" id="scheduled-messages" name="scheduled-messages"><i class="anchor-icon"></i></a><a href="/api/scheduled-messages">Scheduled messages</a></h4> +<p>Telegram allows scheduling messages</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.sendVote b/data/corefork.telegram.org/method/messages.sendVote new file mode 100644 index 0000000000..d1ae30b45a --- /dev/null +++ b/data/corefork.telegram.org/method/messages.sendVote @@ -0,0 +1,220 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.sendVote</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Vote in a poll"> + <meta property="og:title" content="messages.sendVote"> + <meta property="og:image" content=""> + <meta property="og:description" content="Vote in a poll"> + <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?215" 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.sendVote" >messages.sendVote</a></li></ul></div> + <h1 id="dev_page_title">messages.sendVote</h1> + + <div id="dev_page_content"><p>Vote in a <a href="/constructor/poll">poll</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.sendVote" class="current_page_link" >messages.sendVote</a>#10ea6184 peer:<a href="/type/InputPeer" >InputPeer</a> msg_id:<a href="/type/int" >int</a> options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> = <a href="/type/Updates" >Updates</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>The chat where the poll was sent</td> +</tr> +<tr> +<td><strong>msg_id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The message ID of the poll</td> +</tr> +<tr> +<td><strong>options</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/bytes">bytes</a>></td> +<td>The options that were chosen</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/Updates">Updates</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>MESSAGE_ID_INVALID</td> +<td>The provided message id is invalid.</td> +</tr> +<tr> +<td>400</td> +<td>MESSAGE_POLL_CLOSED</td> +<td>Poll closed.</td> +</tr> +<tr> +<td>400</td> +<td>OPTIONS_TOO_MUCH</td> +<td>Too many options provided.</td> +</tr> +<tr> +<td>400</td> +<td>OPTION_INVALID</td> +<td>Invalid option selected.</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>REVOTE_NOT_ALLOWED</td> +<td>You cannot change your vote.</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="#poll" id="poll" name="poll"><i class="anchor-icon"></i></a><a href="/constructor/poll">poll</a></h4> +<p>Poll</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/contacts.addContact b/data/corefork.telegram.org/method/messages.setGameScore similarity index 82% rename from data/core.telegram.org/method/contacts.addContact rename to data/corefork.telegram.org/method/messages.setGameScore index 1cf71a56b4..70d4aea20e 100644 --- a/data/core.telegram.org/method/contacts.addContact +++ b/data/corefork.telegram.org/method/messages.setGameScore @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>contacts.addContact</title> + <title>messages.setGameScore</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Add an existing telegram user as contact."> - <meta property="og:title" content="contacts.addContact"> + <meta property="description" content="Use this method to set the score of the specified user in a game sent as a normal message (bots only)."> + <meta property="og:title" content="messages.setGameScore"> <meta property="og:image" content=""> - <meta property="og:description" content="Add an existing telegram user as contact."> + <meta property="og:description" content="Use this method to set the score of the specified user in a game sent as a normal message (bots only)."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,11 +36,10 @@ <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/contacts.addContact" >contacts.addContact</a></li></ul></div> - <h1 id="dev_page_title">contacts.addContact</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.setGameScore" >messages.setGameScore</a></li></ul></div> + <h1 id="dev_page_title">messages.setGameScore</h1> - <div id="dev_page_content"><p>Add an existing telegram user as contact.</p> -<p>Use <a href="/method/contacts.importContacts">contacts.importContacts</a> to add contacts by phone number, without knowing their Telegram ID.</p> + <div id="dev_page_content"><p>Use this method to set the score of the specified user in a game sent as a normal message (bots only).</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -61,7 +60,7 @@ <a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; <a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; ---functions--- -<a href="/method/contacts.addContact" class="current_page_link" >contacts.addContact</a>#e8f463d0 flags:<a href="/type/%23" >#</a> add_phone_privacy_exception:flags.0?true id:<a href="/type/InputUser" >InputUser</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> phone:<a href="/type/string" >string</a> = <a href="/type/Updates" >Updates</a>;</code></pre></p> +<a href="/method/messages.setGameScore" class="current_page_link" >messages.setGameScore</a>#8ef8ecc0 flags:<a href="/type/%23" >#</a> edit_message:flags.0?true force:flags.1?true peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/int" >int</a> user_id:<a href="/type/InputUser" >InputUser</a> score:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</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> @@ -78,29 +77,34 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>add_phone_privacy_exception</strong></td> +<td><strong>edit_message</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>Allow the other user to see our phone number?</td> +<td>Set this flag if the game message should be automatically edited to include the current scoreboard</td> +</tr> +<tr> +<td><strong>force</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>Set this flag if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>Unique identifier of target chat</td> </tr> <tr> <td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>Identifier of the sent message</td> +</tr> +<tr> +<td><strong>user_id</strong></td> <td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> -<td>Telegram ID of the other user</td> +<td>User identifier</td> </tr> <tr> -<td><strong>first_name</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>First name</td> -</tr> -<tr> -<td><strong>last_name</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Last name</td> -</tr> -<tr> -<td><strong>phone</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>User's phone number</td> +<td><strong>score</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>New score</td> </tr> </tbody> </table> @@ -118,30 +122,27 @@ <tbody> <tr> <td>400</td> -<td>CHANNEL_PRIVATE</td> -<td>You haven't joined this channel/supergroup.</td> +<td>BOT_SCORE_NOT_MODIFIED</td> +<td>The score wasn't modified.</td> </tr> <tr> <td>400</td> -<td>CONTACT_ID_INVALID</td> -<td>The provided contact ID is invalid.</td> +<td>MESSAGE_ID_INVALID</td> +<td>The provided message id is invalid.</td> </tr> <tr> <td>400</td> -<td>CONTACT_NAME_EMPTY</td> -<td>Contact name empty.</td> +<td>PEER_ID_INVALID</td> +<td>The provided peer id is invalid.</td> </tr> <tr> <td>400</td> -<td>MSG_ID_INVALID</td> -<td>Invalid message ID provided.</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="#related-pages" id="related-pages" name="related-pages"><i class="anchor-icon"></i></a>Related pages</h3> -<h4><a class="anchor" href="#contactsimportcontacts" id="contactsimportcontacts" name="contactsimportcontacts"><i class="anchor-icon"></i></a><a href="/method/contacts.importContacts">contacts.importContacts</a></h4> -<p>Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info.</p> -<p>Use <a href="/method/contacts.addContact">contacts.addContact</a> to add Telegram contacts without actually using their phone number.</p></div> +<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> @@ -180,9 +181,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -199,7 +200,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/method/messages.setBotCallbackAnswer b/data/corefork.telegram.org/method/messages.setInlineGameScore similarity index 82% rename from data/corefork.telegram.org/method/messages.setBotCallbackAnswer rename to data/corefork.telegram.org/method/messages.setInlineGameScore index a2ede3c25a..05ad9684a9 100644 --- a/data/corefork.telegram.org/method/messages.setBotCallbackAnswer +++ b/data/corefork.telegram.org/method/messages.setInlineGameScore @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>messages.setBotCallbackAnswer</title> + <title>messages.setInlineGameScore</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Set the callback answer to a user button press (bots only)"> - <meta property="og:title" content="messages.setBotCallbackAnswer"> + <meta property="description" content="Use this method to set the score of the specified user in a game sent as an inline message (bots only)."> + <meta property="og:title" content="messages.setInlineGameScore"> <meta property="og:image" content=""> - <meta property="og:description" content="Set the callback answer to a user button press (bots only)"> + <meta property="og:description" content="Use this method to set the score of the specified user in a game sent as an inline message (bots only)."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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.setBotCallbackAnswer" >messages.setBotCallbackAnswer</a></li></ul></div> - <h1 id="dev_page_title">messages.setBotCallbackAnswer</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.setInlineGameScore" >messages.setInlineGameScore</a></li></ul></div> + <h1 id="dev_page_title">messages.setInlineGameScore</h1> - <div id="dev_page_content"><p>Set the callback answer to a user button press (bots only)</p> + <div id="dev_page_content"><p>Use this method to set the score of the specified user in a game sent as an inline message (bots only).</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -55,7 +55,7 @@ <pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; <a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/messages.setBotCallbackAnswer" class="current_page_link" >messages.setBotCallbackAnswer</a>#d58f130a flags:<a href="/type/%23" >#</a> alert:flags.1?true query_id:<a href="/type/long" >long</a> message:flags.0?<a href="/type/string" >string</a> url:flags.2?<a href="/type/string" >string</a> cache_time:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/messages.setInlineGameScore" class="current_page_link" >messages.setInlineGameScore</a>#15ad9f64 flags:<a href="/type/%23" >#</a> edit_message:flags.0?true force:flags.1?true id:<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> user_id:<a href="/type/InputUser" >InputUser</a> score:<a href="/type/int" >int</a> = <a href="/type/Bool" >Bool</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> @@ -72,29 +72,29 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>alert</strong></td> +<td><strong>edit_message</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>Set this flag if the game message should be automatically edited to include the current scoreboard</td> +</tr> +<tr> +<td><strong>force</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>Whether to show the message as a popup instead of a toast notification</td> +<td>Set this flag if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters</td> </tr> <tr> -<td><strong>query_id</strong></td> -<td style="text-align: center;"><a href="/type/long">long</a></td> -<td>Query ID</td> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/InputBotInlineMessageID">InputBotInlineMessageID</a></td> +<td>ID of the inline message</td> </tr> <tr> -<td><strong>message</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/string">string</a></td> -<td>Popup to show</td> +<td><strong>user_id</strong></td> +<td style="text-align: center;"><a href="/type/InputUser">InputUser</a></td> +<td>User identifier</td> </tr> <tr> -<td><strong>url</strong></td> -<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/string">string</a></td> -<td>URL to open</td> -</tr> -<tr> -<td><strong>cache_time</strong></td> +<td><strong>score</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Cache validity</td> +<td>New score</td> </tr> </tbody> </table> @@ -112,18 +112,13 @@ <tbody> <tr> <td>400</td> -<td>MESSAGE_TOO_LONG</td> -<td>The provided message is too long.</td> +<td>MESSAGE_ID_INVALID</td> +<td>The provided message id is invalid.</td> </tr> <tr> <td>400</td> -<td>QUERY_ID_INVALID</td> -<td>The query ID is invalid.</td> -</tr> -<tr> -<td>400</td> -<td>URL_INVALID</td> -<td>Invalid URL provided.</td> +<td>USER_BOT_REQUIRED</td> +<td>This method can only be called by a bot.</td> </tr> </tbody> </table> diff --git a/data/corefork.telegram.org/method/messages.setTyping b/data/corefork.telegram.org/method/messages.setTyping new file mode 100644 index 0000000000..2a5aae903f --- /dev/null +++ b/data/corefork.telegram.org/method/messages.setTyping @@ -0,0 +1,240 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.setTyping</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Sends a current user typing event (see SendMessageAction for all event types) to a conversation partner or group."> + <meta property="og:title" content="messages.setTyping"> + <meta property="og:image" content=""> + <meta property="og:description" content="Sends a current user typing event (see SendMessageAction for all event types) to a conversation partner or group."> + <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?215" 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.setTyping" >messages.setTyping</a></li></ul></div> + <h1 id="dev_page_title">messages.setTyping</h1> + + <div id="dev_page_content"><p>Sends a current user typing event (see <a href="/type/SendMessageAction">SendMessageAction</a> for all event types) to a conversation partner or group.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/messages.setTyping" class="current_page_link" >messages.setTyping</a>#58943ee2 flags:<a href="/type/%23" >#</a> peer:<a href="/type/InputPeer" >InputPeer</a> top_msg_id:flags.0?<a href="/type/int" >int</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Bool" >Bool</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>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>Target user or group</td> +</tr> +<tr> +<td><strong>top_msg_id</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><a href="/api/threads">Thread ID</a></td> +</tr> +<tr> +<td><strong>action</strong></td> +<td style="text-align: center;"><a href="/type/SendMessageAction">SendMessageAction</a></td> +<td>Type of action<br>Parameter added in <a href="/api/layers#layer-17">Layer 17</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/Bool">Bool</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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_ID_INVALID</td> +<td>The provided chat id is invalid.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<tr> +<td>400</td> +<td>INPUT_USER_DEACTIVATED</td> +<td>The specified user was deleted.</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> +<tr> +<td>400</td> +<td>USER_BANNED_IN_CHANNEL</td> +<td>You're banned from sending messages in supergroups/channels.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BLOCKED</td> +<td>You were blocked by this user.</td> +</tr> +<tr> +<td>400</td> +<td>USER_IS_BOT</td> +<td>Bots can't send messages to other bots.</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> +<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="#threads" id="threads" name="threads"><i class="anchor-icon"></i></a><a href="/api/threads">Threads</a></h4> +<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> +<h4><a class="anchor" href="#layers" id="layers" name="layers"><i class="anchor-icon"></i></a><a href="/api/layers">Layers</a></h4> +<p>Below you will find information on schema changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</a>.</p> +<h4><a class="anchor" href="#sendmessageaction" id="sendmessageaction" name="sendmessageaction"><i class="anchor-icon"></i></a><a href="/type/SendMessageAction">SendMessageAction</a></h4> +<p>User actions. Use this to provide users with detailed info about their chat partners' actions: typing or sending attachments of all kinds.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/messages.startHistoryImport b/data/corefork.telegram.org/method/messages.startHistoryImport new file mode 100644 index 0000000000..70e055e9e6 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.startHistoryImport @@ -0,0 +1,180 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.startHistoryImport</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Complete the history import process, importing all messages into the chat. To be called only after initializing the import with messages.initHistoryImport and uploading all files using messages.uploadImportedMedia."> + <meta property="og:title" content="messages.startHistoryImport"> + <meta property="og:image" content=""> + <meta property="og:description" content="Complete the history import process, importing all messages into the chat. To be called only after initializing the import with messages.initHistoryImport and uploading all files using messages.uploadImportedMedia."> + <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?215" 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.startHistoryImport" >messages.startHistoryImport</a></li></ul></div> + <h1 id="dev_page_title">messages.startHistoryImport</h1> + + <div id="dev_page_content"><p>Complete the <a href="/api/import">history import process</a>, importing all messages into the chat.<br> +To be called only after initializing the import with <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a> and uploading all files using <a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/messages.startHistoryImport" class="current_page_link" >messages.startHistoryImport</a>#b43df344 peer:<a href="/type/InputPeer" >InputPeer</a> import_id:<a href="/type/long" >long</a> = <a href="/type/Bool" >Bool</a>;</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>The Telegram chat where the messages should be <a href="/api/import">imported, click here for more info »</a></td> +</tr> +<tr> +<td><strong>import_id</strong></td> +<td style="text-align: center;"><a href="/type/long">long</a></td> +<td>Identifier of a history import session, returned by <a href="/method/messages.initHistoryImport">messages.initHistoryImport</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/Bool">Bool</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>IMPORT_ID_INVALID</td> +<td>The specified import 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="#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> +<h4><a class="anchor" href="#messagesinithistoryimport" id="messagesinithistoryimport" name="messagesinithistoryimport"><i class="anchor-icon"></i></a><a href="/method/messages.initHistoryImport">messages.initHistoryImport</a></h4> +<p>Import chat history from a foreign chat app into a specific Telegram chat, <a href="/api/import">click here for more info about imported chats »</a>.</p> +<h4><a class="anchor" href="#messagesuploadimportedmedia" id="messagesuploadimportedmedia" name="messagesuploadimportedmedia"><i class="anchor-icon"></i></a><a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a></h4> +<p>Upload a media file associated with an <a href="/api/import">imported chat, click here for more info »</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.unpinAllMessages b/data/corefork.telegram.org/method/messages.unpinAllMessages similarity index 98% rename from data/core.telegram.org/method/messages.unpinAllMessages rename to data/corefork.telegram.org/method/messages.unpinAllMessages index 2846da9dc4..a12ac989d5 100644 --- a/data/core.telegram.org/method/messages.unpinAllMessages +++ b/data/corefork.telegram.org/method/messages.unpinAllMessages @@ -116,9 +116,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -135,7 +135,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/method/stats.getMessageStats b/data/corefork.telegram.org/method/messages.updateDialogFilter similarity index 83% rename from data/corefork.telegram.org/method/stats.getMessageStats rename to data/corefork.telegram.org/method/messages.updateDialogFilter index 482b1786e7..170206ff38 100644 --- a/data/corefork.telegram.org/method/stats.getMessageStats +++ b/data/corefork.telegram.org/method/messages.updateDialogFilter @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>stats.getMessageStats</title> + <title>messages.updateDialogFilter</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Get message statistics"> - <meta property="og:title" content="stats.getMessageStats"> + <meta property="description" content="Update folder"> + <meta property="og:title" content="messages.updateDialogFilter"> <meta property="og:image" content=""> - <meta property="og:description" content="Get message statistics"> + <meta property="og:description" content="Update folder"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/stats.getMessageStats" >stats.getMessageStats</a></li></ul></div> - <h1 id="dev_page_title">stats.getMessageStats</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.updateDialogFilter" >messages.updateDialogFilter</a></li></ul></div> + <h1 id="dev_page_title">messages.updateDialogFilter</h1> - <div id="dev_page_content"><p>Get <a href="/api/stats">message statistics</a></p> + <div id="dev_page_content"><p>Update <a href="/api/folders">folder</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,10 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/stats.messageStats" >stats.messageStats</a>#8999f295 views_graph:<a href="/type/StatsGraph" >StatsGraph</a> = <a href="/type/stats.MessageStats" >stats.MessageStats</a>; +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/stats.getMessageStats" class="current_page_link" >stats.getMessageStats</a>#b6e0a3f5 flags:<a href="/type/%23" >#</a> dark:flags.0?true channel:<a href="/type/InputChannel" >InputChannel</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/stats.MessageStats" >stats.MessageStats</a>;</code></pre></p> +<a href="/method/messages.updateDialogFilter" class="current_page_link" >messages.updateDialogFilter</a>#1ad4a04a flags:<a href="/type/%23" >#</a> id:<a href="/type/int" >int</a> filter:flags.0?<a href="/type/DialogFilter" >DialogFilter</a> = <a href="/type/Bool" >Bool</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> @@ -71,24 +72,19 @@ <td>Flags, see <a href="/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></td> </tr> <tr> -<td><strong>dark</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 to enable dark theme for graph colors</td> -</tr> -<tr> -<td><strong>channel</strong></td> -<td style="text-align: center;"><a href="/type/InputChannel">InputChannel</a></td> -<td>Channel ID</td> -</tr> -<tr> -<td><strong>msg_id</strong></td> +<td><strong>id</strong></td> <td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Message ID</td> +<td><a href="/api/folders">Folder</a> ID</td> +</tr> +<tr> +<td><strong>filter</strong></td> +<td style="text-align: center;"><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/DialogFilter">DialogFilter</a></td> +<td><a href="/api/folders">Folder</a> info</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/stats.MessageStats">stats.MessageStats</a></p> +<p><a href="/type/Bool">Bool</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> @@ -101,19 +97,24 @@ <tbody> <tr> <td>400</td> -<td>CHANNEL_INVALID</td> -<td>The provided channel is invalid.</td> +<td>FILTER_ID_INVALID</td> +<td>The specified filter ID is invalid.</td> </tr> <tr> <td>400</td> -<td>CHAT_ADMIN_REQUIRED</td> -<td>You must be an admin in this chat to do this.</td> +<td>FILTER_INCLUDE_EMPTY</td> +<td>The include_peers vector of the filter is empty.</td> +</tr> +<tr> +<td>400</td> +<td>FILTER_TITLE_EMPTY</td> +<td>The title field of the filter is empty.</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="#channel-statistics" id="channel-statistics" name="channel-statistics"><i class="anchor-icon"></i></a><a href="/api/stats">Channel statistics</a></h4> -<p>Telegram offers detailed channel statistics for channels and supergroups.</p></div> +<h4><a class="anchor" href="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</p></div> </div> diff --git a/data/corefork.telegram.org/method/payments.clearSavedInfo b/data/corefork.telegram.org/method/messages.updateDialogFiltersOrder similarity index 85% rename from data/corefork.telegram.org/method/payments.clearSavedInfo rename to data/corefork.telegram.org/method/messages.updateDialogFiltersOrder index c48c058a1d..ce13528998 100644 --- a/data/corefork.telegram.org/method/payments.clearSavedInfo +++ b/data/corefork.telegram.org/method/messages.updateDialogFiltersOrder @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>payments.clearSavedInfo</title> + <title>messages.updateDialogFiltersOrder</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Clear saved payment information"> - <meta property="og:title" content="payments.clearSavedInfo"> + <meta property="description" content="Reorder folders"> + <meta property="og:title" content="messages.updateDialogFiltersOrder"> <meta property="og:image" content=""> - <meta property="og:description" content="Clear saved payment information"> + <meta property="og:description" content="Reorder folders"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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/payments.clearSavedInfo" >payments.clearSavedInfo</a></li></ul></div> - <h1 id="dev_page_title">payments.clearSavedInfo</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >All Methods</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/method/messages.updateDialogFiltersOrder" >messages.updateDialogFiltersOrder</a></li></ul></div> + <h1 id="dev_page_title">messages.updateDialogFiltersOrder</h1> - <div id="dev_page_content"><p>Clear saved payment information</p> + <div id="dev_page_content"><p>Reorder <a href="/api/folders">folders</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -55,7 +55,7 @@ <pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; <a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; ---functions--- -<a href="/method/payments.clearSavedInfo" class="current_page_link" >payments.clearSavedInfo</a>#d83d70c1 flags:<a href="/type/%23" >#</a> credentials:flags.0?true info:flags.1?true = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<a href="/method/messages.updateDialogFiltersOrder" class="current_page_link" >messages.updateDialogFiltersOrder</a>#c563c1e4 order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Bool" >Bool</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> @@ -67,24 +67,17 @@ </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>credentials</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>Remove saved payment credentials</td> -</tr> -<tr> -<td><strong>info</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>Clear the last order settings saved by the user</td> +<td><strong>order</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/int">int</a>></td> +<td>New <a href="/api/folders">folder</a> order</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/Bool">Bool</a></p></div> +<p><a href="/type/Bool">Bool</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="#folders" id="folders" name="folders"><i class="anchor-icon"></i></a><a href="/api/folders">Folders</a></h4> +<p>Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.</p></div> </div> diff --git a/data/corefork.telegram.org/method/messages.updatePinnedMessage b/data/corefork.telegram.org/method/messages.updatePinnedMessage new file mode 100644 index 0000000000..0d4e9b1805 --- /dev/null +++ b/data/corefork.telegram.org/method/messages.updatePinnedMessage @@ -0,0 +1,238 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>messages.updatePinnedMessage</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Pin a message"> + <meta property="og:title" content="messages.updatePinnedMessage"> + <meta property="og:image" content=""> + <meta property="og:description" content="Pin a message"> + <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?215" 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.updatePinnedMessage" >messages.updatePinnedMessage</a></li></ul></div> + <h1 id="dev_page_title">messages.updatePinnedMessage</h1> + + <div id="dev_page_content"><p>Pin a message</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updatesTooLong" >updatesTooLong</a>#e317af7e = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortMessage" >updateShortMessage</a>#313bc7f8 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortChatMessage" >updateShortChatMessage</a>#4d6deea5 flags:<a href="/type/%23" >#</a> out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:<a href="/type/int" >int</a> from_id:<a href="/type/long" >long</a> chat_id:<a href="/type/long" >long</a> message:<a href="/type/string" >string</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader" >MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/long" >long</a> reply_to:flags.3?<a href="/type/MessageReplyHeader" >MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShort" >updateShort</a>#78d4dec1 update:<a href="/type/Update" >Update</a> date:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updatesCombined" >updatesCombined</a>#725b04c3 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq_start:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updates" >updates</a>#74ae4240 updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +<a href="/constructor/updateShortSentMessage" >updateShortSentMessage</a>#9015e101 flags:<a href="/type/%23" >#</a> out:flags.1?true id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> media:flags.9?<a href="/type/MessageMedia" >MessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> ttl_period:flags.25?<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</a>; +---functions--- +<a href="/method/messages.updatePinnedMessage" class="current_page_link" >messages.updatePinnedMessage</a>#d2aaf7ec flags:<a href="/type/%23" >#</a> silent:flags.0?true unpin:flags.1?true pm_oneside:flags.2?true peer:<a href="/type/InputPeer" >InputPeer</a> id:<a href="/type/int" >int</a> = <a href="/type/Updates" >Updates</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>silent</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>Pin the message silently, without triggering a notification</td> +</tr> +<tr> +<td><strong>unpin</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>Whether the message should unpinned or pinned</td> +</tr> +<tr> +<td><strong>pm_oneside</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>Whether the message should only be pinned on the local side of a one-to-one chat</td> +</tr> +<tr> +<td><strong>peer</strong></td> +<td style="text-align: center;"><a href="/type/InputPeer">InputPeer</a></td> +<td>The peer where to pin the message</td> +</tr> +<tr> +<td><strong>id</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>The message to pin or unpin</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/Updates">Updates</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>BOT_ONESIDE_NOT_AVAIL</td> +<td>Bots can't pin messages in PM just for themselves.</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>CHAT_ADMIN_REQUIRED</td> +<td>You must be an admin in this chat to do this.</td> +</tr> +<tr> +<td>400</td> +<td>CHAT_NOT_MODIFIED</td> +<td>The pinned message wasn't modified.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<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>PIN_RESTRICTED</td> +<td>You can't pin messages.</td> +</tr> +<tr> +<td>400</td> +<td>USER_BANNED_IN_CHANNEL</td> +<td>You're banned from sending messages in supergroups/channels.</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/core.telegram.org/method/messages.uploadImportedMedia b/data/corefork.telegram.org/method/messages.uploadImportedMedia similarity index 98% rename from data/core.telegram.org/method/messages.uploadImportedMedia rename to data/corefork.telegram.org/method/messages.uploadImportedMedia index 4281220576..57c70d33b0 100644 --- a/data/core.telegram.org/method/messages.uploadImportedMedia +++ b/data/corefork.telegram.org/method/messages.uploadImportedMedia @@ -144,9 +144,9 @@ </ul> </div> <div class="footer_column footer_column_platform"> - <h5><a href="/">Platform</a></h5> + <h5><a href="//core.telegram.org/">Platform</a></h5> <ul> - <li><a href="/api">API</a></li> + <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> @@ -163,7 +163,7 @@ <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> - <h5><a href="/">Platform</a></h5> + <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> diff --git a/data/corefork.telegram.org/method/updates.getDifference b/data/corefork.telegram.org/method/updates.getDifference new file mode 100644 index 0000000000..d9553f4f9b --- /dev/null +++ b/data/corefork.telegram.org/method/updates.getDifference @@ -0,0 +1,225 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>updates.getDifference</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Get new updates."> + <meta property="og:title" content="updates.getDifference"> + <meta property="og:image" content=""> + <meta property="og:description" content="Get 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?215" 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/updates.getDifference" >updates.getDifference</a></li></ul></div> + <h1 id="dev_page_title">updates.getDifference</h1> + + <div id="dev_page_content"><p>Get new <a href="/api/updates">updates</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/updates.differenceEmpty" >updates.differenceEmpty</a>#5d75a138 date:<a href="/type/int" >int</a> seq:<a href="/type/int" >int</a> = <a href="/type/updates.Difference" >updates.Difference</a>; +<a href="/constructor/updates.difference" >updates.difference</a>#f49ca0 new_messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> new_encrypted_messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/EncryptedMessage" >EncryptedMessage</a>> other_updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> state:<a href="/type/updates.State" >updates.State</a> = <a href="/type/updates.Difference" >updates.Difference</a>; +<a href="/constructor/updates.differenceSlice" >updates.differenceSlice</a>#a8fb1981 new_messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Message" >Message</a>> new_encrypted_messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/EncryptedMessage" >EncryptedMessage</a>> other_updates:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Update" >Update</a>> chats:<a href="/type/Vector%20t" >Vector</a><<a href="/type/Chat" >Chat</a>> users:<a href="/type/Vector%20t" >Vector</a><<a href="/type/User" >User</a>> intermediate_state:<a href="/type/updates.State" >updates.State</a> = <a href="/type/updates.Difference" >updates.Difference</a>; +<a href="/constructor/updates.differenceTooLong" >updates.differenceTooLong</a>#4afe8f6d pts:<a href="/type/int" >int</a> = <a href="/type/updates.Difference" >updates.Difference</a>; +---functions--- +<a href="/method/updates.getDifference" class="current_page_link" >updates.getDifference</a>#25939651 flags:<a href="/type/%23" >#</a> pts:<a href="/type/int" >int</a> pts_total_limit:flags.0?<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> qts:<a href="/type/int" >int</a> = <a href="/type/updates.Difference" >updates.Difference</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>pts</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>PTS, see <a href="/api/updates">updates</a>.</td> +</tr> +<tr> +<td><strong>pts_total_limit</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>For fast updating: if provided and <code>pts + pts_total_limit < remote pts</code>, <a href="/constructor/updates.differenceTooLong">updates.differenceTooLong</a> will be returned.<br>Simply tells the server to not return the difference if it is bigger than <code>pts_total_limit</code><br>If the remote pts is too big (> ~4000000), this field will default to 1000000</td> +</tr> +<tr> +<td><strong>date</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>date, see <a href="/api/updates">updates</a>.</td> +</tr> +<tr> +<td><strong>qts</strong></td> +<td style="text-align: center;"><a href="/type/int">int</a></td> +<td>QTS, see <a href="/api/updates">updates</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/updates.Difference">updates.Difference</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>401</td> +<td>AUTH_KEY_PERM_EMPTY</td> +<td>The temporary auth key must be binded to the permanent auth key to use these methods.</td> +</tr> +<tr> +<td>400</td> +<td>CDN_METHOD_INVALID</td> +<td>You can't call this method in a CDN DC.</td> +</tr> +<tr> +<td>403</td> +<td>CHAT_WRITE_FORBIDDEN</td> +<td>You can't write in this chat.</td> +</tr> +<tr> +<td>400</td> +<td>DATE_EMPTY</td> +<td>Date empty.</td> +</tr> +<tr> +<td>400</td> +<td>MSG_ID_INVALID</td> +<td>Invalid message ID provided.</td> +</tr> +<tr> +<td>400</td> +<td>PERSISTENT_TIMESTAMP_EMPTY</td> +<td>Persistent timestamp empty.</td> +</tr> +<tr> +<td>400</td> +<td>PERSISTENT_TIMESTAMP_INVALID</td> +<td>Persistent timestamp invalid.</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> +<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> +<h4><a class="anchor" href="#updatesdifferencetoolong" id="updatesdifferencetoolong" name="updatesdifferencetoolong"><i class="anchor-icon"></i></a><a href="/constructor/updates.differenceTooLong">updates.differenceTooLong</a></h4> +<p>The difference is <a href="/api/updates#recovering-gaps">too long</a>, and the specified state must be used to refetch updates.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/method/users.setSecureValueErrors b/data/corefork.telegram.org/method/users.setSecureValueErrors new file mode 100644 index 0000000000..32088573f1 --- /dev/null +++ b/data/corefork.telegram.org/method/users.setSecureValueErrors @@ -0,0 +1,176 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>users.setSecureValueErrors</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Notify the user that the sent passport data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change)."> + <meta property="og:title" content="users.setSecureValueErrors"> + <meta property="og:image" content=""> + <meta property="og:description" content="Notify the user that the sent passport data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change)."> + <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?215" 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/users.setSecureValueErrors" >users.setSecureValueErrors</a></li></ul></div> + <h1 id="dev_page_title">users.setSecureValueErrors</h1> + + <div id="dev_page_content"><p>Notify the user that the sent <a href="/passport">passport</a> data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change).</p> +<p>Use this if the data submitted by the user doesn't satisfy the standards your service requires for any reason. For example, if a birthday date seems invalid, a submitted document is blurry, a scan shows evidence of tampering, etc. Supply some details in the error message to make sure the user knows how to correct the issues.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/boolFalse" >boolFalse</a>#bc799737 = <a href="/type/Bool" >Bool</a>; +<a href="/constructor/boolTrue" >boolTrue</a>#997275b5 = <a href="/type/Bool" >Bool</a>; +---functions--- +<a href="/method/users.setSecureValueErrors" class="current_page_link" >users.setSecureValueErrors</a>#90c894b5 id:<a href="/type/InputUser" >InputUser</a> errors:<a href="/type/Vector%20t" >Vector</a><<a href="/type/SecureValueError" >SecureValueError</a>> = <a href="/type/Bool" >Bool</a>;</code></pre></p> +<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/InputUser">InputUser</a></td> +<td>The user</td> +</tr> +<tr> +<td><strong>errors</strong></td> +<td style="text-align: center;"><a href="/type/Vector%20t">Vector</a><<a href="/type/SecureValueError">SecureValueError</a>></td> +<td>Errors</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/Bool">Bool</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>USER_ID_INVALID</td> +<td>The provided user ID is invalid.</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> +<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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/mtproto.html b/data/corefork.telegram.org/mtproto.html new file mode 100644 index 0000000000..430aa6a267 --- /dev/null +++ b/data/corefork.telegram.org/mtproto.html @@ -0,0 +1,260 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>MTProto Mobile Protocol</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Please feel free to check out our FAQ for the Technically Inclined. +Client developers are required to comply with the Security…"> + <meta property="og:title" content="MTProto Mobile Protocol"> + <meta property="og:image" content="58401119934796773c"> + <meta property="og:description" content="Please feel free to check out our FAQ for the Technically Inclined. +Client developers are required to comply with the Security…"> + <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?215" 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"></div> + <h1 id="dev_page_title">MTProto Mobile Protocol</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<blockquote> +<p>Please feel free to check out our <a href="http://core.telegram.org/techfaq">FAQ for the Technically Inclined</a>. +Client developers are required to comply with the <a href="/mtproto/security_guidelines">Security Guidelines</a>.</p> +</blockquote> +<h3><a class="anchor" href="#related-articles" id="related-articles" name="related-articles"><i class="anchor-icon"></i></a>Related articles</h3> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li> +<p><a href="/mtproto/description">Mobile Protocol: Detailed Description</a></p> +</li> +<li> +<p><a href="/mtproto/auth_key">Creating an Authorization Key</a></p> +</li> +<li> +<p><a href="/mtproto/samples-auth_key">Creating an Authorization Key: Example</a></p> +</li> +<li> +<p><a href="/mtproto/service_messages">Mobile Protocol: Service Messages</a></p> +</li> +<li> +<p><a href="/mtproto/service_messages_about_messages">Mobile Protocol: Service Messages about Messages</a></p> +</li> +<li> +<p><a href="/mtproto/serialize">Binary Data Serialization</a></p> +</li> +<li> +<p><a href="/mtproto/TL">TL Language</a></p> +</li> +<li> +<p><a href="/schema/mtproto">MTProto TL-schema</a></p> +</li> +<li> +<p><a href="/api/end-to-end">End-to-end encryption, Secret Chats</a></p> +</li> +<li> +<p><a href="/schema/end-to-end">End-to-end TL-schema</a></p> +</li> +<li> +<p><a href="/mtproto/security_guidelines">Security Guidelines for Client Software Developers</a></p> +</li> +</ul> +<p></div></p> +<hr> +<p>This page deals with the basic layer of MTProto encryption used for Cloud chats (server-client encryption). See also:</p> +<ul> +<li><a href="/api/end-to-end">Secret Chats, end-to-end-encryption</a></li> +<li><a href="/api/end-to-end/voice-calls">End-to-end encrypted Voice Calls</a></li> +</ul> +<h3><a class="anchor" href="#general-description" id="general-description" name="general-description"><i class="anchor-icon"></i></a>General Description</h3> +<p>The protocol is designed for access to a server API from applications running on mobile devices. It must be emphasized that a web browser is not such an application.</p> +<p>The protocol is subdivided into three virtually independent components:</p> +<ul> +<li>High-level component (API query language): defines the method whereby API queries and responses are converted to binary <em>messages</em>.</li> +<li>Cryptographic (authorization) layer: defines the method by which messages are encrypted prior to being transmitted through the transport protocol.</li> +<li>Transport component: defines the method for the client and the server to transmit messages over some other existing network protocol (such as HTTP, HTTPS, WS (plain websockets), WSS (websockets over HTTPS), TCP, UDP).</li> +</ul> +<div><a href="/file/811140746/2/CzMyJPVnPo8.81605/c2310d6ede1a5e220f"> + <img src="/file/811140746/2/CzMyJPVnPo8.81605/c2310d6ede1a5e220f" alt="MTProto 2.0, server-client encryption, cloud chats" class="dev_page_image" style="max-width: 600px;"> +</a></div> +<blockquote> +<p>As of version 4.6, major Telegram clients are using <strong>MTProto 2.0</strong>, described in this article. +MTProto v1.0 (<a href="/mtproto_v1">described here</a> for reference) is deprecated and is currently being phased out. </p> +</blockquote> +<h3><a class="anchor" href="#brief-component-summary" id="brief-component-summary" name="brief-component-summary"><i class="anchor-icon"></i></a>Brief Component Summary</h3> +<h4><a class="anchor" href="#high-level-component-rpc-query-languageapi" id="high-level-component-rpc-query-languageapi" name="high-level-component-rpc-query-languageapi"><i class="anchor-icon"></i></a>High-Level Component (RPC Query Language/API)</h4> +<p>From the standpoint of the high-level component, the client and the server exchange <em>messages</em> inside a <em>session</em>. The session is attached to the client device (the application, to be more exact) rather than a specific websocket/http/https/tcp connection. In addition, each session is attached to a <em>user key ID</em> by which authorization is actually accomplished.</p> +<p>Several connections to a server may be open; messages may be sent in either direction through any of the connections (a response to a query is not necessarily returned through the same connection that carried the original query, although most often, that is the case; however, in no case can a message be returned through a connection belonging to a different session). When the UDP protocol is used, a response might be returned by a different IP address than the one to which the query had been sent.</p> +<p>There are several types of messages:</p> +<ul> +<li>RPC calls (client to server): calls to API methods</li> +<li>RPC responses (server to client): results of RPC calls</li> +<li>Message received acknowledgment (or rather, notification of status of a set of messages)</li> +<li>Message status query</li> +<li><em>Multipart message</em> or <em>container</em> (a container that holds several messages; needed to send several RPC calls at once over an HTTP connection, for example; also, a container may support gzip).</li> +</ul> +<p>From the standpoint of lower level protocols, a message is a binary data stream aligned along a 4 or 16-byte boundary. The first several fields in the message are fixed and are used by the cryptographic/authorization system.</p> +<p>Each message, either individual or inside a container, consists of a <em>message identifier</em> (64 bits, see below), a <em>message sequence number within a session</em> (32 bits), the <em>length</em> (of the message body in bytes; 32 bits), and a <em>body</em> (any size which is a multiple of 4 bytes). In addition, when a container or a single message is sent, an <em>internal header</em> is added at the top (see below), then the entire message is encrypted, and an <em>external header</em> is placed at the top of the message (a 64-bit <em>key identifier</em> and a 128-bit <em>message key</em>).</p> +<p>A <em>message body</em> normally consists of a 32-bit <em>message type</em> followed by type-dependent <em>parameters</em>. In particular, each RPC function has a corresponding message type. For more detail, see <a href="/mtproto/serialize">Binary Data Serialization</a>, <a href="/mtproto/service_messages">Mobile Protocol: Service Messages</a>.</p> +<p>All numbers are written as little endian. However, very large numbers (2048-bit) used in RSA and DH are written in the big endian format because that is how the OpenSSL library does it.</p> +<h4><a class="anchor" href="#authorization-and-encryption" id="authorization-and-encryption" name="authorization-and-encryption"><i class="anchor-icon"></i></a>Authorization and Encryption</h4> +<p>Prior to a message (or a multipart message) being transmitted over a network using a transport protocol, it is encrypted in a certain way, and an <em>external header</em> is added at the top of the message which is: a 64-bit <em>key identifier</em> (that uniquely identifies an <em>authorization key</em> for the server as well as the <em>user</em>) and a 128-bit <em>message key</em>. A user key together with the message key defines an actual 256-bit key which is what encrypts the message using AES-256 encryption. Note that the initial part of the message to be encrypted contains variable data (session, message ID, sequence number, server salt) that obviously influences the message key (and thus the AES key and iv). The message key is defined as the 128 middle bits of the SHA256 of the message body (including session, message ID, etc.), including the padding bytes, prepended by 32 bytes taken from the authorization key. Multipart messages are encrypted as a single message.</p> +<blockquote> +<p>For a technical specification, see <a href="/mtproto/description">Mobile Protocol: Detailed Description</a></p> +</blockquote> +<p>The first thing a client application must do is <a href="/mtproto/auth_key">create an authorization key</a> which is normally generated when it is first run and almost never changes.</p> +<p>The protocol’s principal drawback is that an intruder passively intercepting messages and then somehow appropriating the authorization key (for example, by stealing a device) will be able to decrypt all the intercepted messages <em>post factum</em>. This probably is not too much of a problem (by stealing a device, one could also gain access to all the information cached on the device without decrypting anything); however, the following steps could be taken to overcome this weakness:</p> +<ul> +<li><em>Session keys</em> generated using the Diffie-Hellman protocol and used in conjunction with the authorization and the message keys to select AES parameters. To create these, the first thing a client must do after creating a new session is send a special RPC query to the server (“generate session key”) to which the server will respond, whereupon all subsequent messages within the session are encrypted using the session key as well.</li> +<li>Protecting the key stored on the client device with a (text) password; this password is never stored in memory and is entered by a user when starting the application or more frequently (depending on application settings).</li> +<li>Data stored (cached) on the user device can also be protected by encryption using an authorization key which, in turn, is to be password-protected. Then, a password will be required to gain access even to that data.</li> +</ul> +<h4><a class="anchor" href="#time-synchronization" id="time-synchronization" name="time-synchronization"><i class="anchor-icon"></i></a>Time Synchronization</h4> +<p>If client time diverges widely from server time, a server may start ignoring client messages, or vice versa, because of an invalid message identifier (which is closely related to creation time). Under these circumstances, the server will send the client a special message containing the correct time and a certain 128-bit salt (either explicitly provided by the client in a special RPC synchronization request or equal to the key of the latest message received from the client during the current session). This message could be the first one in a container that includes other messages (if the time discrepancy is significant but does not as yet result in the client’s messages being ignored).</p> +<p>Having received such a message or a container holding it, the client first performs a time synchronization (in effect, simply storing the difference between the server’s time and its own to be able to compute the “correct” time in the future) and then verifies that the message identifiers for correctness.</p> +<p>Where a correction has been neglected, the client will have to generate a new session to assure the monotonicity of message identifiers.</p> +<h3><a class="anchor" href="#mtproto-transport" id="mtproto-transport" name="mtproto-transport"><i class="anchor-icon"></i></a>MTProto transport</h3> +<p>Before being sent using the selected transport protocol, the payload has to be wrapped in a secondary protocol header, defined by the appropriate MTProto transport protocol. </p> +<ul> +<li><a href="mtproto/mtproto-transports#abridged">Abridged</a></li> +<li><a href="mtproto/mtproto-transports#intermediate">Intermediate</a></li> +<li><a href="mtproto/mtproto-transports#padded-intermediate">Padded intermediate</a></li> +<li><a href="mtproto/mtproto-transports#full">Full</a></li> +</ul> +<p>The server recognizes these different protocols (and distinguishes them from HTTP, too) by the header. +Additionally, the following transport features can be used: </p> +<ul> +<li><a href="mtproto/mtproto-transports#quick-ack">Quick ack</a></li> +<li><a href="mtproto/mtproto-transports#transport-errors">Transport errors</a></li> +<li><a href="mtproto/mtproto-transports#transport-obfuscation">Transport obfuscation</a></li> +</ul> +<p>Example implementations for these protocols can be seen in <a href="https://github.com/tdlib/td/blob/master/td/mtproto/TcpTransport.cpp">tdlib</a> and <a href="https://github.com/danog/MadelineProto/tree/master/src/danog/MadelineProto/Stream/MTProtoTransport">MadelineProto</a>.</p> +<h3><a class="anchor" href="#transport" id="transport" name="transport"><i class="anchor-icon"></i></a>Transport</h3> +<p>Enables the delivery of encrypted containers together with the external header (hereinafter, <em>Payload</em>) from client to server and back. +Multiple transport protocols are defined:</p> +<ul> +<li><a href="/mtproto/transports#tcp">TCP</a></li> +<li><a href="/mtproto/transports#websocket">Websocket</a></li> +<li><a href="/mtproto/transports#websocket-over-https">Websocket over HTTPS</a></li> +<li><a href="/mtproto/transports#http">HTTP</a></li> +<li><a href="/mtproto/transports#https">HTTPS</a></li> +<li>UDP</li> +</ul> +<p>(We shall examine only the first five types.)</p> +<h3><a class="anchor" href="#recap" id="recap" name="recap"><i class="anchor-icon"></i></a>Recap</h3> +<p>To recap, using the <a href="https://en.wikipedia.org/wiki/OSI_model#Layer_architecture">ISO/OSI stack as comparison</a>: </p> +<ul> +<li>Layer 7 (Application): <a href="#high-level-component-rpc-query-languageapi">High-level RPC API</a></li> +<li>Layer 6 (Presentation): <a href="/mtproto/TL">Type Language</a></li> +<li>Layer 5 (Session): <a href="#high-level-component-rpc-query-languageapi">MTProto session</a></li> +<li>Layer 4 (Transport):<ul> +<li>4.3: <a href="#mtproto-transport">MTProto transport protocol</a></li> +<li>4.2: <a href="/mtproto/mtproto-transports#transport-obfuscation">MTProto obfuscation (optional)</a></li> +<li>4.1: <a href="#transport">Transport protocol</a></li> +</ul> +</li> +<li>Layer 3 (Network): IP</li> +<li>Layer 2 (Data link): MAC/LLC</li> +<li>Layer 1 (Physical): IEEE 802.3, IEEE 802.11, etc...</li> +</ul></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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/mtproto/TL.html b/data/corefork.telegram.org/mtproto/TL.html new file mode 100644 index 0000000000..e89117151f --- /dev/null +++ b/data/corefork.telegram.org/mtproto/TL.html @@ -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?215" 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 combinator’s 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><namespace_identifier>.<constructor_identifier></code> and <code><namespace_identifier>.<Type_identifier></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<alpha>; +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<coupleInt<alpha>> = IntHash<alpha>; +strHash {alpha:Type} (vector (coupleStr alpha)) = StrHash alpha; +intSortedHash {alpha:Type} intHash<alpha> = IntSortedHash<alpha>; +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<T1,T2,...,Tn></code> is syntactic sugar for <code>(T0 (T1) (T2) ... (Tn))</code>. For example, <code>Vector<User></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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/mtproto/description.html b/data/corefork.telegram.org/mtproto/description.html new file mode 100644 index 0000000000..f1fffd7c32 --- /dev/null +++ b/data/corefork.telegram.org/mtproto/description.html @@ -0,0 +1,238 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Mobile Protocol: Detailed Description</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="As of version 4.6, major Telegram clients are using MTProto 2.0. +MTProto v.1.0 is deprecated and is currently being phased…"> + <meta property="og:title" content="Mobile Protocol: Detailed Description"> + <meta property="og:image" content="https://corefork.telegram.org/file/811140746/2/CzMyJPVnPo8.81605/c2310d6ede1a5e220f"> + <meta property="og:description" content="As of version 4.6, major Telegram clients are using MTProto 2.0. +MTProto v.1.0 is deprecated and is currently being phased…"> + <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?215" 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/description" >Mobile Protocol: Detailed Description</a></li></ul></div> + <h1 id="dev_page_title">Mobile Protocol: Detailed Description</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<blockquote> +<p>As of version 4.6, major Telegram clients are using <strong>MTProto 2.0</strong>. +MTProto v.1.0 is deprecated and is currently being phased out.</p> +</blockquote> +<p>This article describes the basic layer of the MTProto protocol version 2.0 (Cloud chats, server-client encryption). The principal differences from version 1.0 (<a href="/mtproto/description_v1">described here</a> for reference) are as follows:</p> +<ul> +<li>SHA-256 is used instead of SHA-1;</li> +<li>Padding bytes are involved in the computation of <strong>msg_key</strong>;</li> +<li><strong>msg_key</strong> depends not only on the message to be encrypted, but on a portion of <strong>auth_key</strong> as well;</li> +<li>12..1024 padding bytes are used instead of 0..15 padding bytes in v.1.0.</li> +</ul> +<p>See also: <a href="https://core.telegram.org/api/end-to-end">MTProto 2.0: Secret Chats, end-to-end encryption</a></p> +<h3><a class="anchor" href="#protocol-description" id="protocol-description" name="protocol-description"><i class="anchor-icon"></i></a>Protocol description</h3> +<p>Before a message (or a multipart message) is transmitted over a network using a transport protocol, it is encrypted in a certain way, and an external header is added at the top of the message that consists of a 64-bit key identifier <strong>auth_key_id</strong> (that uniquely identifies an authorization key for the server as well as the user) and a 128-bit message key <strong>msg_key</strong>. </p> +<p>The authorization key <strong>auth_key</strong> combined with the message key <strong>msg_key</strong> define an actual 256-bit key <strong>aes_key</strong> and a 256-bit initialization vector <strong>aes_iv</strong>, which are used to encrypt the message using AES-256 encryption in infinite garble extension (IGE) mode. Note that the initial part of the message to be encrypted contains variable data (session, message ID, sequence number, server salt) that obviously influences the message key (and thus the AES key and iv). In <strong>MTProto 2.0</strong>, the message key is defined as the 128 middle bits of the SHA-256 of the message body (including session, message ID, padding, etc.) prepended by 32 bytes taken from the authorization key. In the older <strong>MTProto 1.0</strong>, the message key was computed as the lower 128 bits of SHA-1 of the message body, excluding the padding bytes.</p> +<p>Multipart messages are encrypted as a single message. </p> +<div><a href="/file/811140746/2/CzMyJPVnPo8.81605/c2310d6ede1a5e220f"> + <img src="/file/811140746/2/CzMyJPVnPo8.81605/c2310d6ede1a5e220f" alt="MTProto server-client encryption, cloud chats" class="dev_page_image" style="max-width: 600px;"> +</a></div> +<blockquote> +<p>Got questions about this setup? — Check out the <a href="http://core.telegram.org/techfaq">Advanced FAQ</a>!</p> +</blockquote> +<h6><strong>Note 1</strong></h6> +<p>Each plaintext message to be encrypted in MTProto always contains the following data to be checked upon decryption in order to make the system robust against known problems with the components:</p> +<ul> +<li>server salt (64-Bit)</li> +<li>session id</li> +<li>message sequence number</li> +<li>message length</li> +<li>time</li> +</ul> +<h6><strong>Note 2</strong></h6> +<p>Telegram's <strong>End-to-end</strong> encrypted Secret Chats are using an additional layer of encryption on top of the described above. See <a href="https://core.telegram.org/api/end-to-end">Secret Chats, End-to-End encryption</a> for details.</p> +<h3><a class="anchor" href="#terminology" id="terminology" name="terminology"><i class="anchor-icon"></i></a>Terminology</h3> +<h4><a class="anchor" href="#authorization-key-auth-key" id="authorization-key-auth-key" name="authorization-key-auth-key"><i class="anchor-icon"></i></a>Authorization Key (auth_key)</h4> +<p>A 2048-bit key shared by the client device and the server, created upon user registration directly on the client device by exchanging Diffie-Hellman keys, and never transmitted over a network. Each authorization key is user-specific. There is nothing that prevents a user from having several keys (that correspond to “permanent sessions” on different devices), and some of these may be locked forever in the event the device is lost. See also <a href="/mtproto/auth_key">Creating an Authorization Key</a>.</p> +<h4><a class="anchor" href="#server-key" id="server-key" name="server-key"><i class="anchor-icon"></i></a>Server Key</h4> +<p>A 2048-bit RSA key used by the server digitally to sign its own messages while registration is underway and the authorization key is being generated. The application has a built-in public server key which can be used to verify a signature but cannot be used to sign messages. A private server key is stored on the server and changed very infrequently.</p> +<h4><a class="anchor" href="#key-identifier-auth-key-id" id="key-identifier-auth-key-id" name="key-identifier-auth-key-id"><i class="anchor-icon"></i></a>Key Identifier (auth_key_id)</h4> +<p>The 64 lower-order bits of the SHA1 hash of the authorization key are used to indicate which particular key was used to encrypt a message. Keys must be uniquely defined by the 64 lower-order bits of their SHA1, and in the event of a collision, an authorization key is regenerated. A zero key identifier means that encryption is not used which is permissible for a limited set of message types used during registration to generate an authorization key in a Diffie-Hellman exchange. <strong>For MTProto 2.0, SHA1 is still used here, because auth_key_id should identify the authorization key used independently of the protocol version.</strong></p> +<h4><a class="anchor" href="#session" id="session" name="session"><i class="anchor-icon"></i></a>Session</h4> +<p>A (random) 64-bit number generated by the client to distinguish between individual sessions (for example, between different instances of the application, created with the same authorization key). The session in conjunction with the key identifier corresponds to an application instance. The server can maintain session state. <em>Under no circumstances can a message meant for one session be sent into a different session</em>. The server may unilaterally forget any client sessions; clients should be able to handle this. </p> +<h4><a class="anchor" href="#server-salt" id="server-salt" name="server-salt"><i class="anchor-icon"></i></a>Server Salt</h4> +<p>A (random) 64-bit number changed every 30 minutes (separately for each session) at the request of the server. All subsequent messages must contain the new salt (although, messages with the old salt are still accepted for a further 1800 seconds). Required to protect against replay attacks and certain tricks associated with adjusting the client clock to a moment in the distant future.</p> +<h4><a class="anchor" href="#message-identifier-msg-id" id="message-identifier-msg-id" name="message-identifier-msg-id"><i class="anchor-icon"></i></a>Message Identifier (msg_id)</h4> +<p>A (time-dependent) 64-bit number used uniquely to identify a message within a session. Client message identifiers are divisible by 4, server message identifiers modulo 4 yield 1 if the message is a response to a client message, and 3 otherwise. Client message identifiers must increase monotonically (within a single session), the same as server message identifiers, and must approximately equal unixtime*2^32. This way, a message identifier points to the approximate moment in time the message was created. A message is rejected over 300 seconds after it is created or 30 seconds before it is created (this is needed to protect from replay attacks). In this situation, it must be re-sent with a different identifier (or placed in a container with a higher identifier). The identifier of a message container must be strictly greater than those of its nested messages.</p> +<p><strong>Important</strong>: to counter replay-attacks the lower 32 bits of <strong>msg_id</strong> passed by the client must not be empty and must present a fractional part of the time point when the message was created.</p> +<h4><a class="anchor" href="#content-related-message" id="content-related-message" name="content-related-message"><i class="anchor-icon"></i></a>Content-related Message</h4> +<p>A message requiring an explicit acknowledgment. These include all the user and many service messages, virtually all with the exception of containers and acknowledgments. </p> +<h4><a class="anchor" href="#message-sequence-number-msg-seqno" id="message-sequence-number-msg-seqno" name="message-sequence-number-msg-seqno"><i class="anchor-icon"></i></a>Message Sequence Number (msg_seqno)</h4> +<p>A 32-bit number equal to twice the number of “content-related” messages (those requiring acknowledgment, and in particular those that are not containers) created by the sender prior to this message and subsequently incremented by one if the current message is a content-related message. A container is always generated after its entire contents; therefore, its sequence number is greater than or equal to the sequence numbers of the messages contained in it.</p> +<h4><a class="anchor" href="#message-key-msg-key" id="message-key-msg-key" name="message-key-msg-key"><i class="anchor-icon"></i></a>Message Key (msg_key)</h4> +<p>In <strong>MTProto 2.0</strong>, the middle 128 bits of the SHA-256 hash of the message to be encrypted (including the internal header and the <em>padding bytes</em> for MTProto 2.0), prepended by a 32-byte fragment of the authorization key.</p> +<p>In <strong>MTProto 1.0</strong>, message key was defined differently, as the lower 128 bits of the SHA-1 hash of the message to be encrypted, with padding bytes excluded from the computation of the hash. Authorization key was not involved in this computation.</p> +<h4><a class="anchor" href="#internal-cryptographic-header" id="internal-cryptographic-header" name="internal-cryptographic-header"><i class="anchor-icon"></i></a>Internal (cryptographic) Header</h4> +<p>A header (16 bytes) added before a message or a container before it is all encrypted together. Consists of the server salt (64 bits) and the session (64 bits).</p> +<h4><a class="anchor" href="#external-cryptographic-header" id="external-cryptographic-header" name="external-cryptographic-header"><i class="anchor-icon"></i></a>External (cryptographic) Header</h4> +<p>A header (24 bytes) added before an encrypted message or a container. Consists of the key identifier <strong>auth_key_id</strong> (64 bits) and the message key <strong>msg_key</strong> (128 bits).</p> +<h4><a class="anchor" href="#payload" id="payload" name="payload"><i class="anchor-icon"></i></a>Payload</h4> +<p>External header + encrypted message or container.</p> +<h3><a class="anchor" href="#defining-aes-key-and-initialization-vector" id="defining-aes-key-and-initialization-vector" name="defining-aes-key-and-initialization-vector"><i class="anchor-icon"></i></a>Defining AES Key and Initialization Vector</h3> +<p>The 2048-bit authorization key (auth_key) and the 128-bit message key (msg_key) are used to compute a 256-bit AES key (aes_key) and a 256-bit initialization vector (aes_iv) which are subsequently used to encrypt the part of the message to be encrypted (i. e. everything with the exception of the external header that is added later) with AES-256 in infinite garble extension (IGE) mode.</p> +<p>For MTProto 2.0, the algorithm for computing aes_key and aes_iv from auth_key and msg_key is as follows.</p> +<ul> +<li>msg_key_large = SHA256 (substr (auth_key, 88+x, 32) + plaintext + random_padding);</li> +<li>msg_key = substr (msg_key_large, 8, 16);</li> +<li>sha256_a = SHA256 (msg_key + substr (auth_key, x, 36));</li> +<li>sha256_b = SHA256 (substr (auth_key, 40+x, 36) + msg_key);</li> +<li>aes_key = substr (sha256_a, 0, 8) + substr (sha256_b, 8, 16) + substr (sha256_a, 24, 8);</li> +<li>aes_iv = substr (sha256_b, 0, 8) + substr (sha256_a, 8, 16) + substr (sha256_b, 24, 8);</li> +</ul> +<p>where x = 0 for messages from client to server and x = 8 for those from server to client.</p> +<p><em>For the obsolete MTProto 1.0, msg_key, aes_key, and aes_iv were computed differently (see <a href="/mtproto/description_v1#defining-aes-key-and-initialization-vector">this document</a> for reference).</em></p> +<p>The lower-order 1024 bits of auth_key are not involved in the computation. They may (together with the remaining bits or separately) be used on the client device to encrypt the local copy of the data received from the server. The 512 lower-order bits of auth_key are not stored on the server; therefore, if the client device uses them to encrypt local data and the user loses the key or the password, data decryption of local data is impossible (even if data from the server could be obtained).</p> +<p>In MTProto 1.0, when AES was used to encrypt a block of data of a length not divisible by 16 bytes, the data was padded with 0 to 15 random padding bytes <strong>random_padding</strong> to a length divisible by 16 bytes prior to encryption. <strong>In MTProto 2.0, this padding is taken into account when computing <code>msg_key</code>. Note that MTProto 2.0 requires from 12 to 1024 bytes of padding, still subject to the condition that the resulting message length be divisible by 16 bytes.</strong></p> +<h3><a class="anchor" href="#using-mtproto-20-instead-of-mtproto-10" id="using-mtproto-20-instead-of-mtproto-10" name="using-mtproto-20-instead-of-mtproto-10"><i class="anchor-icon"></i></a>Using MTProto 2.0 instead of MTProto 1.0</h3> +<p>A client may either use only MTProto 2.0 or only MTProto 1.0 in the same TCP connection. The server detects the protocol used by the first message received from the client, and then uses the same encryption for its messages, and expects the client to use the same encryption henceforth. We recommend using MTProto 2.0; MTProto 1.0 is deprecated and supported for backward compatibility only.</p> +<h3><a class="anchor" href="#important-checks" id="important-checks" name="important-checks"><i class="anchor-icon"></i></a>Important Checks</h3> +<p>When an encrypted message is received, it <em>must</em> be checked that <strong>msg_key</strong> is <em>in fact</em> equal to the 128 middle bits of the SHA-256 of the decrypted data with a 32-byte fragment of <strong>auth_key</strong> prepended to it, and that msg_id has even parity for messages from client to server, and odd parity for messages from server to client.</p> +<p>In addition, the identifiers (msg_id) of the last N messages received from the other side must be stored, and if a message comes in with msg_id lower than all or equal to any of the stored values, the message is to be ignored. Otherwise, the new message msg_id is added to the set, and, if the number of stored msg_id values is greater than N, the oldest (i. e. the lowest) is forgotten.</p> +<p>On top of this, msg_id values that belong over 30 seconds in the future or over 300 seconds in the past are to be ignored. This is especially important for the server. The client would also find this useful (to protect from a replay attack), but only if it is certain of its time (for example, if its time has been synchronized with that of the server).</p> +<p>Certain client-to-server service messages containing data sent by the client to the server (for example, msg_id of a recent client query) may, nonetheless, be processed on the client even if the time appears to be “incorrect”. This is especially true of messages to change server_salt and notifications of invalid client time. See <a href="/mtproto/service_messages">Mobile Protocol: Service Messages</a>.</p> +<h3><a class="anchor" href="#storing-an-authorization-key-on-a-client-device" id="storing-an-authorization-key-on-a-client-device" name="storing-an-authorization-key-on-a-client-device"><i class="anchor-icon"></i></a>Storing an Authorization Key on a Client Device</h3> +<p>It may be suggested to users concerned with security that they password protect the authorization key in approximately the same way as in ssh. This can be accomplished by prepending the value of cryptographic hash function, such as SHA-256, of the key to the front of the key, following which the entire string is encrypted using AES in CBC mode and a key equal to the user’s (text) password. When the user inputs the password, the stored protected password is decrypted and verified by checking the SHA-256 value. From the user’s standpoint, this is practically the same as using an application or a website password.</p> +<h3><a class="anchor" href="#unencrypted-messages" id="unencrypted-messages" name="unencrypted-messages"><i class="anchor-icon"></i></a>Unencrypted Messages</h3> +<p>Special plain-text messages may be used to create an authorization key as well as to perform a time synchronization. They begin with auth_key_id = 0 (64 bits) which means that there is no auth_key. This is followed directly by the message body in serialized format without internal or external headers. A message identifier (64 bits) and body length in bytes (32 bytes) are added before the message body.</p> +<p>Only a very limited number of messages of special types can be transmitted as plain text. </p> +<h3><a class="anchor" href="#schematic-presentation-of-messages" id="schematic-presentation-of-messages" name="schematic-presentation-of-messages"><i class="anchor-icon"></i></a>Schematic Presentation of Messages</h3> +<h4><a class="anchor" href="#encrypted-message" id="encrypted-message" name="encrypted-message"><i class="anchor-icon"></i></a>Encrypted Message</h4> +<table class="table"><tr> +<td><a href="#key-identifier-auth-key-id"><strong>auth_key_id</strong></a><br>int64</td> +<td><a href="#message-key-msg-key"><strong>msg_key</strong></a><br>int128</td> +<td><a href="#encrypted-message-encrypted-data"><strong>encrypted_data</strong></a><br>bytes</td> +</tr></table> +<h4><a class="anchor" href="#encrypted-message-encrypted-data" id="encrypted-message-encrypted-data" name="encrypted-message-encrypted-data"><i class="anchor-icon"></i></a>Encrypted Message: <em>encrypted_data</em></h4> +<p>Contains the cypher text for the following data:</p> +<table class="table"><tr> +<td><a href="#server-salt"><strong>salt</strong></a><br>int64</td> +<td><a href="#session"><strong>session_id</strong></a><br>int64</td> +<td><a href="#message-identifier-msg-id"><strong>message_id</strong></a><br>int64</td> +<td><a href="#message-sequence-number-msg-seqno"><strong>seq_no</strong></a><br>int32</td> +<td><strong>message_data_length</strong><br>int32</td> +<td><strong>message_data</strong><br>bytes</td> +<td><strong>padding</strong>12..1024<br>bytes</td> +</tr></table> +<h4><a class="anchor" href="#unencrypted-message" id="unencrypted-message" name="unencrypted-message"><i class="anchor-icon"></i></a>Unencrypted Message</h4> +<table class="table"><tr> +<td><a href="#key-identifier-auth-key-id"><strong>auth_key_id</strong></a> = <code>0</code><br>int64</td> +<td><a href="#message-identifier-msg-id"><strong>message_id</strong></a><br>int64</td> +<td><strong>message_data_length</strong><br>int32</td> +<td><strong>message_data</strong><br>bytes</td> +</tr></table> +<p><strong>MTProto 2.0 uses 12..1024 padding bytes, instead of the 0..15 used in MTProto 1.0</strong></p> +<h3><a class="anchor" href="#creating-an-authorization-key" id="creating-an-authorization-key" name="creating-an-authorization-key"><i class="anchor-icon"></i></a>Creating an Authorization Key</h3> +<p>An authorization key is normally created once for every user during the application installation process immediately prior to registration. Registration itself, in actuality, occurs after the authorization key is created. However, a user may be prompted to complete the registration form while the authorization key is being generated in the background. Intervals between user key strokes may be used as a source of entropy in the generation of high-quality random numbers required for the creation of an authorization key.</p> +<p>See <a href="/mtproto/auth_key">Creating an Authorization Key</a>.</p> +<p>During the creation of the authorization key, the client obtains its server salt (to be used with the new key for all communication in the near future). The client then creates an encrypted session using the newly generated key, and subsequent communication occurs within that session (including the transmission of the user's registration information and phone number validation) unless the client creates a new session. The client is free to create new or additional sessions at any time by choosing a new random session_id.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/mtproto/samples-auth_key.html b/data/corefork.telegram.org/mtproto/samples-auth_key.html new file mode 100644 index 0000000000..54ce6ab2ee --- /dev/null +++ b/data/corefork.telegram.org/mtproto/samples-auth_key.html @@ -0,0 +1,748 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>samples-auth_key</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="In the examples below, the transport headers are omitted: +For example, for an abridged version of the transport the client…"> + <meta property="og:title" content="samples-auth_key"> + <meta property="og:image" content="71a15765997de28d38"> + <meta property="og:description" content="In the examples below, the transport headers are omitted: +For example, for an abridged version of the transport the client…"> + <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?215" 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/samples-auth_key" >samples-auth_key</a></li></ul></div> + <h1 id="dev_page_title">samples-auth_key</h1> + + <div id="dev_page_content"><p>In the examples below, the <a href="/mtproto#transport">transport</a> headers are omitted:</p> +<blockquote> +<p>For example, for an abridged version of the transport the client sends <code>0xef</code> as the first byte (<strong>important:</strong> only prior to the very first data packet), then packet length is encoded by a single byte (<code>0x01-0x7e</code> = data length divided by 4; or <code>0x7f</code> followed by 3 bytes (little endian) divided by 4) followed by the data themselves. In this case, server responses have the same form (although the server does not send <code>0xef</code>as the first byte).</p> +</blockquote> +<p>Detailed documentation on creating authorization keys is available <a href="/mtproto/auth_key">here »</a>.</p> +<h4><a class="anchor" href="#1-request-for-pq-authorization" id="1-request-for-pq-authorization" name="1-request-for-pq-authorization"><i class="anchor-icon"></i></a>1. Request for (p,q) Authorization</h4> +<pre><code>req_pq#60469778 nonce:int128 = ResPQ</code></pre> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Offset, Length in bytes</th> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>auth_key_id</td> +<td>0, 8</td> +<td><code>0</code></td> +<td>Since message is in plain text</td> +</tr> +<tr> +<td>message_id</td> +<td>8, 8</td> +<td><code>51e57ac42770964a</code></td> +<td>Exact unixtime * 2^32</td> +</tr> +<tr> +<td>message_length</td> +<td>16, 4</td> +<td><code>20</code></td> +<td>Message body length</td> +</tr> +<tr> +<td>%(req_pq)</td> +<td>20, 4</td> +<td><code>60469778</code></td> +<td>req_pq constructor number from TL schema</td> +</tr> +<tr> +<td>nonce</td> +<td>24, 16</td> +<td><code>3E0549828CCA27E966B301A48FECE2FC</code></td> +<td>Random number</td> +</tr> +</tbody> +</table> +<p>The header is 20 bytes long, the message body is 20 bytes long, and the entire message is 40 bytes in length.</p> +<pre><code>0000 | 00 00 00 00 00 00 00 00 4A 96 70 27 C4 7A E5 51 +0010 | 14 00 00 00 78 97 46 60 3E 05 49 82 8C CA 27 E9 +0020 | 66 B3 01 A4 8F EC E2 FC</code></pre> +<h4><a class="anchor" href="#2-a-response-from-the-server-has-been-received-with-the-following-content" id="2-a-response-from-the-server-has-been-received-with-the-following-content" name="2-a-response-from-the-server-has-been-received-with-the-following-content"><i class="anchor-icon"></i></a>2. A response from the server has been received with the following content:</h4> +<pre><code>0000 | 00 00 00 00 00 00 00 00 01 C8 83 1E C9 7A E5 51 +0010 | 40 00 00 00 63 24 16 05 3E 05 49 82 8C CA 27 E9 +0020 | 66 B3 01 A4 8F EC E2 FC A5 CF 4D 33 F4 A1 1E A8 +0030 | 77 BA 4A A5 73 90 73 30 08 17 ED 48 94 1A 08 F9 +0040 | 81 00 00 00 15 C4 B5 1C 01 00 00 00 21 6B E8 6C +0050 | 02 2B B4 C3</code></pre> +<h5><a class="anchor" href="#response-decomposition-using-the-following-formula" id="response-decomposition-using-the-following-formula" name="response-decomposition-using-the-following-formula"><i class="anchor-icon"></i></a>Response decomposition using the following formula:</h5> +<pre><code>resPQ#05162463 nonce:int128 server_nonce:int128 pq:string server_public_key_fingerprints:Vector long = ResPQ </code></pre> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Offset, Length in bytes</th> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>auth_key_id</td> +<td>0, 8</td> +<td><code>0</code></td> +<td>Since message is in plain text</td> +</tr> +<tr> +<td>message_id</td> +<td>8, 8</td> +<td><code>51E57AC91E83C801</code></td> +<td>Server message ID</td> +</tr> +<tr> +<td>message_length</td> +<td>16, 4</td> +<td><code>64</code></td> +<td>Message body length</td> +</tr> +<tr> +<td>%(resPQ)</td> +<td>20, 4</td> +<td><code>05162463</code></td> +<td>resPQ constructor number from TL schema</td> +</tr> +<tr> +<td>nonce</td> +<td>24, 16</td> +<td><code>3E0549828CCA27E966B301A48FECE2FC</code></td> +<td>Value generated by client in Step 1</td> +</tr> +<tr> +<td>server_nonce</td> +<td>40, 16</td> +<td><code>A5CF4D33F4A11EA877BA4AA573907330</code></td> +<td>Server-generated random number</td> +</tr> +<tr> +<td>pq</td> +<td>56, 12</td> +<td><code>17ED48941A08F981</code></td> +<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td> +</tr> +<tr> +<td>%(Vector long)</td> +<td>68, 4</td> +<td><code>1cb5c415</code></td> +<td><em>Vector long</em> constructor number from TL schema</td> +</tr> +<tr> +<td>count</td> +<td>72, 4</td> +<td><code>1</code></td> +<td>Number of elements in key fingerprint list</td> +</tr> +<tr> +<td>fingerprints[]</td> +<td>76, 8</td> +<td><code>c3b42b026ce86b21</code></td> +<td>64 lower-order bits of SHA1 (server_public_key)</td> +</tr> +</tbody> +</table> +<p>The <strong>server_public_key</strong> public key has been selected whose fingerprint corresponds to the only one received from the server: <code>c3b42b026ce86b21</code>.</p> +<h4><a class="anchor" href="#3-pq--17ed48941a08f981-decomposed-into-2-prime-cofactors" id="3-pq--17ed48941a08f981-decomposed-into-2-prime-cofactors" name="3-pq--17ed48941a08f981-decomposed-into-2-prime-cofactors"><i class="anchor-icon"></i></a>3. Pq = 17ED48941A08F981 decomposed into 2 prime cofactors:</h4> +<pre><code>p = 494C553B +q = 53911073</code></pre> +<h4><a class="anchor" href="#4-encrypted-data-generation" id="4-encrypted-data-generation" name="4-encrypted-data-generation"><i class="anchor-icon"></i></a>4. encrypted_data Generation</h4> +<pre><code>p_q_inner_data#83c95aec pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 = P_Q_inner_data</code></pre> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Offset, Length in bytes</th> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>%(p_q_inner_data)</td> +<td>0, 4</td> +<td><code>83c95aec</code></td> +<td>p_q_inner_data constructor number from TL schema</td> +</tr> +<tr> +<td>pq</td> +<td>4, 12</td> +<td><code>17ED48941A08F981</code></td> +<td>Single-byte prefix denoting length, 8-byte string, and three bytes of padding</td> +</tr> +<tr> +<td>p</td> +<td>16, 8</td> +<td><code>494C553B</code></td> +<td>First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td> +</tr> +<tr> +<td>q</td> +<td>24, 8</td> +<td><code>53911073</code></td> +<td>Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td> +</tr> +<tr> +<td>nonce</td> +<td>32, 16</td> +<td><code>3E0549828CCA27E966B301A48FECE2FC</code></td> +<td>Value generated by client in Step 1</td> +</tr> +<tr> +<td>server_nonce</td> +<td>48, 16</td> +<td><code>A5CF4D33F4A11EA877BA4AA573907330</code></td> +<td>Value received from server in Step 2</td> +</tr> +<tr> +<td>new_nonce</td> +<td>64, 32</td> +<td><code>311C85DB234AA2640AFC4A76A735CF5B</code> <code>1F0FD68BD17FA181E1229AD867CC024D</code></td> +<td>Client-generated random number</td> +</tr> +</tbody> +</table> +<p>The serialization of <em>P_Q_inner_data</em> produces some string <strong>data</strong>. This is followed by <strong>encrypted_data</strong>:</p> +<pre><code>SHA1 (data) = DB761C27718A2305044F71F2AD951629D78B2449 +RSA (data_with_hash, server_public_key) = 7BB0100A523161904D9C69FA04BC60DECFC5DD74B99995C768EB60D8716E2109BAF2D4601DAB6B09610DC11067BB89021E09471FCFA52DBD0F23204AD8CA8B012BF40A112F44695AB6C266955386114EF5211E6372227ADBD34995D3E0E5FF02EC63A43F9926878962F7C570E6A6E78BF8366AF917A5272675C46064BE62E3E202EFA8B1ADFB1C32A898C2987BE27B5F31D57C9BB963ABCB734B16F652CEDB4293CBB7C878A3A3FFAC9DBEA9DF7C67BC9E9508E111C78FC46E057F5C65ADE381D91FEE430A6B576A99BDF8551FDB1BE2B57069B1A45730618F27427E8A04720B4971EF4A9215983D68F2830C3EAA6E40385562F970D38A05C9F1246DC33438E6</code></pre> +<p>The length of the final string was 256 bytes.</p> +<h5><a class="anchor" href="#request-to-start-diffie-hellman-key-exchange" id="request-to-start-diffie-hellman-key-exchange" name="request-to-start-diffie-hellman-key-exchange"><i class="anchor-icon"></i></a>Request to Start Diffie-Hellman Key Exchange</h5> +<pre><code>req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params</code></pre> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Offset, Length in bytes</th> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>auth_key_id</td> +<td>0, 8</td> +<td><code>0</code></td> +<td>Since message is in plain text</td> +</tr> +<tr> +<td>message_id</td> +<td>8, 8</td> +<td><code>51e57ac917717a27</code></td> +<td>Exact unixtime * 2^32</td> +</tr> +<tr> +<td>message_length</td> +<td>16, 4</td> +<td><code>320</code></td> +<td>Message body length</td> +</tr> +<tr> +<td>%(req_DH_params)</td> +<td>20, 4</td> +<td><code>d712e4be</code></td> +<td>req_DH_params constructor number from TL schema</td> +</tr> +<tr> +<td>nonce</td> +<td>24, 16</td> +<td><code>3E0549828CCA27E966B301A48FECE2FC</code></td> +<td>Value generated by client in Step 1</td> +</tr> +<tr> +<td>server_nonce</td> +<td>40, 16</td> +<td><code>A5CF4D33F4A11EA877BA4AA573907330</code></td> +<td>Value received from server in Step 2</td> +</tr> +<tr> +<td>p</td> +<td>56, 8</td> +<td><code>494C553B</code></td> +<td>First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td> +</tr> +<tr> +<td>q</td> +<td>64, 8</td> +<td><code>53911073</code></td> +<td>Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td> +</tr> +<tr> +<td>public_key_fingerprint</td> +<td>72, 8</td> +<td><code>c3b42b026ce86b21</code></td> +<td>Fingerprint of public key used</td> +</tr> +<tr> +<td>encrypted_data</td> +<td>80, 260</td> +<td>See above</td> +<td>See <a href="#4-generatsiya-encrypted-data">“Generation of encrypted_data"</a></td> +</tr> +</tbody> +</table> +<pre><code>0000 | 00 00 00 00 00 00 00 00 27 7A 71 17 C9 7A E5 51 +0010 | 40 01 00 00 BE E4 12 D7 3E 05 49 82 8C CA 27 E9 +0020 | 66 B3 01 A4 8F EC E2 FC A5 CF 4D 33 F4 A1 1E A8 +0030 | 77 BA 4A A5 73 90 73 30 04 49 4C 55 3B 00 00 00 +0040 | 04 53 91 10 73 00 00 00 21 6B E8 6C 02 2B B4 C3 +0050 | FE 00 01 00 7B B0 10 0A 52 31 61 90 4D 9C 69 FA +0060 | 04 BC 60 DE CF C5 DD 74 B9 99 95 C7 68 EB 60 D8 +0070 | 71 6E 21 09 BA F2 D4 60 1D AB 6B 09 61 0D C1 10 +0080 | 67 BB 89 02 1E 09 47 1F CF A5 2D BD 0F 23 20 4A +0090 | D8 CA 8B 01 2B F4 0A 11 2F 44 69 5A B6 C2 66 95 +00A0 | 53 86 11 4E F5 21 1E 63 72 22 7A DB D3 49 95 D3 +00B0 | E0 E5 FF 02 EC 63 A4 3F 99 26 87 89 62 F7 C5 70 +00C0 | E6 A6 E7 8B F8 36 6A F9 17 A5 27 26 75 C4 60 64 +00D0 | BE 62 E3 E2 02 EF A8 B1 AD FB 1C 32 A8 98 C2 98 +00E0 | 7B E2 7B 5F 31 D5 7C 9B B9 63 AB CB 73 4B 16 F6 +00F0 | 52 CE DB 42 93 CB B7 C8 78 A3 A3 FF AC 9D BE A9 +0100 | DF 7C 67 BC 9E 95 08 E1 11 C7 8F C4 6E 05 7F 5C +0110 | 65 AD E3 81 D9 1F EE 43 0A 6B 57 6A 99 BD F8 55 +0120 | 1F DB 1B E2 B5 70 69 B1 A4 57 30 61 8F 27 42 7E +0130 | 8A 04 72 0B 49 71 EF 4A 92 15 98 3D 68 F2 83 0C +0140 | 3E AA 6E 40 38 55 62 F9 70 D3 8A 05 C9 F1 24 6D +0150 | C3 34 38 E6</code></pre> +<h4><a class="anchor" href="#5-a-response-from-the-server-has-been-received-with-the-following-content" id="5-a-response-from-the-server-has-been-received-with-the-following-content" name="5-a-response-from-the-server-has-been-received-with-the-following-content"><i class="anchor-icon"></i></a>5. A response from the server has been received with the following content:</h4> +<pre><code>0000 | 00 00 00 00 00 00 00 00 01 54 43 36 CB 7A E5 51 +0010 | 78 02 00 00 5C 07 E8 D0 3E 05 49 82 8C CA 27 E9 +0020 | 66 B3 01 A4 8F EC E2 FC A5 CF 4D 33 F4 A1 1E A8 +0030 | 77 BA 4A A5 73 90 73 30 FE 50 02 00 28 A9 2F E2 +0040 | 01 73 B3 47 A8 BB 32 4B 5F AB 26 67 C9 A8 BB CE +0050 | 64 68 D5 B5 09 A4 CB DD C1 86 24 0A C9 12 CF 70 +0060 | 06 AF 89 26 DE 60 6A 2E 74 C0 49 3C AA 57 74 1E +0070 | 6C 82 45 1F 54 D3 E0 68 F5 CC C4 9B 44 44 12 4B +0080 | 96 66 FF B4 05 AA B5 64 A3 D0 1E 67 F6 E9 12 86 +0090 | 7C 8D 20 D9 88 27 07 DC 33 0B 17 B4 E0 DD 57 CB +00A0 | 53 BF AA FA 9E F5 BE 76 AE 6C 1B 9B 6C 51 E2 D6 +00B0 | 50 2A 47 C8 83 09 5C 46 C8 1E 3B E2 5F 62 42 7B +00C0 | 58 54 88 BB 3B F2 39 21 3B F4 8E B8 FE 34 C9 A0 +00D0 | 26 CC 84 13 93 40 43 97 4D B0 35 56 63 30 38 39 +00E0 | 2C EC B5 1F 94 82 4E 14 0B 98 63 77 30 A4 BE 79 +00F0 | A8 F9 DA FA 39 BA E8 1E 10 95 84 9E A4 C8 34 67 +0100 | C9 2A 3A 17 D9 97 81 7C 8A 7A C6 1C 3F F4 14 DA +0110 | 37 B7 D6 6E 94 9C 0A EC 85 8F 04 82 24 21 0F CC +0120 | 61 F1 1C 3A 91 0B 43 1C CB D1 04 CC CC 8D C6 D2 +0130 | 9D 4A 5D 13 3B E6 39 A4 C3 2B BF F1 53 E6 3A CA +0140 | 3A C5 2F 2E 47 09 B8 AE 01 84 4B 14 2C 1E E8 9D +0150 | 07 5D 64 F6 9A 39 9F EB 04 E6 56 FE 36 75 A6 F8 +0160 | F4 12 07 8F 3D 0B 58 DA 15 31 1C 1A 9F 8E 53 B3 +0170 | CD 6B B5 57 2C 29 49 04 B7 26 D0 BE 33 7E 2E 21 +0180 | 97 7D A2 6D D6 E3 32 70 25 1C 2C A2 9D FC C7 02 +0190 | 27 F0 75 5F 84 CF DA 9A C4 B8 DD 5F 84 F1 D1 EB +01A0 | 36 BA 45 CD DC 70 44 4D 8C 21 3E 4B D8 F6 3B 8A +01B0 | B9 5A 2D 0B 41 80 DC 91 28 3D C0 63 AC FB 92 D6 +01C0 | A4 E4 07 CD E7 C8 C6 96 89 F7 7A 00 74 41 D4 A6 +01D0 | A8 38 4B 66 65 02 D9 B7 7F C6 8B 5B 43 CC 60 7E +01E0 | 60 A1 46 22 3E 11 0F CB 43 BC 3C 94 2E F9 81 93 +01F0 | 0C DC 4A 1D 31 0C 0B 64 D5 E5 5D 30 8D 86 32 51 +0200 | AB 90 50 2C 3E 46 CC 59 9E 88 6A 92 7C DA 96 3B +0210 | 9E B1 6C E6 26 03 B6 85 29 EE 98 F9 F5 20 64 19 +0220 | E0 3F B4 58 EC 4B D9 45 4A A8 F6 BA 77 75 73 CC +0230 | 54 B3 28 89 5B 1D F2 5E AD 9F B4 CD 51 98 EE 02 +0240 | 2B 2B 81 F3 88 D2 81 D5 E5 BC 58 01 07 CA 01 A5 +0250 | 06 65 C3 2B 55 27 15 F3 35 FD 76 26 4F AD 00 DD +0260 | D5 AE 45 B9 48 32 AC 79 CE 7C 51 1D 19 4B C4 2B +0270 | 70 EF A8 50 BB 15 C2 01 2C 52 15 CA BF E9 7C E6 +0280 | 6B 8D 87 34 D0 EE 75 9A 63 8A F0 13</code></pre> +<h5><a class="anchor" href="#response-decomposition-using-the-following-formula" id="response-decomposition-using-the-following-formula" name="response-decomposition-using-the-following-formula"><i class="anchor-icon"></i></a>Response decomposition using the following formula:</h5> +<pre><code>server_DH_params_fail#79cb045d nonce:int128 server_nonce:int128 new_nonce_hash:int128 = Server_DH_Params; +server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;</code></pre> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Offset, Length in bytes</th> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>auth_key_id</td> +<td>0, 8</td> +<td><code>0</code></td> +<td>Since message is in plain text</td> +</tr> +<tr> +<td>message_id</td> +<td>8, 8</td> +<td><code>51E57ACB36435401</code></td> +<td>Exact unixtime * 2^32</td> +</tr> +<tr> +<td>message_length</td> +<td>16, 4</td> +<td><code>632</code></td> +<td>Message body length</td> +</tr> +<tr> +<td>%(server_DH_params_ok)</td> +<td>20, 4</td> +<td><code>d0e8075c</code></td> +<td>server_DH_params_ok constructor number from TL schema</td> +</tr> +<tr> +<td>nonce</td> +<td>24, 16</td> +<td><code>3E0549828CCA27E966B301A48FECE2FC</code></td> +<td>Value generated by client in Step 1</td> +</tr> +<tr> +<td>server_nonce</td> +<td>40, 16</td> +<td><code>A5CF4D33F4A11EA877BA4AA573907330</code></td> +<td>Value received from server in Step 2</td> +</tr> +<tr> +<td>encrypted_answer</td> +<td>56, 596</td> +<td>See below</td> +<td>See <a href="#conversion-of-encrypted_answer-into-answer">“Decomposition of encrypted_answer"</a></td> +</tr> +</tbody> +</table> +<h5><a class="anchor" href="#conversion-of-encrypted-answer-into-answer" id="conversion-of-encrypted-answer-into-answer" name="conversion-of-encrypted-answer-into-answer"><i class="anchor-icon"></i></a>Conversion of encrypted_answer into <strong>answer</strong>:</h5> +<pre><code>encrypted_answer = 28A92FE20173B347A8BB324B5FAB2667C9A8BBCE6468D5B509A4CBDDC186240AC912CF7006AF8926DE606A2E74C0493CAA57741E6C82451F54D3E068F5CCC49B4444124B9666FFB405AAB564A3D01E67F6E912867C8D20D9882707DC330B17B4E0DD57CB53BFAAFA9EF5BE76AE6C1B9B6C51E2D6502A47C883095C46C81E3BE25F62427B585488BB3BF239213BF48EB8FE34C9A026CC8413934043974DB03556633038392CECB51F94824E140B98637730A4BE79A8F9DAFA39BAE81E1095849EA4C83467C92A3A17D997817C8A7AC61C3FF414DA37B7D66E949C0AEC858F048224210FCC61F11C3A910B431CCBD104CCCC8DC6D29D4A5D133BE639A4C32BBFF153E63ACA3AC52F2E4709B8AE01844B142C1EE89D075D64F69A399FEB04E656FE3675A6F8F412078F3D0B58DA15311C1A9F8E53B3CD6BB5572C294904B726D0BE337E2E21977DA26DD6E33270251C2CA29DFCC70227F0755F84CFDA9AC4B8DD5F84F1D1EB36BA45CDDC70444D8C213E4BD8F63B8AB95A2D0B4180DC91283DC063ACFB92D6A4E407CDE7C8C69689F77A007441D4A6A8384B666502D9B77FC68B5B43CC607E60A146223E110FCB43BC3C942EF981930CDC4A1D310C0B64D5E55D308D863251AB90502C3E46CC599E886A927CDA963B9EB16CE62603B68529EE98F9F5206419E03FB458EC4BD9454AA8F6BA777573CC54B328895B1DF25EAD9FB4CD5198EE022B2B81F388D281D5E5BC580107CA01A50665C32B552715F335FD76264FAD00DDD5AE45B94832AC79CE7C511D194BC42B70EFA850BB15C2012C5215CABFE97CE66B8D8734D0EE759A638AF013 +tmp_aes_key = F011280887C7BB01DF0FC4E17830E0B91FBB8BE4B2267CB985AE25F33B527253 +tmp_aes_iv = 3212D579EE35452ED23E0D0C92841AA7D31B2E9BDEF2151E80D15860311C85DB +answer = BA0D89B53E0549828CCA27E966B301A48FECE2FCA5CF4D33F4A11EA877BA4AA57390733002000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE000100262AABA621CC4DF587DC94CF8252258C0B9337DFB47545A49CDD5C9B8EAE7236C6CADC40B24E88590F1CC2CC762EBF1CF11DCC0B393CAAD6CEE4EE5848001C73ACBB1D127E4CB93072AA3D1C8151B6FB6AA6124B7CD782EAF981BDCFCE9D7A00E423BD9D194E8AF78EF6501F415522E44522281C79D906DDB79C72E9C63D83FB2A940FF779DFB5F2FD786FB4AD71C9F08CF48758E534E9815F634F1E3A80A5E1C2AF210C5AB762755AD4B2126DFA61A77FA9DA967D65DFD0AFB5CDF26C4D4E1A88B180F4E0D0B45BA1484F95CB2712B50BF3F5968D9D55C99C0FB9FB67BFF56D7D4481B634514FBA3488C4CDA2FC0659990E8E868B28632875A9AA703BCDCE8FCB7AE551</code></pre> +<h5><a class="anchor" href="#server-dh-inner-data-decomposition-using-the-following-formula" id="server-dh-inner-data-decomposition-using-the-following-formula" name="server-dh-inner-data-decomposition-using-the-following-formula"><i class="anchor-icon"></i></a>Server_DH_inner_data decomposition using the following formula:</h5> +<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Offset, Length in bytes</th> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>%(server_DH_inner_data)</td> +<td>0, 4</td> +<td><code>b5890dba</code></td> +<td>server_DH_inner_data constructor number from TL schema</td> +</tr> +<tr> +<td>nonce</td> +<td>4, 16</td> +<td><code>3E0549828CCA27E966B301A48FECE2FC</code></td> +<td>Value generated by client in Step 1</td> +</tr> +<tr> +<td>server_nonce</td> +<td>20, 16</td> +<td><code>A5CF4D33F4A11EA877BA4AA573907330</code></td> +<td>Value received from server in Step 2</td> +</tr> +<tr> +<td>g</td> +<td>36, 4</td> +<td><code>2</code></td> +<td>Value received from server in Step 2</td> +</tr> +<tr> +<td>dh_prime</td> +<td>40, 260</td> +<td><code>C71CAEB9C6B1C9048E6C522F70F13F73</code> <code>980D40238E3E21C14934D037563D930F</code> <code>48198A0AA7C14058229493D22530F4DB</code> <code>FA336F6E0AC925139543AED44CCE7C37</code> <code>20FD51F69458705AC68CD4FE6B6B13AB</code> <code>DC9746512969328454F18FAF8C595F64</code> <code>2477FE96BB2A941D5BCD1D4AC8CC4988</code> <code>0708FA9B378E3C4F3A9060BEE67CF9A4</code> <code>A4A695811051907E162753B56B0F6B41</code> <code>0DBA74D8A84B2A14B3144E0EF1284754</code> <code>FD17ED950D5965B4B9DD46582DB1178D</code> <code>169C6BC465B0D6FF9CA3928FEF5B9AE4</code> <code>E418FC15E83EBEA0F87FA9FF5EED7005</code> <code>0DED2849F47BF959D956850CE929851F</code> <code>0D8115F635B105EE2E4E15D04B2454BF</code> <code>6F4FADF034B10403119CD8E3B92FCC5B</code></td> +</tr> +<tr> +<td>g_a</td> +<td>300, 260</td> +<td><code>262AABA621CC4DF587DC94CF8252258C</code> <code>0B9337DFB47545A49CDD5C9B8EAE7236</code> <code>C6CADC40B24E88590F1CC2CC762EBF1C</code> <code>F11DCC0B393CAAD6CEE4EE5848001C73</code> <code>ACBB1D127E4CB93072AA3D1C8151B6FB</code> <code>6AA6124B7CD782EAF981BDCFCE9D7A00</code> <code>E423BD9D194E8AF78EF6501F415522E4</code> <code>4522281C79D906DDB79C72E9C63D83FB</code> <code>2A940FF779DFB5F2FD786FB4AD71C9F0</code> <code>8CF48758E534E9815F634F1E3A80A5E1</code> <code>C2AF210C5AB762755AD4B2126DFA61A7</code> <code>7FA9DA967D65DFD0AFB5CDF26C4D4E1A</code> <code>88B180F4E0D0B45BA1484F95CB2712B5</code> <code>0BF3F5968D9D55C99C0FB9FB67BFF56D</code> <code>7D4481B634514FBA3488C4CDA2FC0659</code> <code>990E8E868B28632875A9AA703BCDCE8F</code></td> +</tr> +<tr> +<td>server_time</td> +<td>560, 4</td> +<td><code>1373993675</code></td> +<td>Server time</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#6-random-number-b-is-computed" id="6-random-number-b-is-computed" name="6-random-number-b-is-computed"><i class="anchor-icon"></i></a>6. Random number b is computed:</h4> +<pre><code>b = 6F620AFA575C9233EB4C014110A7BCAF49464F798A18A0981FEA1E05E8DA67D9681E0FD6DF0EDF0272AE3492451A84502F2EFC0DA18741A5FB80BD82296919A70FAA6D07CBBBCA2037EA7D3E327B61D585ED3373EE0553A91CBD29B01FA9A89D479CA53D57BDE3A76FBD922A923A0A38B922C1D0701F53FF52D7EA9217080163A64901E766EB6A0F20BC391B64B9D1DD2CD13A7D0C946A3A7DF8CEC9E2236446F646C42CFE2B60A2A8D776E56C8D7519B08B88ED0970E10D12A8C9E355D765F2B7BBB7B4CA9360083435523CB0D57D2B106FD14F94B4EEE79D8AC131CA56AD389C84FE279716F8124A543337FB9EA3D988EC5FA63D90A4BA3970E7A39E5C0DE5</code></pre> +<h5><a class="anchor" href="#generation-of-encrypted-data" id="generation-of-encrypted-data" name="generation-of-encrypted-data"><i class="anchor-icon"></i></a>Generation of encrypted_data</h5> +<pre><code>client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data</code></pre> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Offset, Length in bytes</th> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>%(client_DH_inner_data)</td> +<td>0, 4</td> +<td><code>6643b654</code></td> +<td>client_DH_inner_data constructor number from TL schema</td> +</tr> +<tr> +<td>nonce</td> +<td>4, 16</td> +<td><code>3E0549828CCA27E966B301A48FECE2FC</code></td> +<td>Value generated by client in Step 1</td> +</tr> +<tr> +<td>server_nonce</td> +<td>20, 16</td> +<td><code>A5CF4D33F4A11EA877BA4AA573907330</code></td> +<td>Value received from server in Step 2</td> +</tr> +<tr> +<td>retry_id</td> +<td>36, 8</td> +<td><code>0</code></td> +<td>First attempt</td> +</tr> +<tr> +<td>g_b</td> +<td>44, 260</td> +<td><code>73700E7BFC7AEEC828EB8E0DCC04D09A</code> <code>0DD56A1B4B35F72F0B55FCE7DB7EBB72</code> <code>D7C33C5D4AA59E1C74D09B01AE536B31</code> <code>8CFED436AFDB15FE9EB4C70D7F0CB14E</code> <code>46DBBDE9053A64304361EB358A9BB32E</code> <code>9D5C2843FE87248B89C3F066A7D5876D</code> <code>61657ACC52B0D81CD683B2A0FA93E8AD</code> <code>AB20377877F3BC3369BBF57B10F5B589</code> <code>E65A9C27490F30A0C70FFCFD3453F5B3</code> <code>79C1B9727A573CFFDCA8D23C721B135B</code> <code>92E529B1CDD2F7ABD4F34DAC4BE1EEAF</code> <code>60993DDE8ED45890E4F47C26F2C0B2E0</code> <code>37BB502739C8824F2A99E2B1E7E41658</code> <code>3417CC79A8807A4BDAC6A5E9805D4F61</code> <code>86C37D66F6988C9F9C752896F3D34D25</code> <code>529263FAF2670A09B2A59CE35264511F</code></td> +<td><code>g^b mod dh_prime</code></td> +</tr> +</tbody> +</table> +<p>The serialization of <em>Client_DH_Inner_Data</em> produces some string <strong>data</strong>. This is followed by <strong>encrypted_data</strong>:</p> +<pre><code>data_with_hash := SHA1(data) + data + (0-15 random bytes); such that the length be divisible by 16; +AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv) = 928A4957D0463B525C1CC48AABAA030A256BE5C746792C84CA4C5A0DF60AC799048D98A38A8480EDCF082214DFC79DCB9EE34E206513E2B3BC1504CFE6C9ADA46BF9A03CA74F192EAF8C278454ADABC795A566615462D31817382984039505F71CB33A41E2527A4B1AC05107872FED8E3ABCEE1518AE965B0ED3AED7F67479155BDA8E4C286B64CDF123EC748CF289B1DB02D1907B562DF462D8582BA6F0A3022DC2D3504D69D1BA48B677E3A830BFAFD67584C8AA24E1344A8904E305F9587C92EF964F0083F50F61EAB4A393EAA33C9270294AEDC7732891D4EA1599F52311D74469D2112F4EDF3F342E93C8E87E812DC3989BAECFE6740A46077524C75093F5A5405736DE8937BB6E42C9A0DCF22CA53227D462BCCC2CFE94B6FE86AB7FBFA395021F66661AF7C0024CA2986CA03F3476905407D1EA9C010B763258DB1AA2CC7826D91334EFC1FDC665B67FE45ED0</code></pre> +<p>The length of the final string was 336 bytes.</p> +<h5><a class="anchor" href="#request" id="request" name="request"><i class="anchor-icon"></i></a>Request</h5> +<pre><code>set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;</code></pre> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Offset, Length in bytes</th> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>auth_key_id</td> +<td>0, 8</td> +<td><code>0</code></td> +<td>Since message is in plain text</td> +</tr> +<tr> +<td>message_id</td> +<td>8, 8</td> +<td><code>51e57acd2aa32c6d</code></td> +<td>Exact unixtime * 2^32</td> +</tr> +<tr> +<td>message_length</td> +<td>16, 4</td> +<td><code>376</code></td> +<td>Message body length</td> +</tr> +<tr> +<td>%(set_client_DH_params)</td> +<td>20, 4</td> +<td><code>f5045f1f</code></td> +<td>set_client_DH_params constructor number from TL schema</td> +</tr> +<tr> +<td>nonce</td> +<td>24, 16</td> +<td><code>3E0549828CCA27E966B301A48FECE2FC</code></td> +<td>Value generated by client in Step 1</td> +</tr> +<tr> +<td>server_nonce</td> +<td>40, 16</td> +<td><code>A5CF4D33F4A11EA877BA4AA573907330</code></td> +<td>Value received from server in Step 2</td> +</tr> +<tr> +<td>encrypted_data</td> +<td>56, 340</td> +<td>See above</td> +<td>See <a href="#generatsiya-encrypted-data">“Generation of encrypted_data"</a></td> +</tr> +</tbody> +</table> +<pre><code>0000 | 00 00 00 00 00 00 00 00 6D 2C A3 2A CD 7A E5 51 +0010 | 78 01 00 00 1F 5F 04 F5 3E 05 49 82 8C CA 27 E9 +0020 | 66 B3 01 A4 8F EC E2 FC A5 CF 4D 33 F4 A1 1E A8 +0030 | 77 BA 4A A5 73 90 73 30 FE 50 01 00 92 8A 49 57 +0040 | D0 46 3B 52 5C 1C C4 8A AB AA 03 0A 25 6B E5 C7 +0050 | 46 79 2C 84 CA 4C 5A 0D F6 0A C7 99 04 8D 98 A3 +0060 | 8A 84 80 ED CF 08 22 14 DF C7 9D CB 9E E3 4E 20 +0070 | 65 13 E2 B3 BC 15 04 CF E6 C9 AD A4 6B F9 A0 3C +0080 | A7 4F 19 2E AF 8C 27 84 54 AD AB C7 95 A5 66 61 +0090 | 54 62 D3 18 17 38 29 84 03 95 05 F7 1C B3 3A 41 +00A0 | E2 52 7A 4B 1A C0 51 07 87 2F ED 8E 3A BC EE 15 +00B0 | 18 AE 96 5B 0E D3 AE D7 F6 74 79 15 5B DA 8E 4C +00C0 | 28 6B 64 CD F1 23 EC 74 8C F2 89 B1 DB 02 D1 90 +00D0 | 7B 56 2D F4 62 D8 58 2B A6 F0 A3 02 2D C2 D3 50 +00E0 | 4D 69 D1 BA 48 B6 77 E3 A8 30 BF AF D6 75 84 C8 +00F0 | AA 24 E1 34 4A 89 04 E3 05 F9 58 7C 92 EF 96 4F +0100 | 00 83 F5 0F 61 EA B4 A3 93 EA A3 3C 92 70 29 4A +0110 | ED C7 73 28 91 D4 EA 15 99 F5 23 11 D7 44 69 D2 +0120 | 11 2F 4E DF 3F 34 2E 93 C8 E8 7E 81 2D C3 98 9B +0130 | AE CF E6 74 0A 46 07 75 24 C7 50 93 F5 A5 40 57 +0140 | 36 DE 89 37 BB 6E 42 C9 A0 DC F2 2C A5 32 27 D4 +0150 | 62 BC CC 2C FE 94 B6 FE 86 AB 7F BF A3 95 02 1F +0160 | 66 66 1A F7 C0 02 4C A2 98 6C A0 3F 34 76 90 54 +0170 | 07 D1 EA 9C 01 0B 76 32 58 DB 1A A2 CC 78 26 D9 +0180 | 13 34 EF C1 FD C6 65 B6 7F E4 5E D0</code></pre> +<h4><a class="anchor" href="#7-computing-auth-key-using-formula-gab-mod-dh-prime" id="7-computing-auth-key-using-formula-gab-mod-dh-prime" name="7-computing-auth-key-using-formula-gab-mod-dh-prime"><i class="anchor-icon"></i></a>7. Computing auth_key using formula <code>g^{ab} mod dh_prime</code>:</h4> +<pre><code>auth_key = AB96E207C631300986F30EF97DF55E179E63C112675F0CE502EE76D74BBEE6CBD1E95772818881E9F2FF54BD52C258787474F6A7BEA61EABE49D1D01D55F64FC07BC31685716EC8FB46FEACF9502E42CFD6B9F45A08E90AA5C2B5933AC767CBE1CD50D8E64F89727CA4A1A5D32C0DB80A9FCDBDDD4F8D5A1E774198F1A4299F927C484FEEC395F29647E43C3243986F93609E23538C21871DF50E00070B3B6A8FA9BC15628E8B43FF977409A61CEEC5A21CF7DFB5A4CC28F5257BC30CD8F2FB92FBF21E28924065F50E0BBD5E11A420300E2C136B80E9826C6C5609B5371B7850AA628323B6422F3A94F6DFDE4C3DC1EA60F7E11EE63122B3F39CBD1A8430157</code></pre> +<h4><a class="anchor" href="#8-the-server-verifies-that-auth-key-hash-is-unique" id="8-the-server-verifies-that-auth-key-hash-is-unique" name="8-the-server-verifies-that-auth-key-hash-is-unique"><i class="anchor-icon"></i></a>8. The server verifies that auth_key_hash is unique.</h4> +<p>The key is unique.</p> +<h4><a class="anchor" href="#9-a-response-from-the-server-has-been-received-with-the-following-content" id="9-a-response-from-the-server-has-been-received-with-the-following-content" name="9-a-response-from-the-server-has-been-received-with-the-following-content"><i class="anchor-icon"></i></a>9. A response from the server has been received with the following content:</h4> +<pre><code>0000 | 00 00 00 00 00 00 00 00 01 30 AA C5 CE 7A E5 51 +0010 | 34 00 00 00 34 F7 CB 3B 3E 05 49 82 8C CA 27 E9 +0020 | 66 B3 01 A4 8F EC E2 FC A5 CF 4D 33 F4 A1 1E A8 +0030 | 77 BA 4A A5 73 90 73 30 CC EB C0 21 72 66 E1 ED +0040 | EC 7F B0 A0 EE D6 C2 20</code></pre> +<p>Set_client_DH_params_answer decomposition using the following formula:</p> +<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer; +dh_gen_retry#46dc1fb9 nonce:int128 server_nonce:int128 new_nonce_hash2:int128 = Set_client_DH_params_answer; +dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = Set_client_DH_params_answer;</code></pre> +<table class="table"> +<thead> +<tr> +<th>Parameter</th> +<th>Offset, Length in bytes</th> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>%(dh_gen_ok)</td> +<td>0, 4</td> +<td><code>3bcbf734</code></td> +<td>dh_gen_ok constructor number from TL schema</td> +</tr> +<tr> +<td>nonce</td> +<td>4, 16</td> +<td><code>3E0549828CCA27E966B301A48FECE2FC</code></td> +<td>Value generated by client in Step 1</td> +</tr> +<tr> +<td>server_nonce</td> +<td>20, 16</td> +<td><code>A5CF4D33F4A11EA877BA4AA573907330</code></td> +<td>Value received from server in Step 2</td> +</tr> +<tr> +<td>new_nonce_hash1</td> +<td>36, 16</td> +<td><code>CCEBC0217266E1EDEC7FB0A0EED6C220</code></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/mtproto/security_guidelines.html b/data/corefork.telegram.org/mtproto/security_guidelines.html new file mode 100644 index 0000000000..a4627d6170 --- /dev/null +++ b/data/corefork.telegram.org/mtproto/security_guidelines.html @@ -0,0 +1,177 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Security Guidelines for Client Developers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Important checks required in your client application."> + <meta property="og:title" content="Security Guidelines for Client Developers"> + <meta property="og:image" content="2d1fe58b932e5bef0d"> + <meta property="og:description" content="Important checks required in your client application."> + <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?215" 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/security_guidelines" >Security Guidelines for Client Developers</a></li></ul></div> + <h1 id="dev_page_title">Security Guidelines for Client Developers</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><strong>See also:</strong></p> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="/api/pfs">Perfect Forward Secrecy</a></li> +<li><a href="/api/end-to-end">Secret chats, end-to-end encryption</a></li> +<li><a href="/api/end-to-end/pfs">Perfect Forward Secrecy in Secret Chats</a></li> +<li><a href="/mtproto/description">MTProto 2.0, Detailed Description</a> +</div></li> +</ul> +<p>While <a href="/mtproto">MTProto</a> is designed to be a reasonably fast and secure protocol, its advantages can be easily negated by careless implementation. We collected some security guidelines for client software developers on this page. All Telegram clients are required to comply.</p> +<blockquote> +<p>Note that as of version 4.6, major Telegram clients are using <strong>MTProto 2.0</strong>. +MTProto v.1.0 is deprecated and is currently being phased out.</p> +</blockquote> +<h3><a class="anchor" href="#diffie-hellman-key-exchange" id="diffie-hellman-key-exchange" name="diffie-hellman-key-exchange"><i class="anchor-icon"></i></a>Diffie-Hellman key exchange</h3> +<p>We use DH key exchange in two cases:</p> +<ul> +<li><a href="/mtproto/auth_key">Creating an authorization key</a></li> +<li><a href="/api/end-to-end">Establishing Secret Chats with end-to-end encryption</a></li> +</ul> +<p>In both cases, there are some verifications to be done whenever DH is used:</p> +<h4><a class="anchor" href="#validation-of-dh-parameters" id="validation-of-dh-parameters" name="validation-of-dh-parameters"><i class="anchor-icon"></i></a>Validation of DH parameters</h4> +<p>Client is expected to check whether <strong>p = dh_prime</strong> is a safe 2048-bit prime (meaning that both <strong>p</strong> and <strong>(p-1)/2</strong> are prime, and that 2^2047 < p < 2^2048), and that <strong>g</strong> generates a cyclic subgroup of prime order <strong>(p-1)/2</strong>, i.e. is a quadratic residue <strong>mod p</strong>. Since <strong>g</strong> is always equal to 2, 3, 4, 5, 6 or 7, this is easily done using quadratic reciprocity law, yielding a simple condition on <strong>p mod 4g</strong> -- namely, <strong>p mod 8 = 7</strong> for <strong>g = 2</strong>; <strong>p mod 3 = 2</strong> for <strong>g = 3</strong>; no extra condition for <strong>g = 4</strong>; <strong>p mod 5 = 1 or 4</strong> for <strong>g = 5</strong>; <strong>p mod 24 = 19 or 23</strong> for <strong>g = 6</strong>; and <strong>p mod 7 = 3, 5 or 6</strong> for <strong>g = 7</strong>. After <strong>g</strong> and <strong>p</strong> have been checked by the client, it makes sense to cache the result, so as not to repeat lengthy computations in future.</p> +<p>If the verification takes too long (which is the case for older mobile devices), one might initially run only 15 Miller--Rabin iterations (use parameter 30 in Java) for verifying primeness of <strong>p</strong> and <strong>(p - 1)/2</strong> with error probability not exceeding one billionth, and do more iterations in the background later.</p> +<p>Another way to optimize this is to embed into the client application code a small table with some known "good" couples <strong>(g,p)</strong> (or just known safe primes <strong>p</strong>, since the condition on <strong>g</strong> is easily verified during execution), checked during code generation phase, so as to avoid doing such verification during runtime altogether. The server rarely changes these values, thus one usually needs to put the current value of server's <strong>dh_prime</strong> into such a table. For example, the current value of <strong>dh_prime</strong> equals (in big-endian byte order)</p> +<pre><code>C7 1C AE B9 C6 B1 C9 04 8E 6C 52 2F 70 F1 3F 73 98 0D 40 23 8E 3E 21 C1 49 34 D0 37 56 3D 93 0F 48 19 8A 0A A7 C1 40 58 22 94 93 D2 25 30 F4 DB FA 33 6F 6E 0A C9 25 13 95 43 AE D4 4C CE 7C 37 20 FD 51 F6 94 58 70 5A C6 8C D4 FE 6B 6B 13 AB DC 97 46 51 29 69 32 84 54 F1 8F AF 8C 59 5F 64 24 77 FE 96 BB 2A 94 1D 5B CD 1D 4A C8 CC 49 88 07 08 FA 9B 37 8E 3C 4F 3A 90 60 BE E6 7C F9 A4 A4 A6 95 81 10 51 90 7E 16 27 53 B5 6B 0F 6B 41 0D BA 74 D8 A8 4B 2A 14 B3 14 4E 0E F1 28 47 54 FD 17 ED 95 0D 59 65 B4 B9 DD 46 58 2D B1 17 8D 16 9C 6B C4 65 B0 D6 FF 9C A3 92 8F EF 5B 9A E4 E4 18 FC 15 E8 3E BE A0 F8 7F A9 FF 5E ED 70 05 0D ED 28 49 F4 7B F9 59 D9 56 85 0C E9 29 85 1F 0D 81 15 F6 35 B1 05 EE 2E 4E 15 D0 4B 24 54 BF 6F 4F AD F0 34 B1 04 03 11 9C D8 E3 B9 2F CC 5B</code></pre> +<h4><a class="anchor" href="#g-a-and-g-b-validation" id="g-a-and-g-b-validation" name="g-a-and-g-b-validation"><i class="anchor-icon"></i></a>g_a and g_b validation</h4> +<p>Apart from the conditions on the Diffie-Hellman prime <strong>dh_prime</strong> and generator <strong>g</strong>, both sides are to check that <strong>g</strong>, <strong>g_a</strong> and <strong>g_b</strong> are greater than <strong>1</strong> and less than <strong>dh_prime - 1</strong>. We recommend checking that <strong>g_a</strong> and <strong>g_b</strong> are between <strong>2^{2048-64}</strong> and <strong>dh_prime - 2^{2048-64}</strong> as well.</p> +<h4><a class="anchor" href="#checking-sha1-hash-values-during-key-generation" id="checking-sha1-hash-values-during-key-generation" name="checking-sha1-hash-values-during-key-generation"><i class="anchor-icon"></i></a>Checking SHA1 hash values during key generation</h4> +<p>Once the client receives a <code>server_DH_params_ok</code> answer in step 5) of the Authorization Key generation protocol and decrypts it obtaining <code>answer_with_hash</code>, it MUST check that </p> +<pre><code>answer_with_hash := SHA1(answer) + answer + (0-15 random bytes)</code></pre> +<p>In other words, the first 20 bytes of <code>answer_with_hash</code> must be equal to SHA1 of the remainder of the decrypted message without the padding random bytes.</p> +<h4><a class="anchor" href="#checking-nonce-server-nonce-and-new-nonce-fields" id="checking-nonce-server-nonce-and-new-nonce-fields" name="checking-nonce-server-nonce-and-new-nonce-fields"><i class="anchor-icon"></i></a>Checking nonce, server_nonce and new_nonce fields</h4> +<p>When the client receives and/or decrypts server messages during creation of Authorization Key, and these messages contain some nonce fields already known to the client from messages previously obtained during the same run of the protocol, the client is to check that these fields indeed contain the values previosly known.</p> +<h4><a class="anchor" href="#using-secure-pseudorandom-number-generator-to-create-dh-secret-parameters-a-and-b" id="using-secure-pseudorandom-number-generator-to-create-dh-secret-parameters-a-and-b" name="using-secure-pseudorandom-number-generator-to-create-dh-secret-parameters-a-and-b"><i class="anchor-icon"></i></a>Using secure pseudorandom number generator to create DH secret parameters <code>a</code> and <code>b</code></h4> +<p>Client must use a cryptographically secure PRNG to generate secret exponents <code>a</code> or <code>b</code> for DH key exchange. For secret chats, the client might request some entropy (random bytes) from the server while invoking <a href="/method/messages.getDhConfig">messages.getDhConfig</a> and feed these random bytes into its PRNG (for example, by <code>PRNG_seed</code> if OpenSSL library is used), but never using these "random" bytes by themselves or replacing by them the local PRNG seed. One should mix bytes received from server into local PRNG seed.</p> +<h3><a class="anchor" href="#mtproto-encrypted-messages" id="mtproto-encrypted-messages" name="mtproto-encrypted-messages"><i class="anchor-icon"></i></a>MTProto Encrypted Messages</h3> +<p>Some important checks are to be done while sending and especially receiving <a href="/mtproto/description">encrypted MTProto messages</a>.</p> +<h4><a class="anchor" href="#checking-sha256-hash-value-of-msg-key" id="checking-sha256-hash-value-of-msg-key" name="checking-sha256-hash-value-of-msg-key"><i class="anchor-icon"></i></a>Checking SHA256 hash value of msg_key</h4> +<p><code>msg_key</code> is used not only to compute the AES key and IV to decrypt the received message. After decryption, the client <strong>MUST</strong> check that <code>msg_key</code> is indeed equal to SHA256 of the plaintext obtained as the result of decryption (including the final 12...1024 padding bytes), prepended with 32 bytes taken from the <code>auth_key</code>, as explained in <a href="/mtproto/description#defining-aes-key-and-initialization-vector">MTProto 2.0 Description</a>.</p> +<p>If an error is encountered before this check could be performed, the client <strong>must</strong> perform the <code>msg_key</code> check anyway before returning any result. Note that the response to any error encountered before the <code>msg_key</code> check <strong>must</strong> be the same as the response to a failed <code>msg_key</code> check.</p> +<h4><a class="anchor" href="#checking-message-length" id="checking-message-length" name="checking-message-length"><i class="anchor-icon"></i></a>Checking message length</h4> +<p>The client <strong>must</strong> check that the length of the message or container obtained from the decrypted message (computed from its <code>length</code> field) does not exceed the total size of the plaintext, and that the difference (i.e. the length of the random padding) lies in the range from 12 to 1024 bytes.</p> +<p>The length should be always divisible by 4 and non-negative. On no account the client is to access data past the end of the decryption buffer containing the plaintext message.</p> +<h4><a class="anchor" href="#checking-session-id" id="checking-session-id" name="checking-session-id"><i class="anchor-icon"></i></a>Checking session_id</h4> +<p>The client is to check that the <code>session_id</code> field in the decrypted message indeed equals to that of an active session created by the client.</p> +<h4><a class="anchor" href="#checking-msg-id" id="checking-msg-id" name="checking-msg-id"><i class="anchor-icon"></i></a>Checking msg_id</h4> +<p>The client must check that <code>msg_id</code> has even parity for messages from client to server, and odd parity for messages from server to client.</p> +<p>In addition, the identifiers (msg_id) of the last N messages received from the other side must be stored, and if a message comes in with an msg_id lower than all or equal to any of the stored values, that message is to be ignored. Otherwise, the new message msg_id is added to the set, and, if the number of stored msg_id values is greater than N, the oldest (i. e. the lowest) is discarded.</p> +<p>In addition, msg_id values that belong over 30 seconds in the future or over 300 seconds in the past are to be ignored (recall that <code>msg_id</code> approximately equals unixtime * 2^32). This is especially important for the server. The client would also find this useful (to protect from a replay attack), but only if it is certain of its time (for example, if its time has been synchronized with that of the server).</p> +<p>Certain client-to-server service messages containing data sent by the client to the server (for example, <code>msg_id</code> of a recent client query) may, nonetheless, be processed on the client even if the time appears to be “incorrect”. This is especially true of messages to change server_salt and notifications about invalid time on the client. See <a href="/mtproto/service_messages">Mobile Protocol: Service Messages</a>.</p> +<h2><a class="anchor" href="#behavior-in-case-of-mismatch" id="behavior-in-case-of-mismatch" name="behavior-in-case-of-mismatch"><i class="anchor-icon"></i></a>Behavior in case of mismatch</h2> +<p>If one of the checks listed above fails, the client is to completely discard the message obtained from server. We also recommend closing and reestablishing the TCP connection to the server, then retrying the operation or the whole key generation protocol.</p> +<p>No information from incorrect messages can be used. Even if the application throws an exception and dies, this is much better than continuing with invalid data.</p> +<p>Notice that invalid messages will infrequently appear during normal work even if no malicious tampering is being done. This is due to network transmission errors. We recommend ignoring the invalid message and closing the TCP connection, then creating a new TCP connection to the server and retrying the original query.</p> +<blockquote> +<p>The previous version of security recommendations relevant for MTProto 1.0 clients is available <a href="/mtproto/security_guidelines_v1">here</a>.</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="//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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/mtproto/serialize.html b/data/corefork.telegram.org/mtproto/serialize.html new file mode 100644 index 0000000000..e2028a2386 --- /dev/null +++ b/data/corefork.telegram.org/mtproto/serialize.html @@ -0,0 +1,240 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Binary Data Serialization</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="MTProto operation requires that elementary and composite data types as well as queries to which such data types are passed…"> + <meta property="og:title" content="Binary Data Serialization"> + <meta property="og:image" content=""> + <meta property="og:description" content="MTProto operation requires that elementary and composite data types as well as queries to which such data types are passed…"> + <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?215" 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/serialize" >Binary Data Serialization</a></li></ul></div> + <h1 id="dev_page_title">Binary Data Serialization</h1> + + <div id="dev_page_content"><p>MTProto operation requires that elementary and composite data types as well as queries to which such data types are passed as arguments or by which they are returned, be transmitted in binary format (i. e. <em>serialized</em>) . +The <a href="/mtproto/TL">TL language</a> is used to describe the data types to be serialized.</p> +<h3><a class="anchor" href="#general-definitions" id="general-definitions" name="general-definitions"><i class="anchor-icon"></i></a>General Definitions</h3> +<p>For our purposes, we can identify a <em>type</em> with the set of its <em>(serialized) values</em> understood as strings (finite sequences) of 32-bit numbers (transmitted in little endian order). </p> +<p>Therefore:</p> +<ul> +<li><em>Alphabet</em> (A), in this case, is a set of 32-bit numbers (normally, signed, i. e. between -2^31 and 2^31 - 1). </li> +<li><em>Value</em>, in this case, is the same as a <em>string in Alphabet A</em>, i. e. a finite (possibly, empty) sequence of 32-bit numbers. The set of all such sequences is designated as <em>A*</em>. </li> +<li><em>Type</em>, for our purposes, is the same as the set of legal values of a type, i. e. some set T which is a subset of A* and is a prefix code (i. e. no element of T may be a prefix for any other element). Therefore, any sequence from A* can contain no more than one prefix that is a member of T. </li> +<li><em>Value of Type T</em> is any sequence (value) which is a member of T as a subset of A*. </li> +<li><em>Compatible Types</em> are the types T and T’ not intersecting as subsets of A*, such that the union of T and T' is a prefix code. </li> +<li><em>Coordinated System of Types</em> is a finite or infinite set of types T_1, ..., T_n, ..., such that any two types from this set are compatible. </li> +<li><em>Data Type</em> is the same as <em>type</em> in the sense of the definition above. </li> +<li><em>Functional Type</em> is a type describing a function; it is not a type in the sense of the definition above. Initially, we ignore the existence of functional types and describe only the data types; however, in reality, functional types will later be implemented in some extension of this system using the so-called <em>temporary combinators</em>. </li> +</ul> +<h4><a class="anchor" href="#combinators-constructors-composite-data-types" id="combinators-constructors-composite-data-types" name="combinators-constructors-composite-data-types"><i class="anchor-icon"></i></a>Combinators, Constructors, Composite Data Types</h4> +<ul> +<li> +<p><em>Combinator</em> is a function that takes arguments of certain types and returns a value of some other type. We normally look at combinators whose argument and result types are data types (rather than functional types). </p> +</li> +<li> +<p><em>Arity (of combinator)</em> is a non-negative integer, the number of combinator arguments. </p> +</li> +<li> +<p><em>Combinator identifier</em> is an identifier beginning with a lowercase Roman letter that uniquely identifies a combinator. </p> +</li> +<li> +<p><em>Combinator number</em> or <em>combinator name</em> is a 32-bit number (i.e., an element of A) that uniquely identifies a combinator. Most often, it is CRC32 of the string containing the combinator description without the final semicolon, and with one space between contiguous lexemes. This always falls in the range from 0x01000000 to 0xffffff00. The highest 256 values are reserved for the so-called <em>temporal-logic combinators</em> used to transmit functions. We frequently denote as <em>combinator</em> the combinator name with single quotes: ‘<em>combinator</em>’.</p> +</li> +<li> +<p><em>Combinator description</em> is a string of format <code>combinator_name type_arg_1 ... type_arg_N = type_res;</code> where <code>N</code> stands for the arity of the combinator, <code>type_arg_i</code> is the type of the i-th argument (or rather, a string with the combinator name), and <code>type_res</code> is the combinator value type.</p> +</li> +<li> +<p><em>Constructor</em> is a combinator that cannot be computed (reduced). This is used to represent composite data types. For example, combinator ‘int_tree’ with description <code>int_tree IntTree int IntTree = IntTree</code>, alongside combinator <code>empty_tree = IntTree</code>, may be used to define a composite data type called “IntTree” that takes on values in the form of binary trees with integers as nodes. </p> +</li> +<li> +<p><em>Function (functional combinator)</em> is a combinator which may be computed (reduced) on condition that the requisite number of arguments of requisite types are provided. The result of the computation is an expression consisting of constructors and base type values only. </p> +</li> +<li> +<p><em>Normal form</em> is an expression consisting only of constructors and base type values; that which is normally the result of computing a function. </p> +</li> +<li> +<p><em>Type identifier</em> is an identifier that normally starts with a capital letter in Roman script and uniquely identifies the type.</p> +</li> +<li> +<p><em>Type number</em> or <em>type name</em> is a 32-bit number that uniquely identifies a type; it normally is the sum of the CRC32 values of the descriptions of the type constructors.</p> +</li> +<li> +<p><em>Description of (composite) Type T</em> is a collection of the descriptions of all constructors that take on Type <em>T</em> values. This is normally written as text with each string containing the description of a single constructor. Here is a description of Type ‘IntTree’, for example:</p> +<p>int_tree IntTree int IntTree = IntTree; +empty_tree = IntTree;</p> +</li> +<li> +<p><em>Polymorphic type</em> is a type whose description contains parameters (<em>type variables</em>) in lieu of actual types; approximately, what would be a template in C++. Here is a description of Type <code>List alpha</code> where <code>List</code> is a polymorphic type of arity 1 (i. e., dependent on a single argument), and <code>alpha</code> is a type variable which appears as the constructor’s optional parameter (in curly braces): </p> +<p>cons {alpha:Type} alpha (List alpha) = List alpha; +nil {alpha:Type} = List alpha;</p> +</li> +<li> +<p><em>Value of (composite) Type T</em> is any sequence from A* in the format <code>constr_num arg1 ... argN</code>, where constr_num is the index number of some Constructor <em>C</em> which takes on values of Type <em>T</em>, and arg_i is a value of Type <em>T_i</em> which is the type of the i-th argument to Constructor <em>C</em>. For example, let Combinator int_tree have the index number 17, whereas Combinator empty_tree has the index number 239. Then, the value of Type <code>IntTree</code> is, for example, <code>17 17 239 1 239 2 239</code> which is more conveniently written as <code>'int_tree' 'int_tree' 'empty_tree' 1 'empty_tree' 2 ‘empty_tree’</code>. From the standpoint of a high-level language, this is <code>int_tree (int_tree (empty_tree) 1 (empty_tree)) 2 (empty_tree): IntTree</code>.</p> +</li> +<li> +<p><em>Schema</em> is a collection of all the (composite) data type descriptions. This is used to define some agreed-to system of types.</p> +</li> +</ul> +<h4><a class="anchor" href="#boxed-and-bare-types" id="boxed-and-bare-types" name="boxed-and-bare-types"><i class="anchor-icon"></i></a>Boxed and Bare Types</h4> +<ul> +<li><em>Boxed type</em> is a type any value of which starts with the constructor number. Since every constructor has a uniquely determined value type, the first number in any boxed type value uniquely defines its type. This guarantees that the various boxed types in totality make up a coordinated system of types. A boxed type identifier is always capitalized.</li> +<li><em>Bare type</em> is a type whose values do not contain a constructor number, which is implied instead. A bare type identifier always coincides with the name of the implied constructor (and therefore, begins with a lowercase letter) which may be padded at the front by the percentage sign (%). In addition, if <code>X</code> is a boxed type with no more than a single constructor, then <code>%X</code> refers to the corresponding bare type. The values of a bare type are identical with the set of number sequences obtained by dropping the first number (i. e., the external constructor index number) from the set of values of the corresponding boxed type (which is the result type of the selected constructor), starting with the selected constructor index number. For example, <code>3 4</code> is a value of the <code>int_couple</code> bare type, defined using <code>int_couple int int = IntCouple</code>. The corresponding boxed type is <code>IntCouple</code>; if 404 is the constructor index number for <code>int_couple</code>, then <code>404 3 4</code> is the value for the <code>IntCouple</code> boxed type which corresponds to the value of the bare type <code>int_couple</code> (also known as <code>%int_couple</code> and <code>%IntCouple</code>; the latter form is conceptually preferable but longer).</li> +</ul> +<p>Conceptually, only boxed types should be used everywhere. However, for speed and compactness, bare types have to be used (for instance, an array of 10,000 bare int values is 40,000 bytes long, whereas boxed Int values take up twice as much space; therefore, when transmitting a large array of integer identifiers, say, it is more efficient to use the <code>Vector int</code> type rather than <code>Vector Int</code>). In addition, all base types (int, long, double, string) are bare.</p> +<p>If a boxed type is polymorphic of type arity r, this is also true of any derived bare type. In other words, if one were to define <code>intCouple {alpha:Type} int alpha = IntCouple alpha</code>, then, thereafter, intCouple as an identifier would also be a polymorphic type of arity 1 in combinator (and consequently, in constructor and type) descriptions. The notations <code>intCouple X</code>, <code>%(IntCouple X)</code>, and <code>%IntCouple X</code> are equivalent.</p> +<h4><a class="anchor" href="#base-types" id="base-types" name="base-types"><i class="anchor-icon"></i></a>Base Types</h4> +<p>Base types exist both as bare (int, long, double, string) and as boxed (Int, Long, Double, String) versions. Their <em>constructor</em> identifiers coincide with the names of the relevant bare types. Their pseudodescriptions have the following appearance:</p> +<pre><code>int ? = Int; +long ? = Long; +double ? = Double; +string ? = String;</code></pre> +<p>Consequently, the <code>int</code> constructor index number, for example, is the CRC32 of the string <code>"int ? = Int"</code>.</p> +<p>The values of bare type <code>int</code> are exactly all the single-element <em>sequences</em>, i. e. numbers between -2^31 and 2^31-1 represent themselves in this case. Values of type <code>long</code> are two-element sequences that are 64-bit signed numbers (little endian again). Values of type <code>double</code>, again, are two-element sequences containing 64-bit real numbers in a standard double format. And finally, the values of type <code>string</code> look differently depending on the length L of the string being serialized:</p> +<ul> +<li>If L <= 253, the serialization contains one byte with the value of L, then L bytes of the string followed by 0 to 3 characters containing 0, such that the overall length of the value be divisible by 4, whereupon all of this is interpreted as a sequence of int(L/4)+1 32-bit numbers. </li> +<li>If L >= 254, the serialization contains byte 254, followed by 3 bytes with the string length L, followed by L bytes of the string, further followed by 0 to 3 null padding bytes.</li> +</ul> +<h4><a class="anchor" href="#object-pseudotype" id="object-pseudotype" name="object-pseudotype"><i class="anchor-icon"></i></a>Object Pseudotype</h4> +<p>The <code>Object</code> pseudotype is a “type” which can take on values that belong to any boxed type in the schema. This helps quickly define such types as <em>list of random items</em> without using polymorphic types. It is best not to abuse this capability since it results in the use of dynamic typing. Nonetheless, it is hard to imagine the data structures that we know from PHP and JSON without using the Object pseudotype.</p> +<p>It is recommended to use <code>TypedObject</code> instead whenever possible:</p> +<pre><code>object X:Type value:X = TypedObject;</code></pre> +<h4><a class="anchor" href="#built-in-composite-types-vectors-and-associative-arrays" id="built-in-composite-types-vectors-and-associative-arrays" name="built-in-composite-types-vectors-and-associative-arrays"><i class="anchor-icon"></i></a>Built-In Composite Types: Vectors and Associative Arrays</h4> +<p>The Vector t polymorphic pseudotype is a “type” whose value is a sequence of values of any type t, either boxed or bare.</p> +<pre><code>vector {t:Type} # [ t ] = Vector t;</code></pre> +<p>Serialization always uses the same constructor “vector” (const 0x1cb5c415 = crc32("vector t:Type # [ t ] = Vector t”) that is not dependent on the specific value of the variable of type t. The value of the Vector t type is the index number of the relevant constructor number followed by N, the number of elements in the vector, and then by N values of type t. The value of the optional parameter t is not involved in the serialization since it is derived from the result type (always known prior to deserialization).</p> +<p>Polymorphic pseudotypes IntHash t and StrHash t are associative arrays mapping integer and string keys to values of type t. They are, in fact, vectors containing bare 2-tuples (int, t) or (string, t):</p> +<pre><code>coupleInt {t:Type} int t = CoupleInt t; +intHash {t:Type} (vector %(CoupleInt t)) = IntHash t; +coupleStr {t:Type} string t = CoupleStr t; +strHash {t:Type} (vector %(CoupleStr t)) = StrHash t;</code></pre> +<p>The percentage sign, in this case, means that a bare type that corresponds to the boxed type in parentheses is taken; the boxed type in question must have no more than a single constructor, whatever the values of the parameters.</p> +<p>The keys may be sorted or be in some other order (as in PHP arrays). For associative arrays with sorted keys, the IntSortedHash or StrSortedHash alias is used:</p> +<pre><code>intSortedHash {t:Type} (intHash t) = IntSortedHash t; +strSortedHash {t:Type} (strHash t) = StrSortedHash t;</code></pre> +<h4><a class="anchor" href="#polymorphic-type-constructors" id="polymorphic-type-constructors" name="polymorphic-type-constructors"><i class="anchor-icon"></i></a>Polymorphic Type Constructors</h4> +<p>The constructor of a polymorphic type does not depend on the specific types to which the polymorphic type is applied. When it is computed, optional parameters (normally containing type variables and placed in curly braces) cease to be optional (the curly braces are removed), and, in addition to that, all parenthesis are also removed. Therefore, </p> +<pre><code>vector {t:Type} # [ t ] = Vector t;</code></pre> +<p>corresponds to the constructor number crc32("vector t:Type # [ t ] = Vector t") = 0x1cb5c415. During (de)serialization, the specific values of the optional variable t are derived from the result type (i. e. the object being serialized or deserialized) that is always known, and are never serialized explicitly.</p> +<p>Previously, it had to be known which specific variable types each polymorphic type will apply to. To accomplish this, the type system used strings of the form</p> +<pre><code>polymorphic_type_name type_1 ... type_N;</code></pre> +<p>For example,</p> +<pre><code>Vector int; +Vector string; +Vector Object;</code></pre> +<p>Now they are ignored.</p> +<p>See also <a href="/mtproto/TL-polymorph">polymorphism in TL</a>.</p> +<p>In this case, the Object pseudotype permits using Vector Object to store lists of anything (the values of any boxed types). Since bare types are efficient when short, in practice it is unlikely that cases more complex than the ones cited above will be required. </p> +<h4><a class="anchor" href="#field-names" id="field-names" name="field-names"><i class="anchor-icon"></i></a>Field Names</h4> +<p>Let us say that we need to represent <em>users</em> as triplets containing one integer (user ID) and two strings (first and last names). The requisite data structure is the triplet int, string, string which may be declared as follows:</p> +<pre><code>user int string string = User;</code></pre> +<p>On the other hand, a group may be described by a similar triplet consisting of a group ID, its name, and description:</p> +<pre><code>group int string string = Group;</code></pre> +<p>For the difference between User and Group to be clear, it is convenient to assign names to some or all of the fields:</p> +<pre><code>user id:int first_name:string last_name:string = User; +group id:int title:string description:string = Group;</code></pre> +<p>If the User type needs to be extended at a later time by having records with some additional field added to it, it could be accomplished as follows:</p> +<pre><code>userv2 id:int unread_messages:int first_name:string last_name:string in_groups:vector int = User;</code></pre> +<p>Aside from other things, this approach helps define correct mappings between fields that belong to different constructors of the same type, convert between them as well as convert type values into an associative array with string keys (field names, if defined, are natural choices for such keys).</p> +<h3><a class="anchor" href="#tl-language" id="tl-language" name="tl-language"><i class="anchor-icon"></i></a>TL Language</h3> +<p>See <a href="/mtproto/TL">TL Language</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/mtproto/service_messages.html b/data/corefork.telegram.org/mtproto/service_messages.html new file mode 100644 index 0000000000..7ef9827419 --- /dev/null +++ b/data/corefork.telegram.org/mtproto/service_messages.html @@ -0,0 +1,195 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Service Messages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Response to an RPC query +A response to an RPC query is normally wrapped as follows: +rpc_result#f35c6d01 req_msg_id:long…"> + <meta property="og:title" content="Service Messages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Response to an RPC query +A response to an RPC query is normally wrapped as follows: +rpc_result#f35c6d01 req_msg_id:long…"> + <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?215" 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/service_messages" >Service Messages</a></li></ul></div> + <h1 id="dev_page_title">Service Messages</h1> + + <div id="dev_page_content"><h4><a class="anchor" href="#response-to-an-rpc-query" id="response-to-an-rpc-query" name="response-to-an-rpc-query"><i class="anchor-icon"></i></a>Response to an RPC query</h4> +<p>A response to an RPC query is normally wrapped as follows:</p> +<pre><code>rpc_result#f35c6d01 req_msg_id:long result:Object = RpcResult;</code></pre> +<p>Here req_msg_id is the identifier of the message sent by the other party and containing an RPC query. This way, the recipient knows that the result is a response to the specific RPC query in question. +At the same time, this response serves as acknowledgment of the other party’s receipt of the req_msg_id message.</p> +<p>Note that the response to an RPC query must also be acknowledged. Most frequently, this coincides with the transmission of the next message (which may have a container attached to it carrying a service message with the acknowledgment).</p> +<h4><a class="anchor" href="#rpc-error" id="rpc-error" name="rpc-error"><i class="anchor-icon"></i></a>RPC Error</h4> +<p>The result field returned in response to any RPC query may also contain an error message in the following format:</p> +<pre><code>rpc_error#2144ca19 error_code:int error_message:string = RpcError;</code></pre> +<h4><a class="anchor" href="#cancellation-of-an-rpc-query" id="cancellation-of-an-rpc-query" name="cancellation-of-an-rpc-query"><i class="anchor-icon"></i></a>Cancellation of an RPC Query</h4> +<p>In certain situations, the client does not want to receive a response to an already transmitted RPC query, for example because the response turns out to be long and the client has decided to do without it because of insufficient link capacity. Simply interrupting the TCP connection will not have any effect because the server would re-send the missing response at the first opportunity. Therefore, the client needs a way to cancel receipt of the RPC response message, actually acknowledging its receipt prior to it being in fact received, which will settle the server down and prevent it from re-sending the response. However, the client does not know the RPC response’s msg_id prior to receiving the response; the only thing it knows is the req_msg_id. i. e. the msg_id of the relevant RPC query. Therefore, a special query is used:</p> +<pre><code>rpc_drop_answer#58e4a740 req_msg_id:long = RpcDropAnswer;</code></pre> +<p>The response to this query returns as one of the following messages wrapped in rpc_result and requiring an acknowledgment: </p> +<pre><code>rpc_answer_unknown#5e2ad36e = RpcDropAnswer; +rpc_answer_dropped_running#cd78e586 = RpcDropAnswer; +rpc_answer_dropped#a43ad8b7 msg_id:long seq_no:int bytes:int = RpcDropAnswer;</code></pre> +<p>The first version of the response is used if the server remembers nothing of the incoming req_msg_id (if it has already been responded to, for example). The second version is used if the response was canceled while the RPC query was being processed (where the RPC query itself was still fully processed); in this case, the same rpc_answer_dropped_running is also returned in response to the original query, and both of these responses require an acknowledgment from the client. The final version means that the RPC response was removed from the server’s outgoing queue, and its msg_id, seq_no, and length in bytes are transmitted to the client.</p> +<p>Note that rpc_answer_dropped_running and rpc_answer_dropped serve as acknowledgments of the server’s receipt of the original query (the same one, the response to which we wish to forget). In addition, same as for any RPC queries, any response to rpc_drop_answer is an acknowledgment for rpc_drop_answer itself.</p> +<p>As an alternative to using rpc_drop_answer, a new session may be created after the connection is reset and the old session is removed through destroy_session.</p> +<h4><a class="anchor" href="#messages-associated-with-querying-changing-and-receiving-the-status-of-other-messages" id="messages-associated-with-querying-changing-and-receiving-the-status-of-other-messages" name="messages-associated-with-querying-changing-and-receiving-the-status-of-other-messages"><i class="anchor-icon"></i></a>Messages associated with querying, changing, and receiving the status of other messages</h4> +<p>See <a href="/mtproto/service_messages_about_messages">Mobile Protocol: Service Messages about Messages</a></p> +<h4><a class="anchor" href="#request-for-several-future-salts" id="request-for-several-future-salts" name="request-for-several-future-salts"><i class="anchor-icon"></i></a>Request for several future salts</h4> +<p>The client may at any time request from the server several (between 1 and 64) future server salts together with their validity periods. Having stored them in persistent memory, the client may use them to send messages in the future even if it changes sessions (a server salt is attached to the authorization key rather than being session-specific).</p> +<pre><code>get_future_salts#b921bd04 num:int = FutureSalts; +future_salt#0949d9dc valid_since:int valid_until:int salt:long = FutureSalt; +future_salts#ae500895 req_msg_id:long now:int salts:vector<future_salt> = FutureSalts;</code></pre> +<p>The client must check to see that the response’s req_msg_id in fact coincides with msg_id of the query for get_future_salts. The server returns a maximum of num future server salts (may return fewer). The response serves as the acknowledgment of the query and does not require an acknowledgment itself.</p> +<h4><a class="anchor" href="#ping-messages-pingpong" id="ping-messages-pingpong" name="ping-messages-pingpong"><i class="anchor-icon"></i></a>Ping Messages (PING/PONG)</h4> +<pre><code>ping#7abe77ec ping_id:long = Pong;</code></pre> +<p>A response is usually returned to the same connection:</p> +<pre><code>pong#347773c5 msg_id:long ping_id:long = Pong;</code></pre> +<p>These messages do not require acknowledgments. A pong is transmitted only in response to a ping while a ping can be initiated by either side.</p> +<h4><a class="anchor" href="#deferred-connection-closure--ping" id="deferred-connection-closure--ping" name="deferred-connection-closure--ping"><i class="anchor-icon"></i></a>Deferred Connection Closure + PING</h4> +<pre><code>ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong;</code></pre> +<p>Works like ping. In addition, after this is received, the server starts a timer which will close the current connection disconnect_delay seconds later unless it receives a new message of the same type which automatically resets all previous timers. If the client sends these pings once every 60 seconds, for example, it may set disconnect_delay equal to 75 seconds. </p> +<h4><a class="anchor" href="#request-to-destroy-session" id="request-to-destroy-session" name="request-to-destroy-session"><i class="anchor-icon"></i></a>Request to Destroy Session</h4> +<p>Used by the client to notify the server that it may forget the data from a different session belonging to the same user (i. e. with the same auth_key_id). The result of this being applied to the current session is undefined.</p> +<pre><code>destroy_session#e7512126 session_id:long = DestroySessionRes; +destroy_session_ok#e22045fc session_id:long = DestroySessionRes; +destroy_session_none#62d350c9 session_id:long = DestroySessionRes;</code></pre> +<h4><a class="anchor" href="#new-session-creation-notification" id="new-session-creation-notification" name="new-session-creation-notification"><i class="anchor-icon"></i></a>New Session Creation Notification</h4> +<p>The server notifies the client that a new session (from the server’s standpoint) had to be created to handle a client message. If, after this, the server receives a message with an even smaller msg_id within the same session, a similar notification will be generated for this msg_id as well. No such notifications are generated for high msg_id values.</p> +<pre><code>new_session_created#9ec20908 first_msg_id:long unique_id:long server_salt:long = NewSession</code></pre> +<p>The unique_id parameter is generated by the server every time a session is (re-)created.</p> +<p>This notification must be acknowledged by the client. It is necessary, for instance, for the client to understand that there is, in fact, a “gap” in the stream of long poll notifications received from the server (the user may have failed to receive notifications during some period of time).</p> +<p>Notice that the server may unilaterally destroy (close) any existing client sessions with all pending messages and notifications, without sending any notifications. This happens, for example, if the session is inactive for a long time, and the server runs out of memory. If the client at some point decides to send new messages to the server using the old session, already forgotten by the server, such a "new session created" notification will be generated. The client is expected to handle such situations gracefully.</p> +<h3><a class="anchor" href="#containers" id="containers" name="containers"><i class="anchor-icon"></i></a>Containers</h3> +<p><em>Containers</em> are messages containing several other messages. Used for the ability to transmit several RPC queries and/or service messages at the same time, using HTTP or even TCP or UDP protocol. A container may only be accepted or rejected by the other party as a whole.</p> +<h4><a class="anchor" href="#simple-container" id="simple-container" name="simple-container"><i class="anchor-icon"></i></a>Simple Container</h4> +<p>A simple container carries several messages as follows:</p> +<pre><code>msg_container#73f1f8dc messages:vector message = MessageContainer;</code></pre> +<p>Here message refers to any message together with its length and msg_id:</p> +<pre><code>message msg_id:long seqno:int bytes:int body:Object = Message;</code></pre> +<p><code>bytes</code> is the number of bytes in the body serialization. +All messages in a container must have msg_id lower than that of the container itself. A container does not require an acknowledgment and may not carry other simple containers. When messages are re-sent, they may be combined into a container in a different manner or sent individually.</p> +<p>MTProto container payloads have a limit of <code>2^15</code> bytes or <code>1020</code> messages, whichever limit is reached first.<br> +Clients should group acknowledgments, state requests and message resend requests into three separate <a href="/mtproto/service_messages_about_messages#acknowledgment-of-receipt"><code>msgs_ack</code></a>, <a href="https://core.telegram.org/mtproto/service_messages_about_messages#request-for-message-status-information"><code>msgs_state_req</code></a>, <a href="/mtproto/service_messages_about_messages#explicit-request-to-re-send-messages"><code>msg_resend_req</code></a> service messages with at most 8192 IDs each; these three messages (+http_wait) will not be included in the <code>1020</code> message limit. </p> +<p>Empty containers are also allowed. They are used by the server, for example, to respond to an HTTP request when the timeout specified in http_wait expires, and there are no messages to transmit. </p> +<p><a href="https://github.com/tdlib/td/blob/master/td/mtproto/SessionConnection.cpp">Example implementation</a>. </p> +<h4><a class="anchor" href="#message-copies" id="message-copies" name="message-copies"><i class="anchor-icon"></i></a>Message Copies</h4> +<p>In some situations, an old message with a msg_id that is no longer valid needs to be re-sent. Then, it is wrapped in a copy container:</p> +<pre><code>msg_copy#e06046b2 orig_message:Message = MessageCopy;</code></pre> +<p>Once received, the message is processed as if the wrapper were not there. However, if it is known for certain that the message orig_message.msg_id was received, then the new message is not processed (while at the same time, it and orig_message.msg_id are acknowledged). The value of orig_message.msg_id must be lower than the container’s msg_id.</p> +<p>This is not used at this time, because an old message can be wrapped in a simple container with the same result.</p> +<h4><a class="anchor" href="#packed-object" id="packed-object" name="packed-object"><i class="anchor-icon"></i></a>Packed Object</h4> +<p>Used to replace any other object (or rather, a serialization thereof) with its archived (gzipped) representation:</p> +<pre><code>gzip_packed#3072cfa1 packed_data:string = Object;</code></pre> +<p>At the present time, it is supported in the body of an RPC response (i.e., as result in rpc_result) and generated by the server for a limited number of high-level queries. In addition, it may be used to transmit non-service messages (i. e. RPC queries) from client to server.</p> +<h3><a class="anchor" href="#http-waitlong-poll" id="http-waitlong-poll" name="http-waitlong-poll"><i class="anchor-icon"></i></a>HTTP Wait/Long Poll</h3> +<p>The following special service query not requiring an acknowledgement (which must be transmitted only through an HTTP connection) is used to enable the server to send messages in the future to the client using HTTP protocol:</p> +<pre><code>http_wait#9299359f max_delay:int wait_after:int max_wait:int = HttpWait;</code></pre> +<p>When such a message (or a container carrying such a message) is received, the server either waits <code>max_delay</code> milliseconds, whereupon it forwards all the messages that it is holding on to the client if there is at least one message queued in session (if needed, by placing them into a container to which acknowledgments may also be added); or else waits no more than <code>max_wait</code> milliseconds until such a message is available. If a message never appears, an empty container is transmitted.</p> +<p>The <code>max_delay</code> parameter denotes the maximum number of milliseconds that has elapsed between the first message for this session and the transmission of an HTTP response. The <code>wait_after</code> parameter works as follows: after the receipt of the latest message for a particular session, the server waits another <code>wait_after</code> milliseconds in case there are more messages. If there are no additional messages, the result is transmitted (a container with all the messages). If more messages appear, the <code>wait_after</code> timer is reset.</p> +<p>At the same time, the <code>max_delay</code> parameter has higher priority than <code>wait_after</code>, and <code>max_wait</code> has higher priority than <code>max_delay</code>.</p> +<p>This message does not require a response or an acknowledgement. If the container transmitted over HTTP carries several such messages, the behavior is undefined (in fact, the latest parameter will be used). </p> +<p>If no <code>http_wait</code> is present in container, default values <code>max_delay=0</code> (milliseconds), <code>wait_after=0</code> (milliseconds), and <code>max_wait=25000</code> (milliseconds) are used. </p> +<p>If the client’s ping of the server takes a long time, it may make sense to set <code>max_delay</code> to a value that is comparable in magnitude to ping time.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/mtproto/service_messages_about_messages.html b/data/corefork.telegram.org/mtproto/service_messages_about_messages.html new file mode 100644 index 0000000000..d271a6e13d --- /dev/null +++ b/data/corefork.telegram.org/mtproto/service_messages_about_messages.html @@ -0,0 +1,185 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Service Messages about Messages</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Acknowledgment of Receipt +Receipt of virtually all messages (with the exception of some purely service ones as well as the…"> + <meta property="og:title" content="Service Messages about Messages"> + <meta property="og:image" content=""> + <meta property="og:description" content="Acknowledgment of Receipt +Receipt of virtually all messages (with the exception of some purely service ones as well as the…"> + <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?215" 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/service_messages" >Service messages</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/mtproto/service_messages_about_messages" >Service Messages about Messages</a></li></ul></div> + <h1 id="dev_page_title">Service Messages about Messages</h1> + + <div id="dev_page_content"><h4><a class="anchor" href="#acknowledgment-of-receipt" id="acknowledgment-of-receipt" name="acknowledgment-of-receipt"><i class="anchor-icon"></i></a>Acknowledgment of Receipt</h4> +<p>Receipt of virtually all messages (with the exception of some purely service ones as well as the plain-text messages used in the protocol for creating an authorization key) must be acknowledged. +This requires the use of the following service message (not requiring an acknowledgment):</p> +<pre><code>msgs_ack#62d6b459 msg_ids:Vector<long> = MsgsAck;</code></pre> +<p>A server usually acknowledges the receipt of a message from a client (normally, an RPC query) using an RPC response. If a response is a long time coming, a server may first send a receipt acknowledgment, and somewhat later, the RPC response itself.</p> +<p>A client normally acknowledges the receipt of a message from a server (usually, an RPC response) by adding an acknowledgment to the next RPC query if it is not transmitted too late (if it is generated, say, 60-120 seconds following the receipt of a message from the server). However, if for a long period of time there is no reason to send messages to the server or if there is a large number of unacknowledged messages from the server (say, over 16), the client transmits a stand-alone acknowledgment. </p> +<p>Max 8192 IDs are allowed per constructor. </p> +<h4><a class="anchor" href="#notice-of-ignored-error-message" id="notice-of-ignored-error-message" name="notice-of-ignored-error-message"><i class="anchor-icon"></i></a>Notice of Ignored Error Message</h4> +<p>In certain cases, a server may notify a client that its incoming message was ignored for whatever reason. Note that such a notification cannot be generated unless a message is correctly decoded by the server.</p> +<pre><code>bad_msg_notification#a7eff811 bad_msg_id:long bad_msg_seqno:int error_code:int = BadMsgNotification; +bad_server_salt#edab447b bad_msg_id:long bad_msg_seqno:int error_code:int new_server_salt:long = BadMsgNotification;</code></pre> +<p>Here, error_code can also take on the following values:</p> +<ul> +<li>16: msg_id too low (most likely, client time is wrong; it would be worthwhile to synchronize it using msg_id notifications and re-send the original message with the “correct” msg_id or wrap it in a container with a new msg_id if the original message had waited too long on the client to be transmitted)</li> +<li>17: msg_id too high (similar to the previous case, the client time has to be synchronized, and the message re-sent with the correct msg_id)</li> +<li>18: incorrect two lower order msg_id bits (the server expects client message msg_id to be divisible by 4)</li> +<li>19: container msg_id is the same as msg_id of a previously received message (this must never happen)</li> +<li>20: message too old, and it cannot be verified whether the server has received a message with this msg_id or not</li> +<li>32: msg_seqno too low (the server has already received a message with a lower msg_id but with either a higher or an equal and odd seqno)</li> +<li>33: msg_seqno too high (similarly, there is a message with a higher msg_id but with either a lower or an equal and odd seqno)</li> +<li>34: an even msg_seqno expected (irrelevant message), but odd received</li> +<li>35: odd msg_seqno expected (relevant message), but even received</li> +<li>48: incorrect server salt (in this case, the bad_server_salt response is received with the correct salt, and the message is to be re-sent with it)</li> +<li>64: invalid container.</li> +</ul> +<p>The intention is that error_code values are grouped (error_code >> 4): for example, the codes 0x40 - 0x4f correspond to errors in container decomposition.</p> +<p>Notifications of an ignored message do not require acknowledgment (i.e., are irrelevant).</p> +<p><strong>Important:</strong> if server_salt has changed on the server or if client time is incorrect, any query will result in a notification in the above format. The client must check that it has, in fact, recently sent a message with the specified msg_id, and if that is the case, update its time correction value (the difference between the client’s and the server’s clocks) and the server salt based on msg_id and the server_salt notification, so as to use these to (re)send future messages. In the meantime, the original message (the one that caused the error message to be returned) must also be re-sent with a better msg_id and/or server_salt.</p> +<p>In addition, the client can update the server_salt value used to send messages to the server, based on the values of RPC responses or containers carrying an RPC response, provided that this RPC response is actually a match for the query sent recently. (If there is doubt, it is best not to update since there is risk of a replay attack).</p> +<h4><a class="anchor" href="#request-for-message-status-information" id="request-for-message-status-information" name="request-for-message-status-information"><i class="anchor-icon"></i></a>Request for Message Status Information</h4> +<p>If either party has not received information on the status of its outgoing messages for a while, it may explicitly request it from the other party:</p> +<pre><code>msgs_state_req#da69fb52 msg_ids:Vector long = MsgsStateReq;</code></pre> +<p>Max 8192 IDs are allowed per constructor. </p> +<p>The response to the query contains the following information:</p> +<h4><a class="anchor" href="#informational-message-regarding-status-of-messages" id="informational-message-regarding-status-of-messages" name="informational-message-regarding-status-of-messages"><i class="anchor-icon"></i></a>Informational Message regarding Status of Messages</h4> +<pre><code>msgs_state_info#04deb57d req_msg_id:long info:string = MsgsStateInfo;</code></pre> +<p>Here, <code>info</code> is a string that contains exactly one byte of message status for each message from the incoming msg_ids list:</p> +<ul> +<li>1 = nothing is known about the message (msg_id too low, the other party may have forgotten it)</li> +<li>2 = message not received (msg_id falls within the range of stored identifiers; however, the other party has certainly not received a message like that)</li> +<li>3 = message not received (msg_id too high; however, the other party has certainly not received it yet) </li> +<li>4 = message received (note that this response is also at the same time a receipt acknowledgment)</li> +<li>+8 = message already acknowledged</li> +<li>+16 = message not requiring acknowledgment</li> +<li>+32 = RPC query contained in message being processed or processing already complete</li> +<li>+64 = content-related response to message already generated</li> +<li>+128 = other party knows for a fact that message is already received</li> +</ul> +<p>This response does not require an acknowledgment. It is an acknowledgment of the relevant msgs_state_req, in and of itself.</p> +<p>Note that if it turns out suddenly that the other party is missing a message that appears to have been sent to it, the message must not be re-sent on its own with the same msg_id. Instead, it can be either wrapped in a container, or the status of the message can be checked using msgs_state_req and if the message wasn't received, then it must be re-sent with a new msg_id.</p> +<h4><a class="anchor" href="#voluntary-communication-of-status-of-messages" id="voluntary-communication-of-status-of-messages" name="voluntary-communication-of-status-of-messages"><i class="anchor-icon"></i></a>Voluntary Communication of Status of Messages</h4> +<p>Either party may voluntarily inform the other party of the status of the messages transmitted by the other party.</p> +<pre><code>msgs_all_info#8cc0d131 msg_ids:Vector long info:string = MsgsAllInfo</code></pre> +<p>All message codes known to this party are enumerated, with the exception of those for which the +128 and the +16 flags are set. However, if the +32 flag is set but not +64, then the message status will still be communicated.</p> +<p>This message does not require an acknowledgment.</p> +<h4><a class="anchor" href="#extended-voluntary-communication-of-status-of-one-message" id="extended-voluntary-communication-of-status-of-one-message" name="extended-voluntary-communication-of-status-of-one-message"><i class="anchor-icon"></i></a>Extended Voluntary Communication of Status of One Message</h4> +<p>Normally used by the server to respond to the receipt of a duplicate msg_id, especially if a response to the message has already been generated and the response is large. If the response is small, the server may re-send the answer itself instead. This message can also be used as a notification instead of resending a large message.</p> +<pre><code>msg_detailed_info#276d3ec6 msg_id:long answer_msg_id:long bytes:int status:int = MsgDetailedInfo; +msg_new_detailed_info#809db6df answer_msg_id:long bytes:int status:int = MsgDetailedInfo;</code></pre> +<p>The second version is used to notify of messages that were created on the server not in response to an RPC query (such as notifications of new messages) and were transmitted to the client some time ago, but not acknowledged.</p> +<p>Currently, <code>status</code> is always zero. This may change in future.</p> +<p>This message does not require an acknowledgment.</p> +<h4><a class="anchor" href="#explicit-request-to-re-send-messages" id="explicit-request-to-re-send-messages" name="explicit-request-to-re-send-messages"><i class="anchor-icon"></i></a>Explicit Request to Re-Send Messages</h4> +<pre><code>msg_resend_req#7d861a08 msg_ids:Vector long = MsgResendReq;</code></pre> +<p>The remote party immediately responds by re-sending the requested messages, normally using the same connection that was used to transmit the query. If at least one message with requested msg_id does not exist or has already been forgotten, or has been sent by the requesting party (known from parity), MsgsStateInfo is returned for all messages requested as if the MsgResendReq query had been a MsgsStateReq query as well.<br> +Max 8192 IDs are allowed per constructor. </p> +<h4><a class="anchor" href="#explicit-request-to-re-send-answers" id="explicit-request-to-re-send-answers" name="explicit-request-to-re-send-answers"><i class="anchor-icon"></i></a>Explicit Request to Re-Send Answers</h4> +<pre><code>msg_resend_ans_req#8610baeb msg_ids:Vector long = MsgResendReq;</code></pre> +<p>The remote party immediately responds by re-sending <em>answers</em> to the requested messages, normally using the same connection that was used to transmit the query. <code>MsgsStateInfo</code> is returned for all messages requested as if the MsgResendReq query had been a <code>MsgsStateReq</code> query as well.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/mtproto_v1.html b/data/corefork.telegram.org/mtproto_v1.html new file mode 100644 index 0000000000..d35544a3e8 --- /dev/null +++ b/data/corefork.telegram.org/mtproto_v1.html @@ -0,0 +1,229 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>MTProto Mobile Protocol v.1.0 (DEPRECATED)</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="This document describes MTProto v1.0, its status is DEPRECATED. +For information on encryption used in up-to-date Telegram…"> + <meta property="og:title" content="MTProto Mobile Protocol v.1.0 (DEPRECATED)"> + <meta property="og:image" content="https://corefork.telegram.org/file/811140187/1/sfBQV3Trp80/3a3c48bad836b853ed"> + <meta property="og:description" content="This document describes MTProto v1.0, its status is DEPRECATED. +For information on encryption used in up-to-date Telegram…"> + <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?215" 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">MTProto Mobile Protocol v.1.0 (DEPRECATED)</h1> + + <div id="dev_page_content"><blockquote> +<p>This document describes MTProto <strong>v1.0</strong>, its status is <strong>DEPRECATED</strong>.<br>For information on encryption used in up-to-date Telegram clients, kindly see <a href="/mtproto">this document</a>.</p> +</blockquote> +<h3><a class="anchor" name="related-articles" href="#related-articles"><i class="anchor-icon"></i></a>Related articles</h3> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="/mtproto">MTProto 2.0</a></li> +<li><a href="/mtproto/description">Mobile Protocol: Detailed Description</a></li> +<li><a href="/mtproto/auth_key">Creating an Authorization Key</a></li> +<li><a href="/mtproto/samples-auth_key">Creating an Authorization Key: Example</a></li> +<li><a href="/mtproto/service_messages">Mobile Protocol: Service Messages</a></li> +<li><a href="/mtproto/service_messages_about_messages">Mobile Protocol: Service Messages about Messages</a></li> +<li><a href="/mtproto/serialize">Binary Data Serialization</a></li> +<li><p><a href="/mtproto/TL">TL Language</a></p> +</li> +<li><p><a href="/schema/mtproto">MTProto TL-schema</a></p> +</li> +<li><a href="/api/end-to-end">End-to-end encryption, Secret Chats</a></li> +<li><a href="/schema/end-to-end">End-to-end TL-schema</a></li> +<li><a href="/mtproto/security_guidelines">Security Guidelines for Client Software Developers</a></li> +</ul> +<p></div></p> +<hr> +<p>This page deals with the basic layer of MTProto encryption used for Cloud chats (server-client encryption). See also:</p> +<ul> +<li><a href="/api/end-to-end">Secret Chats, end-to-end-encryption</a></li> +<li><a href="/api/end-to-end/voice-calls">End-to-end encrypted Voice Calls</a></li> +</ul> +<h3><a class="anchor" name="general-description" href="#general-description"><i class="anchor-icon"></i></a>General Description</h3> +<p>The protocol is designed for access to a server API from applications running on mobile devices. It must be emphasized that a web browser is not such an application.</p> +<p>The protocol is subdivided into three virtually independent components:</p> +<ul> +<li>High-level component (API query language): defines the method whereby API queries and responses are converted to binary <em>messages</em>.</li> +<li>Cryptographic (authorization) layer: defines the method by which messages are encrypted prior to being transmitted through the transport protocol.</li> +<li>Transport component: defines the method for the client and the server to transmit messages over some other existing network protocol (such as, http, https, tcp, udp).</li> +</ul> +<div><a href="/file/811140187/1/sfBQV3Trp80/3a3c48bad836b853ed"> + <img src="/file/811140187/1/sfBQV3Trp80/3a3c48bad836b853ed" alt="Server-client encryption in MTProto (Cloud chats)" class="dev_page_image"/> +</a></div> + +<blockquote> +<p>Got questions about this setup? — Check out the <a href="http://core.telegram.org/techfaq">Advanced FAQ</a>!</p> +</blockquote> +<h6><a class="anchor" name="note-1" href="#note-1"><i class="anchor-icon"></i></a><strong>Note 1</strong></h6> +<p>Each plaintext message to be encrypted in MTProto always contains the following data to be checked upon decryption in order to make the system robust against known problems with the components:</p> +<ul> +<li>server salt (64-Bit)</li> +<li>session id</li> +<li>message sequence number</li> +<li>message length</li> +<li>time</li> +</ul> +<h6><a class="anchor" name="note-2" href="#note-2"><i class="anchor-icon"></i></a><strong>Note 2</strong></h6> +<p>See additional comments on our use of <a href="https://core.telegram.org/techfaq#q-do-you-use-ige-ige-is-broken">IGE</a>, <a href="https://core.telegram.org/techfaq#q-why-do-you-use-sha-1-not-sha-256-or-x-insert-your-favorite-has">SHA-1</a> and <a href="https://core.telegram.org/techfaq#q-how-are-mtproto-messages-authenticated">message authentication</a>.</p> +<h6><a class="anchor" name="note-3" href="#note-3"><i class="anchor-icon"></i></a><strong>Note 3</strong></h6> +<p>Telegram's <strong>End-to-end</strong> encrypted Secret Chats are using an additional layer of encryption on top of the described above. See <a href="https://core.telegram.org/api/end-to-end">Secret Chats, End-to-End encryption</a> for details.</p> +<h3><a class="anchor" name="brief-component-summary" href="#brief-component-summary"><i class="anchor-icon"></i></a>Brief Component Summary</h3> +<h4><a class="anchor" name="high-level-component-rpc-query-language-api" href="#high-level-component-rpc-query-language-api"><i class="anchor-icon"></i></a>High-Level Component (RPC Query Language/API)</h4> +<p>From the standpoint of the high-level component, the client and the server exchange <em>messages</em> inside a <em>session</em>. The session is attached to the client device (the application, to be more exact) rather than a specific http/https/tcp connection. In addition, each session is attached to a <em>user key ID</em> by which authorization is actually accomplished.</p> +<p>Several connections to a server may be open; messages may be sent in either direction through any of the connections (a response to a query is not necessarily returned through the same connection that carried the original query, although most often, that is the case; however, in no case can a message be returned through a connection belonging to a different session). When the UDP protocol is used, a response might be returned by a different IP address than the one to which the query had been sent.</p> +<p>There are several types of messages:</p> +<ul> +<li>RPC calls (client to server): calls to API methods</li> +<li>RPC responses (server to client): results of RPC calls</li> +<li>Message received acknowledgment (or rather, notification of status of a set of messages)</li> +<li>Message status query</li> +<li><em>Multipart message</em> or <em>container</em> (a container that holds several messages; needed to send several RPC calls at once over an HTTP connection, for example; also, a container may support gzip).</li> +</ul> +<p>From the standpoint of lower level protocols, a message is a binary data stream aligned along a 4 or 16-byte boundary. The first several fields in the message are fixed and are used by the cryptographic/authorization system.</p> +<p>Each message, either individual or inside a container, consists of a <em>message identifier</em> (64 bits, see below), a <em>message sequence number within a session</em> (32 bits), the <em>length</em> (of the message body in bytes; 32 bits), and a <em>body</em> (any size which is a multiple of 4 bytes). In addition, when a container or a single message is sent, an <em>internal header</em> is added at the top (see below), then the entire message is encrypted, and an <em>external header</em> is placed at the top of the message (a 64-bit <em>key identifier</em> and a 128-bit <em>message key</em>).</p> +<p>A <em>message body</em> normally consists of a 32-bit <em>message type</em> followed by type-dependent <em>parameters</em>. In particular, each RPC function has a corresponding message type. For more detail, see <a href="/mtproto/serialize">Binary Data Serialization</a>, <a href="/mtproto/service_messages">Mobile Protocol: Service Messages</a>.</p> +<p>All numbers are written as little endian. However, very large numbers (2048-bit) used in RSA and DH are written in the big endian format because that is what the OpenSSL library does.</p> +<h4><a class="anchor" name="authorization-and-encryption" href="#authorization-and-encryption"><i class="anchor-icon"></i></a>Authorization and Encryption</h4> +<p>Prior to a message (or a multipart message) being transmitted over a network using a transport protocol, it is encrypted in a certain way, and an <em>external header</em> is added at the top of the message which is: a 64-bit <em>key identifier</em> (that uniquely identifies an <em>authorization key</em> for the server as well as the <em>user</em>) and a 128-bit <em>message key</em>. A user key together with the message key defines an actual 256-bit key which is what encrypts the message using AES-256 encryption. Note that the initial part of the message to be encrypted contains variable data (session, message ID, sequence number, server salt) that obviously influences the message key (and thus the AES key and iv). The message key is defined as the 128 lower-order bits of the SHA1 of the message body (including session, message ID, etc.). Multipart messages are encrypted as a single message.</p> +<p>For a technical specification, see <a href="/mtproto/description">Mobile Protocol: Detailed Description</a><br>The first thing a client application must do is <a href="/mtproto/auth_key">create an authorization key</a> which is normally generated when it is first run and almost never changes.</p> +<p>The protocol’s principal drawback is that an intruder passively intercepting messages and then somehow appropriating the authorization key (for example, by stealing a device) will be able to decrypt all the intercepted messages <em>post factum</em>. This probably is not too much of a problem (by stealing a device, one could also gain access to all the information cached on the device without decrypting anything); however, the following steps could be taken to overcome this weakness:</p> +<ul> +<li><em>Session keys</em> generated using the Diffie-Hellman protocol and used in conjunction with the authorization and the message keys to select AES parameters. To create these, the first thing a client must do after creating a new session is send a special RPC query to the server (“generate session key”) to which the server will respond, whereupon all subsequent messages within the session are encrypted using the session key as well.</li> +<li>Protecting the key stored on the client device with a (text) password; this password is never stored in memory and is entered by a user when starting the application or more frequently (depending on application settings).</li> +<li>Data stored (cached) on the user device can also be protected by encryption using an authorization key which, in turn, is to be password-protected. Then, a password will be required to gain access even to those data.</li> +</ul> +<h4><a class="anchor" name="time-synchronization" href="#time-synchronization"><i class="anchor-icon"></i></a>Time Synchronization</h4> +<p>If client time diverges widely from server time, a server may start ignoring client messages, or vice versa, because of an invalid message identifier (which is closely related to creation time). Under these circumstances, the server will send the client a special message containing the correct time and a certain 128-bit salt (either explicitly provided by the client in a special RPC synchronization request or equal to the key of the latest message received from the client during the current session). This message could be the first one in a container that includes other messages (if the time discrepancy is significant but does not as yet result in the client’s messages being ignored).</p> +<p>Having received such a message or a container holding it, the client first performs a time synchronization (in effect, simply storing the difference between the server’s time and its own to be able to compute the “correct” time in the future) and then verifies that the message identifiers for correctness.</p> +<p>Where a correction has been neglected, the client will have to generate a new session to assure the monotonicity of message identifiers.</p> +<h3><a class="anchor" name="transport" href="#transport"><i class="anchor-icon"></i></a>Transport</h3> +<p>Enables the delivery of encrypted containers together with the external header (hereinafter, <em>Payload</em>) from client to server and back. There are three types of transport:</p> +<ul> +<li>HTTP</li> +<li>TCP</li> +<li>UDP</li> +</ul> +<p>We shall examine the first two types.</p> +<h4><a class="anchor" name="http-transport" href="#http-transport"><i class="anchor-icon"></i></a>HTTP Transport</h4> +<p>Implemented over HTTP/1.1 (with keepalive) running over the traditional TCP Port 80. HTTPS is not used; the above encryption method is used instead.</p> +<p>An HTTP connection is attached to a session (or rather, to session + key identifier) specified in the most recent user query received; normally, the session is the same in all queries, but crafty HTTP proxies may corrupt that. A server may not return a message into an HTTP connection unless it belongs to the same session, and unless it is the server’s turn (an HTTP request had been received from the client to which a response has not been sent yet).</p> +<p>The overall arrangement is as follows. The client opens one or more keepalive HTTP connections to the server. If one or more messages need to be sent, they are made into a <em>payload</em> which is followed by a POST request to the URL/api to which the payload is transmitted as data. In addition, <code>Content-Length</code>, <code>Keepalive</code>, and <code>Host</code> are valid HTTP headers.</p> +<p>Having received the query, the server may either wait a little while (if the query requires a response following a short timeout) or immediately return a dummy response (only acknowledging the receipt of the container). In any case, the response may contain any number of messages. The server may at the same time send out any other messages it might be holding for the session.</p> +<p>In addition, there exists a special long poll RPC query (valid for HTTP connections only) which transmits maximum timeout T. If the server has messages for the session, they are returned immediately; otherwise, a wait state is entered until such time as the server has a message for the client or T seconds have elapsed. If no events occur in the span of T seconds, a dummy response is returned (special message).</p> +<p>If a server needs to send a message to a client, it checks for an HTTP connection that belongs to the required session and is in the “answering an HTTP request” state (including long poll) whereupon the message is added to the response container for the connection and sent to the user. In a typical case, there is some additional wait time (50 milliseconds) against the eventuality that the server will soon have more messages for the session.</p> +<p>If no suitable HTTP connection is available, the messages are placed in the current session’s send queue. However, they find their way there anyway until receipt is explicitly or indirectly confirmed by the client. For the HTTP protocol, sending the next query into the same HTTP connection is regarded as an implicit acknowledgment <em>(not any more, the HTTP protocol also requires that explicit acknowledgments be sent)</em>; in other cases, the client must return an explicit acknowledgment within a reasonable time (it can be added to a container for the following request).</p> +<p><strong><em>Important</em></strong>: if the acknowledgment fails to arrive on time, the message can be resent (possibly, in a different container). The parties must autonomously be ready for this and must store the identifiers of the most recent messages received (and ignore such duplicates rather than repeat actions). In order not to have the identifiers stored forever, there exist special <em>garbage collection</em> messages that take advantage of message identifier monotonicity.</p> +<p>If the send queue overflows or if messages stay in the queue for over 10 minutes, the server forgets them (or sends them to <em>swap</em>, no genius required). This may happen even faster, if the server is running out of buffer space (for example, because of serious network issues resulting in a large number of connections becoming severed).</p> +<h4><a class="anchor" name="tcp-transport" href="#tcp-transport"><i class="anchor-icon"></i></a>TCP Transport</h4> +<p>This is very similar to the HTTP transport. May also be implemented over Port 80 (to penetrate all firewalls) and even use the same server IP addresses. In this situation, the server understands whether HTTP or TCP protocol must be used for the connection, based on the first four incoming bytes (for HTTP, it is POST).</p> +<p>When a TCP connection is created, it is assigned to the session (and the authorization key) transmitted in the first user message, and subsequently used exclusively for this session (multiplexing arrangements are not allowed).</p> +<p>If a payload (packet) needs to be transmitted from server to client or from client to server, it is encapsulated as follows: 4 length bytes are added at the front (to include the length, the sequence number, and CRC32; always divisible by 4) and 4 bytes with the packet sequence number within this TCP connection (the first packet sent is numbered 0, the next one 1, etc.), and 4 CRC32 bytes at the end (length, sequence number, and payload together).</p> +<p>There is an <em>abridged</em> version of the same protocol: if the client sends <code>0xef</code> as the first byte (<strong>important:</strong> only prior to the very first data packet), then packet length is encoded by a single byte (<code>0x01..0x7e</code> = data length divided by 4; or <code>0x7f</code> followed by 3 length bytes (little endian) divided by 4) followed by the data themselves (sequence number and CRC32 not added). In this case, server responses look the same (the server does not send <code>0xef</code>as the first byte).</p> +<p>In case 4-byte data alignment is needed, an <em>intermediate</em> version of the original protocol may be used: if the client sends <code>0xeeeeeeee</code> as the first int (four bytes), then packet length is encoded always by four bytes as in the original version, but the sequence number and CRC32 are omitted, thus decreasing total packet size by 8 bytes.</p> +<p>The full, the intermediate and the abridged versions of the protocol have support for quick acknowledgment. In this case, the client sets the highest-order length bit in the query packet, and the server responds with a special 4 bytes as a separate packet. They are the 32 higher-order SHA1 bits of the encrypted portion of the packet with the most significant bit set to make clear that this is not the length of a regular server response packet; if the abridged version is used, bswap is applied to these four bytes.</p> +<p>There are no implicit acknowledgments for the TCP transport: all messages must be acknowledged explicitly. Most frequently, acknowledgments are placed in a container with the next query or response if it is transmitted in short order. For example, this is almost always the case for client messages containing RPC queries: the acknowledgment normally arrives with the RPC response.</p> +<p>In the event of an error, the server may send a packet whose payload consists of 4 bytes as the error code. For example, Error Code 403 corresponds to situations where the corresponding HTTP error would have been returned by the HTTP protocol.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/passport.html b/data/corefork.telegram.org/passport.html new file mode 100644 index 0000000000..ffcc341cc7 --- /dev/null +++ b/data/corefork.telegram.org/passport.html @@ -0,0 +1,690 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Passport Manual</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram Passport is a unified authorization method for services that require personal identification. Users can upload…"> + <meta property="og:title" content="Telegram Passport Manual"> + <meta property="og:image" content="390b421982e22447ad"> + <meta property="og:description" content="Telegram Passport is a unified authorization method for services that require personal identification. Users can upload…"> + <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?215" 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 Passport Manual</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p><strong>Telegram Passport</strong> is a unified authorization method for services that require personal identification. Users can upload their documents once, then instantly share their data with services that require real-world ID (finance, ICOs, etc.). Telegram doesn't have access to the users' personal information thanks to end-to-end encryption.</p> +<h3><a class="anchor" href="#overview" id="overview" name="overview"><i class="anchor-icon"></i></a>Overview</h3> +<p>From the perspective of a service that requires real-world ID, the process looks like this:</p> +<ul> +<li>A user presses "Log in with Telegram" on your <strong>website</strong> or in your <strong>app</strong>.</li> +<li>You <a href="#requesting-information">request</a> the <a href="#fields">data</a> you need.</li> +<li>The user accepts your <a href="#privacy-policy">privacy policy</a> and agrees to share their data.</li> +<li>The user's Telegram app downloads and decrypts the data you requested from the end-to-end encrypted storage on Telegram.</li> +<li>If some of the data you requested is missing, the user can add it to their Telegram Passport at this point.</li> +<li>The user's app encrypts the data with your <a href="#generating-your-public-key">public key</a> and sends it to you.</li> +<li>You <a href="#decrypting-data">decrypt</a> the data, check it for <a href="#fixing-errors">errors</a> and re-request any missing or invalid information.</li> +<li>You sign the user up for your service. <strong>Tada!</strong></li> +</ul> +<p>Check out <a href="https://core.telegram.org/passport/example">this example</a> to see Telegram Passport in action.</p> +<blockquote> +<p>To learn more about Telegram Passport from the perspective of a user, please see <a href="https://telegram.org/blog/passport">this blog post</a> and the <a href="/api/passport">technical MTProto documentation</a>. +See <a href="/passport/encryption">this page</a> if you're interested in encryption algorithms used on Telegram's side.</p> +</blockquote> +<h3><a class="anchor" href="#recent-changes" id="recent-changes" name="recent-changes"><i class="anchor-icon"></i></a>Recent changes</h3> +<h4><a class="anchor" href="#august-25-2018" id="august-25-2018" name="august-25-2018"><i class="anchor-icon"></i></a>August 25, 2018</h4> +<p><strong>Telegram Passport 1.1</strong> (<a href="https://telegram.org/blog/export-and-more#improved-telegram-passport">blog post</a>)</p> +<ul> +<li>Added support for requesting <strong>several documents of one type</strong>. See the new objects <a href="#passportscope">PassportScope</a>, <a href="#passportscopeelement">PassportScopeElement</a>, <a href="#passportscopeelementone">PassportScopeElementOneOfSeveral</a> and <a href="#passportscopeelementone">PassportScopeElementOne</a>.</li> +<li>Added support for <strong>middle names</strong>.</li> +<li>Added support for requesting certified <strong>English translations</strong> for documents (see <a href="#fields">Fields</a>; new field <em>translation</em> also added to the <a href="#securevalue">SecureValue</a> object). <strong>Note:</strong> Please only request translations <em>after</em> you have received a valid document that requires one.</li> +<li>Added support for requesting <strong>names</strong> in the language of the user's country of residence (if other than English). New fields <em>first_name_native</em>, <em>last_name_native</em> and <em>middle_name_native</em> added to the <a href="#personaldetails">PersonalDetails</a> object.</li> +<li>Replaced the <em>payload</em> parameter with the new parameter <em>nonce</em>, which serves the same function, to make the purpose more obvious (see <a href="#request-parameters">Request Parameters</a> and the <a href="#credentials">Credentials</a> object).</li> +<li>Updated the <a href="/passport/example">example page</a> to support the new functionality.</li> +</ul> +<h3><a class="anchor" href="#setting-up-telegram-passport" id="setting-up-telegram-passport" name="setting-up-telegram-passport"><i class="anchor-icon"></i></a>Setting Up Telegram Passport</h3> +<p>To integrate Telegram Passport into your login or verification flow, you need a working Telegram bot (see <a href="/bots#3-how-do-i-create-a-bot">this page</a> for information on how to get one).</p> +<p>To request data from Telegram Passport users, your bot will need to generate a pair of encryption keys.</p> +<h4><a class="anchor" href="#generating-a-private-key" id="generating-a-private-key" name="generating-a-private-key"><i class="anchor-icon"></i></a>Generating a private key</h4> +<p>First, use a console to generate a <strong>private</strong> key:</p> +<pre><code>openssl genrsa 2048 > private.key</code></pre> +<p><strong>WARNING: Keep your private key SECRET!</strong> </p> +<h4><a class="anchor" href="#generating-your-public-key" id="generating-your-public-key" name="generating-your-public-key"><i class="anchor-icon"></i></a>Generating your public key</h4> +<p>Then use the console to print the corresponding <strong>public</strong> key:</p> +<pre><code>openssl rsa -in private.key -pubout</code></pre> +<p>Use the <strong>/setpublickey</strong> command with <a href="https://t.me/BotFather">@BotFather</a> to connect this public key with your bot.</p> +<h4><a class="anchor" href="#privacy-policy" id="privacy-policy" name="privacy-policy"><i class="anchor-icon"></i></a>Privacy Policy</h4> +<p>Add a link to your Privacy Policy by using the <strong>/setprivacypolicy</strong> command. Users will see this link when offered to authorize you to access their data.</p> +<h3><a class="anchor" href="#requesting-information" id="requesting-information" name="requesting-information"><i class="anchor-icon"></i></a>Requesting Information</h3> +<h4><a class="anchor" href="#sdk" id="sdk" name="sdk"><i class="anchor-icon"></i></a>SDK</h4> +<p>To request information stored in a Telegram Passport, use one of these <strong>SDKs</strong>:</p> +<ul> +<li><a href="/passport/sdk-ios-mac">iOS/macOS SDK</a></li> +<li><a href="/passport/sdk-android">Android SDK</a></li> +<li><a href="/passport/sdk-javascript">Javascript SDK</a></li> +</ul> +<h4><a class="anchor" href="#request-parameters" id="request-parameters" name="request-parameters"><i class="anchor-icon"></i></a>Request Parameters</h4> +<p>Use the following parameters to request information with the SDK:</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Parameters</strong></td> +<td><strong>Type</strong></td> +<td><strong>Required</strong></td> +</tr> +<tr> +<td>bot_id</td> +<td>Integer</td> +<td>Yes</td> +</tr> +<tr> +<td>scope</td> +<td><a href="#passportscope">PassportScope</a></td> +<td>Yes</td> +</tr> +<tr> +<td>public_key</td> +<td>String</td> +<td>Yes</td> +</tr> +<tr> +<td>nonce</td> +<td>String</td> +<td>Yes</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportscope" id="passportscope" name="passportscope"><i class="anchor-icon"></i></a>PassportScope</h4> +<p>This object represents the data to be requested.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>data</td> +<td>Array of <a href="#passportscopeelement">PassportScopeElement</a></td> +<td>List of requested elements, each type may be used only once in the entire array of PassportScopeElement objects</td> +</tr> +<tr> +<td>v</td> +<td>Integer</td> +<td>Scope version, must be <em>1</em></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportscopeelement" id="passportscopeelement" name="passportscopeelement"><i class="anchor-icon"></i></a>PassportScopeElement</h4> +<p>This object represents a requested element, should be one of:</p> +<ul> +<li><a href="#passportscopeelementoneofseveral">PassportScopeElementOneOfSeveral</a> - use to request any one of the documents included in the scope.</li> +<li><a href="#passportscopeelementone">PassportScopeElementOne</a> – use to request one particular document.</li> +</ul> +<h4><a class="anchor" href="#passportscopeelementoneofseveral" id="passportscopeelementoneofseveral" name="passportscopeelementoneofseveral"><i class="anchor-icon"></i></a>PassportScopeElementOneOfSeveral</h4> +<p>This object represents several elements one of which must be provided.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>one_of</td> +<td>Array of <a href="#passportscopeelementone">PassportScopeElementOne</a></td> +<td>List of elements one of which must be provided; must contain either several of “passport”, “driver_license”, “identity_card”, “internal_passport” <strong>or</strong> several of “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration”, “temporary_registration”</td> +</tr> +<tr> +<td>selfie</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document from this list that the user chooses to upload.</td> +</tr> +<tr> +<td>translation</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a translation of the document from this list that the user chooses to upload. <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportscopeelementone" id="passportscopeelementone" name="passportscopeelementone"><i class="anchor-icon"></i></a>PassportScopeElementOne</h4> +<p>This object represents one particular element that must be provided. If no options are needed, <em>String</em> can be used instead of this object to specify the type of the element.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>type</td> +<td>String</td> +<td>Element type. One of "personal_details", "passport", "driver_license", "identity_card", "internal_passport", "address", "utility_bill", "bank_statement", "rental_agreement", "passport_registration", "temporary_registration", "phone_number", "email"</td> +</tr> +<tr> +<td>selfie</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a selfie with the document as well. Available for "passport", "driver_license", "identity_card" and "internal_passport"</td> +</tr> +<tr> +<td>translation</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter if you want to request a translation of the document as well. Available for "passport", "driver_license", "identity_card", "internal_passport", "utility_bill", "bank_statement", "rental_agreement", "passport_registration" and "temporary_registration". <strong>Note:</strong> We suggest to only request translations <em>after</em> you have received a valid document that requires one.</td> +</tr> +<tr> +<td>native_names</td> +<td>Boolean</td> +<td><em>Optional.</em> Use this parameter to request the first, last and middle name of the user in the language of the user's country of residence. Available for "personal_details"</td> +</tr> +</tbody> +</table> +<p>You can also use the special type "id_document" as an alias for one of "passport", "driver_license", "identity_card" and the special type "address_document" as an alias for one of "utility_bill", "bank_statement", "rental_agreement". +So <code>{"type":"id_document",selfie:true}</code> is equal to <code>{"one_of":["passport","driver_license","identity_card"],selfie:true}</code>.</p> +<h4><a class="anchor" href="#fields" id="fields" name="fields"><i class="anchor-icon"></i></a>Fields</h4> +<p>Your bot can request personal details, one or several types of identity document, residential address, one or several types of proof of address document, a phone number, or an email address. You can also request optional <strong>selfies</strong> with the document and certified <strong>English translations</strong> of the document. +This is just a list of data types that can be requested, and the encrypted objects that will contain such data.</p> +<blockquote> +<p><strong>Note:</strong> We suggest to only request English translations <em>after</em> you have received a valid document that requires one.</p> +</blockquote> +<div><table class="table"> +<thead> +<tr><th>Name</th><th>Key</th><th>Type</th><th>Description</th></tr> +</thead> +<tbody> +<tr><td>personal_details</td><td>data</td><td><a href="#personaldetails">PersonalDetails</a></td><td>Personal Details</td></tr> +<tr><td rowspan="4">passport</td><td>data</td><td><a href="#iddocumentdata">IdDocumentData</a></td><td rowspan="4">Passport</td></tr> +<tr><td>front_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>selfie</td><td><i>Optional.</i> <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="4">internal_passport</td><td>data</td><td><a href="#iddocumentdata">IdDocumentData</a></td><td rowspan="4">Internal Passport</td></tr> +<tr><td>front_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>selfie</td><td><i>Optional.</i> <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="5">driver_license</td><td>data</td><td><a href="#iddocumentdata">IdDocumentData</a></td><td rowspan="5">Driver License</td></tr> +<tr><td>front_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>reverse_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>selfie</td><td><i>Optional.</i> <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="5">identity_card</td><td>data</td><td><a href="#iddocumentdata">IdDocumentData</a></td><td rowspan="5">Identity Card</td></tr> +<tr><td>front_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>reverse_side</td><td><a href="#passportfile">PassportFile</a></td></tr> +<tr><td>selfie</td><td><i>Optional.</i> <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>address</td><td>data</td><td><a href="#residentialaddress">ResidentialAddress</a></td><td>Address</td></tr> +<tr><td rowspan="2">utility_bill</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Utility Bill</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="2">bank_statement</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Bank Statement</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="2">rental_agreement</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Rental Agreement</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="2">passport_registration</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Registration Page in the Internal Passport</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td rowspan="2">temporary_registration</td><td>files</td><td>Array of <a href="#passportfile">PassportFile</a></td><td rowspan="2">Temporary Registration</td></tr> +<tr><td>translation</td><td><i>Optional.</i> Array of <a href="#passportfile">PassportFile</a></td></tr> +<tr><td>phone_number</td><td></td><td>String</td><td>Phone number</td></tr> +<tr><td>email</td><td></td><td>String</td><td>Email</td></tr> +</tbody> +</table></div> +<h4><a class="anchor" href="#personaldetails" id="personaldetails" name="personaldetails"><i class="anchor-icon"></i></a>PersonalDetails</h4> +<p>This object represents personal details.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>first_name</td> +<td>String</td> +<td>First Name</td> +</tr> +<tr> +<td>last_name</td> +<td>String</td> +<td>Last Name</td> +</tr> +<tr> +<td>middle_name</td> +<td>String</td> +<td><em>Optional.</em> Middle Name</td> +</tr> +<tr> +<td>birth_date</td> +<td>String</td> +<td>Date of birth in DD.MM.YYYY format</td> +</tr> +<tr> +<td>gender</td> +<td>String</td> +<td>Gender, <em>male</em> or <em>female</em></td> +</tr> +<tr> +<td>country_code</td> +<td>String</td> +<td>Citizenship (ISO 3166-1 alpha-2 country code)</td> +</tr> +<tr> +<td>residence_country_code</td> +<td>String</td> +<td>Country of residence (ISO 3166-1 alpha-2 country code)</td> +</tr> +<tr> +<td>first_name_native</td> +<td>String</td> +<td>First Name in the language of the user's country of residence</td> +</tr> +<tr> +<td>last_name_native</td> +<td>String</td> +<td>Last Name in the language of the user's country of residence</td> +</tr> +<tr> +<td>middle_name_native</td> +<td>String</td> +<td><em>Optional.</em> Middle Name in the language of the user's country of residence</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#residentialaddress" id="residentialaddress" name="residentialaddress"><i class="anchor-icon"></i></a>ResidentialAddress</h4> +<p>This object represents a residential address.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>street_line1</td> +<td>String</td> +<td>First line for the address</td> +</tr> +<tr> +<td>street_line2</td> +<td>String</td> +<td><em>Optional.</em> Second line for the address</td> +</tr> +<tr> +<td>city</td> +<td>String</td> +<td>City</td> +</tr> +<tr> +<td>state</td> +<td>String</td> +<td><em>Optional.</em> State</td> +</tr> +<tr> +<td>country_code</td> +<td>String</td> +<td>ISO 3166-1 alpha-2 country code</td> +</tr> +<tr> +<td>post_code</td> +<td>String</td> +<td>Address post code</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#iddocumentdata" id="iddocumentdata" name="iddocumentdata"><i class="anchor-icon"></i></a>IdDocumentData</h4> +<p>This object represents the data of an identity document.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>document_no</td> +<td>String</td> +<td>Document number</td> +</tr> +<tr> +<td>expiry_date</td> +<td>String</td> +<td><em>Optional.</em> Date of expiry, in DD.MM.YYYY format</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#passportfile" id="passportfile" name="passportfile"><i class="anchor-icon"></i></a>PassportFile</h4> +<p>This object represents a <a href="/bots/api#passportfile">PassportFile</a> related to a document. The file is up to 10MB in size and in the .jpg format.</p> +<h3><a class="anchor" href="#receiving-information" id="receiving-information" name="receiving-information"><i class="anchor-icon"></i></a>Receiving information</h3> +<p>When the user confirms your request by pressing the 'Authorize' button, the Bot API sends an <a href="/bots/api#update">Update</a> with the field <em>passport_data</em> to the bot that contains encrypted <a href="/bots/api#passportdata">Telegram Passport data</a>.</p> +<blockquote> +<p>Note that all base64-encoded fields should be decoded before use.</p> +</blockquote> +<h4><a class="anchor" href="#decrypting-data" id="decrypting-data" name="decrypting-data"><i class="anchor-icon"></i></a>Decrypting data</h4> +<p>To decrypt the received data, first, decrypt the credentials contained in <a href="/bots/api#encryptedcredentials">EncryptedCredentials</a>.</p> +<ol> +<li> +<p>Decrypt the credentials secret ( <em>secret</em> field in <a href="/bots/api#encryptedcredentials">EncryptedCredentials</a>) using your <strong>private</strong> key (set OAEP padding option, e.g. <code>OPENSSL_PKCS1_OAEP_PADDING</code> in PHP)</p> +</li> +<li> +<p>Use this secret and the credentials hash ( <em>hash</em> field in <a href="/bots/api#encryptedcredentials">EncryptedCredentials</a>) to calculate <em>credentials_key</em> and <em>credentials_iv</em> as described below:</p> +<pre><code> credentials_secret_hash = SHA512( credentials_secret + credentials_hash ) + credentials_key = slice( credentials_secret_hash, 0, 32 ) + credentials_iv = slice( credentials_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Decrypt the credentials data ( <em>data</em> field in <a href="/bots/api#encryptedcredentials">EncryptedCredentials</a>) by AES256-CBC using these <em>credentials_key</em> and <em>credentials_iv</em>. <strong>IMPORTANT:</strong> At this step, make sure that the credentials hash is equal to <code>SHA256( credentials_data )</code></p> +</li> +<li> +<p>Credentials data is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of this padding (including this byte). Remove the padding to get the data.</p> +</li> +</ol> +<blockquote> +<p>Note that all hashes represent as raw binary data, not hexits</p> +</blockquote> +<h4><a class="anchor" href="#credentials" id="credentials" name="credentials"><i class="anchor-icon"></i></a>Credentials</h4> +<p>Credentials is a JSON-serialized object.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>secure_data</td> +<td><a href="#securedata">SecureData</a></td> +<td>Credentials for encrypted data</td> +</tr> +<tr> +<td>nonce</td> +<td>String</td> +<td>Bot-specified nonce</td> +</tr> +</tbody> +</table> +<p><strong>IMPORTANT:</strong> Make sure that the <strong>nonce</strong> is the same as was passed in the request.</p> +<h4><a class="anchor" href="#securedata" id="securedata" name="securedata"><i class="anchor-icon"></i></a>SecureData</h4> +<p>This object represents the credentials required to decrypt encrypted data. All fields are optional and depend on <a href="#fields">fields</a> that were requested.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>personal_details</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted personal details</td> +</tr> +<tr> +<td>passport</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted passport</td> +</tr> +<tr> +<td>internal_passport</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted internal passport</td> +</tr> +<tr> +<td>driver_license</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted driver license</td> +</tr> +<tr> +<td>identity_card</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted ID card</td> +</tr> +<tr> +<td>address</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted residential address</td> +</tr> +<tr> +<td>utility_bill</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted utility bill</td> +</tr> +<tr> +<td>bank_statement</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted bank statement</td> +</tr> +<tr> +<td>rental_agreement</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted rental agreement</td> +</tr> +<tr> +<td>passport_registration</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted registration from internal passport</td> +</tr> +<tr> +<td>temporary_registration</td> +<td><a href="#securevalue">SecureValue</a></td> +<td><em>Optional.</em> Credentials for encrypted temporary registration</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#securevalue" id="securevalue" name="securevalue"><i class="anchor-icon"></i></a>SecureValue</h4> +<p>This object represents the credentials required to decrypt encrypted values. All fields are optional and depend on the type of <a href="#fields">fields</a> that were requested.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>data</td> +<td><a href="#datacredentials">DataCredentials</a></td> +<td><em>Optional.</em> Credentials for encrypted Telegram Passport data. Available for "personal_details", "passport", "driver_license", "identity_card", "internal_passport" and "address" types.</td> +</tr> +<tr> +<td>front_side</td> +<td><a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for an encrypted document's front side. Available for "passport", "driver_license", "identity_card" and "internal_passport".</td> +</tr> +<tr> +<td>reverse_side</td> +<td><a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for an encrypted document's reverse side. Available for "driver_license" and "identity_card".</td> +</tr> +<tr> +<td>selfie</td> +<td><a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for an encrypted selfie of the user with a document. Available for "passport", "driver_license", "identity_card" and "internal_passport".</td> +</tr> +<tr> +<td>translation</td> +<td>Array of <a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for an encrypted translation of the document. Available for "passport", "driver_license", "identity_card", "internal_passport", "utility_bill", "bank_statement", "rental_agreement", "passport_registration" and "temporary_registration".</td> +</tr> +<tr> +<td>files</td> +<td>Array of <a href="#filecredentials">FileCredentials</a></td> +<td><em>Optional.</em> Credentials for encrypted files. Available for "utility_bill", "bank_statement", "rental_agreement", "passport_registration" and "temporary_registration" types.</td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#datacredentials" id="datacredentials" name="datacredentials"><i class="anchor-icon"></i></a>DataCredentials</h4> +<p>These credentials can be used to decrypt encrypted data from the <em>data</em> field in <a href="/bots/api#encryptedpassportelement">EncryptedPassportElement</a>.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>data_hash</td> +<td>String</td> +<td>Checksum of encrypted data</td> +</tr> +<tr> +<td>secret</td> +<td>String</td> +<td>Secret of encrypted data</td> +</tr> +</tbody> +</table> +<ol> +<li> +<p>To decrypt data, use the corresponding secret and data_hash from <a href="#datacredentials">DataCredentials</a> as described below:</p> +<pre><code> data_secret_hash = SHA512( data_secret + data_hash ) + data_key = slice( data_secret_hash, 0, 32 ) + data_iv = slice( data_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Use AES256-CBC with this <em>data_key</em> and <em>data_iv</em> to decrypt the data (the <em>data</em> field in <a href="/bots/api#encryptedpassportelement">EncryptedPassportElement</a>). <strong>IMPORTANT:</strong> At this step, make sure that data_hash from the credentials is equal to <code>SHA256( data )</code>.</p> +</li> +<li> +<p>The data is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of the padding (including this byte). Remove padding to get the data.</p> +</li> +<li> +<p>The data is a JSON-serialized object of one of the following types: <a href="#personaldetails">PersonalDetails</a>, <a href="#iddocumentdata">IdDocumentData</a>, <a href="#residentialaddress">ResidentialAddress</a>, depending on <a href="#fields">type</a>.</p> +</li> +</ol> +<h4><a class="anchor" href="#filecredentials" id="filecredentials" name="filecredentials"><i class="anchor-icon"></i></a>FileCredentials</h4> +<p>These credentials can be used to decrypt encrypted files from the <em>front_side</em>, <em>reverse_side</em>, <em>selfie</em>, <em>files</em> and <em>translation</em> fields in <a href="/bots/api#encryptedpassportelement">EncryptedPassportElement</a>.</p> +<table class="table"> +<tbody> +<tr> +<td><strong>Field</strong></td> +<td><strong>Type</strong></td> +<td><strong>Description</strong></td> +</tr> +<tr> +<td>file_hash</td> +<td>String</td> +<td>Checksum of encrypted file</td> +</tr> +<tr> +<td>secret</td> +<td>String</td> +<td>Secret of encrypted file</td> +</tr> +</tbody> +</table> +<ol> +<li> +<p>To decrypt the file, use the corresponding secret and file_hash from <a href="#filecredentials">FileCredentials</a> as described below:</p> +<pre><code> file_secret_hash = SHA512( file_secret + file_hash ) + file_key = slice( file_secret_hash, 0, 32 ) + file_iv = slice( file_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Download the encrypted file using the <a href="/bots/api#getfile">getFile</a> method.</p> +</li> +<li> +<p>Use AES256-CBC with this <em>file_key</em> and <em>file_iv</em> to decrypt the content of the file. <strong>IMPORTANT:</strong> At this step, make sure that file_hash from the credentials is equal to <code>SHA256( file_content )</code>.</p> +</li> +<li> +<p>The content of the file is padded with 32 to 255 random padding bytes to make its length divisible by 16 bytes. The first byte contains the length of the padding (including that byte). Remove padding to get the file content.</p> +</li> +</ol> +<h3><a class="anchor" href="#fixing-errors" id="fixing-errors" name="fixing-errors"><i class="anchor-icon"></i></a>Fixing errors</h3> +<p>If the data you received contains errors, the bot can use the <a href="/bots/api#setpassportdataerrors">setPassportDataErrors</a> method to inform the user and <a href="#requesting-information">request information</a> again. The user will not be able to resend the data, until all errors are fixed.</p></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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/passport/encryption.html b/data/corefork.telegram.org/passport/encryption.html new file mode 100644 index 0000000000..8aed498b38 --- /dev/null +++ b/data/corefork.telegram.org/passport/encryption.html @@ -0,0 +1,606 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Passport Encryption Details</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Telegram Passport data is stored encrypted End-to-End which means that the Telegram server does not have access to the…"> + <meta property="og:title" content="Telegram Passport Encryption Details"> + <meta property="og:image" content="01b864b17e59449f0d"> + <meta property="og:description" content="Telegram Passport data is stored encrypted End-to-End which means that the Telegram server does not have access to the…"> + <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?215" 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="/passport" >Telegram Passport</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/passport/encryption" >Telegram Passport Encryption Details</a></li></ul></div> + <h1 id="dev_page_title">Telegram Passport Encryption Details</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p>Telegram Passport data is stored encrypted <strong>End-to-End</strong> which means that the Telegram server does not have access to the data and only functions as a storage for encrypted data it can't decipher. Encryption and decryption are handled exclusively by the Telegram clients, which are <strong>open source</strong>.</p> +<h3><a class="anchor" href="#overview" id="overview" name="overview"><i class="anchor-icon"></i></a>Overview</h3> +<p>To encrypt each particular element of Telegram Passport, the client generates a random secret. The secret is a 32-byte number with the modulo 255 sum of bytes equal to 239. This secret is in turn encrypted with the <a href="#passport-secret"><em>passport_secret</em></a> that is generated when the user creates their Telegram Passport. <em>passport_secret</em> is encrypted with the user's password and is stored encrypted in the Telegram Cloud.</p> +<h3><a class="anchor" href="#passport-secret" id="passport-secret" name="passport-secret"><i class="anchor-icon"></i></a>Passport Secret</h3> +<p>The passport secret is <em>one of</em> the secret parameters used to <a href="#data-and-file-encryption">encrypt the data</a> uploaded by the user to the Telegram Cloud.</p> +<p>When first setting up Telegram Passport it must be created, encrypted and uploaded as described in <a href="#passport-secret-encryption">Passport Secret Encryption</a>.</p> +<p>When using Telegram Passport normally, it must be downloaded and decrypted for use as described in <a href="#passport-secret-decryption">Passport Secret Decryption</a>.</p> +<p>The passport secret must also be downloaded, re-encrypted and re-uploaded as described in <a href="#passport-secret-encryption">Passport Secret Encryption</a> if a new, more secure encryption algorithm is defined in a newer version of Telegram or the 2FA password is updated.</p> +<h4><a class="anchor" href="#passport-secret-encryption" id="passport-secret-encryption" name="passport-secret-encryption"><i class="anchor-icon"></i></a>Passport Secret Encryption</h4> +<p>First of all, server-side passport parameters are fetched, schema:</p> +<pre><code><a href='/constructor/account.password'>account.password</a>#185b184f flags:<a href='/type/%23'>#</a> has_recovery:flags.0?<a href='/constructor/true'>true</a> has_secure_values:flags.1?<a href='/constructor/true'>true</a> has_password:flags.2?<a href='/constructor/true'>true</a> current_algo:flags.2?<a href='/type/PasswordKdfAlgo'>PasswordKdfAlgo</a> srp_B:flags.2?<a href='/type/bytes'>bytes</a> srp_id:flags.2?<a href='/type/long'>long</a> hint:flags.3?<a href='/type/string'>string</a> email_unconfirmed_pattern:flags.4?<a href='/type/string'>string</a> new_algo:<a href='/type/PasswordKdfAlgo'>PasswordKdfAlgo</a> new_secure_algo:<a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a> secure_random:<a href='/type/bytes'>bytes</a> pending_reset_date:flags.5?<a href='/type/int'>int</a> = <a href='/type/account.Password'>account.Password</a>; + +<a href='/constructor/securePasswordKdfAlgoUnknown'>securePasswordKdfAlgoUnknown</a>#4a8537 = <a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a>; +<a href='/constructor/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000'>securePasswordKdfAlgoPBKDF2HMACSHA512iter100000</a>#bbf2dda0 salt:<a href='/type/bytes'>bytes</a> = <a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a>; +<a href='/constructor/securePasswordKdfAlgoSHA512'>securePasswordKdfAlgoSHA512</a>#86471d92 salt:<a href='/type/bytes'>bytes</a> = <a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a>; + + +---functions--- + +<a href='/method/account.getPassword'>account.getPassword</a>#548a30f5 = <a href='/type/account.Password'>account.Password</a>;</code></pre> +<p>When Telegram Passport is first used, the client generates a <em>passport_secret</em> (a 32-byte number with the modulo 255 sum of bytes equal to 239), using a part of server-generated random <em>secure_random</em> from <a href="/constructor/account.password">account.password</a> as an additional source of entropy for OpenSSL (when re-encrypting the <em>passport_secret</em> with a more secure algorithm or after a 2FA password change, the previous <em>passport_secret</em> is used, instead). +Then <em>passport_secret</em> is then encrypted using the user's password and hashed using the schema and parameters specified in the <em>new_algo</em> field of <a href="/constructor/account.password">account.password</a>.</p> +<p>The server should <strong>always</strong> return a <code>securePasswordKdfAlgoPBKDF2HMACSHA512iter100000</code> constructor in the <code>new_algo</code> field. +If <code>securePasswordKdfAlgoUnknown</code> is returned, the remotely stored secret is encrypted using a new algorithm, not supported by the current client: the user should update their app.</p> +<p>The other constructors may be used <strong>only</strong> when <a href="#passport-secret-decryption"><strong>decrypting</strong> old passport parameters</a> generated by a legacy client; in this case, the passport secret should be re-encrypted and updated using <code>new_algo</code>.</p> +<ul> +<li> +<p>First of all, a fingerprint of the secret is calculated ( <em>passport_secret_fingerprint</em> ):</p> +<pre><code>passport_secret_fingerprint = long( slice( SHA256( passport_secret ), 0, 8 ) )</code></pre> +</li> +<li> +<p>Next the user's 2FA plaintext <code>password</code> is hashed using the specified algorithm.</p> +<ul> +<li> +<p><a href="/constructor/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000">securePasswordKdfAlgoPBKDF2HMACSHA512iter100000</a></p> +<ul> +<li>The following parameters are extracted/generated:<ul> +<li>8 bytes of the server salt <em>server_passport_salt</em> from the <em>salt</em> field of <a href="/constructor/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000">securePasswordKdfAlgoPBKDF2HMACSHA512iter100000</a> constructor</li> +<li>32 random bytes of the client salt <em>client_passport_salt</em>.</li> +</ul> +</li> +</ul> +<p>To make the password hashes stored on the server more resilient to brute-force attacks while maintaining practical speeds on the range of devices popular among Telegram users, PBKDF2-HMAC-SHA512 with 100000 iterations is used: </p> +<pre><code>server_passport_salt = new_algo.salt +client_passport_salt = random_bytes(32) +passport_secret_salt = server_passport_salt + client_passport_salt +password_hash = PBKDF2( password, passport_secret_salt, HMACSHA512, 100000)</code></pre> +</li> +</ul> +</li> +<li> +<p>The <code>secret_key</code> and <code>iv</code> parameters are extracted from the generated <code>password_hash</code></p> +<pre><code>secret_key = slice( password_hash, 0, 32 ) +iv = slice( password_hash, 32, 16 )</code></pre> +</li> +<li> +<p>The <em>passport_secret</em> generated previously is encrypted using AES256-CBC with the key <em>secret_key</em> and <em>iv</em>:</p> +<pre><code>encrypted_passport_secret = AES256_CBC_ENC(passport_secret, secret_key, iv)</code></pre> +</li> +<li> +<p>The <em>encrypted_passport_secret</em> is stored on the server together with the <em>passport_secret_salt</em> and the fingerprint of the secret <em>passport_secret_fingerprint</em>: +Schema: </p> +<pre><code><a href='/constructor/boolFalse'>boolFalse</a>#bc799737 = <a href='/type/Bool'>Bool</a>; +<a href='/constructor/boolTrue'>boolTrue</a>#997275b5 = <a href='/type/Bool'>Bool</a>; + +<a href='/constructor/inputCheckPasswordSRP'>inputCheckPasswordSRP</a>#d27ff082 srp_id:<a href='/type/long'>long</a> A:<a href='/type/bytes'>bytes</a> M1:<a href='/type/bytes'>bytes</a> = <a href='/type/InputCheckPasswordSRP'>InputCheckPasswordSRP</a>; + +<a href='/constructor/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000'>securePasswordKdfAlgoPBKDF2HMACSHA512iter100000</a>#bbf2dda0 salt:<a href='/type/bytes'>bytes</a> = <a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a>; + +<a href='/constructor/secureSecretSettings'>secureSecretSettings</a>#1527bcac secure_algo:<a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a> secure_secret:<a href='/type/bytes'>bytes</a> secure_secret_id:<a href='/type/long'>long</a> = <a href='/type/SecureSecretSettings'>SecureSecretSettings</a>; + +<a href='/constructor/account.passwordInputSettings'>account.passwordInputSettings</a>#c23727c9 flags:<a href='/type/%23'>#</a> new_algo:flags.0?<a href='/type/PasswordKdfAlgo'>PasswordKdfAlgo</a> new_password_hash:flags.0?<a href='/type/bytes'>bytes</a> hint:flags.0?<a href='/type/string'>string</a> email:flags.1?<a href='/type/string'>string</a> new_secure_settings:flags.2?<a href='/type/SecureSecretSettings'>SecureSecretSettings</a> = <a href='/type/account.PasswordInputSettings'>account.PasswordInputSettings</a>; + +---functions--- + +<a href='/method/account.updatePasswordSettings'>account.updatePasswordSettings</a>#a59b102f password:<a href='/type/InputCheckPasswordSRP'>InputCheckPasswordSRP</a> new_settings:<a href='/type/account.PasswordInputSettings'>account.PasswordInputSettings</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>The client calls <a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a>.</p> +<ul> +<li>The <code>password</code> parameter is generated using the user's 2FA password as per <a href="/api/srp#setting-a-new-2fa-password">updating the 2FA password</a>.</li> +<li>The <a href="/constructor/account.passwordInputSettings">account.passwordInputSettings</a> constructor in <code>new_settings</code> should contain <em>only</em> the <code>new_secure_setting</code> parameter with the <a href="/constructor/secureSecretSettings">secureSecretSettings</a>.</li> +</ul> +<p>The <a href="/constructor/secureSecretSettings">secureSecretSettings</a> constructor is generated thusly:</p> +<ul> +<li><code>secure_algo</code> is set to the <code>new_algo</code> field of <a href="/constructor/account.password">account.password</a>, used to generate the encrypted passport secret: <code>salt</code> is substituted with <code>passport_secret_salt</code></li> +<li><code>secure_secret</code> is set to the new <code>encrypted_passport_secret</code></li> +<li><code>secure_secret_id</code> is set to the new <code>passport_secret_fingerprint</code></li> +</ul> +</li> +</ul> +<p>Subsequently, <a href="#passport-secret-decryption">the client receives the encrypted <em>passport_secret</em> from the server and decrypts it after the user enters their password »</a>.</p> +<p>In case the password is changed or a more secure algorithm is introduced in an update of the API, the client re-encrypts the <em>passport_secret</em> using the new password. +If the password is disabled, all Telegram Passport data is lost.</p> +<h4><a class="anchor" href="#passport-secret-decryption" id="passport-secret-decryption" name="passport-secret-decryption"><i class="anchor-icon"></i></a>Passport Secret Decryption</h4> +<p>Schema:</p> +<pre><code><a href='/constructor/securePasswordKdfAlgoUnknown'>securePasswordKdfAlgoUnknown</a>#4a8537 = <a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a>; +<a href='/constructor/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000'>securePasswordKdfAlgoPBKDF2HMACSHA512iter100000</a>#bbf2dda0 salt:<a href='/type/bytes'>bytes</a> = <a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a>; +<a href='/constructor/securePasswordKdfAlgoSHA512'>securePasswordKdfAlgoSHA512</a>#86471d92 salt:<a href='/type/bytes'>bytes</a> = <a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a>; + +<a href='/constructor/secureSecretSettings'>secureSecretSettings</a>#1527bcac secure_algo:<a href='/type/SecurePasswordKdfAlgo'>SecurePasswordKdfAlgo</a> secure_secret:<a href='/type/bytes'>bytes</a> secure_secret_id:<a href='/type/long'>long</a> = <a href='/type/SecureSecretSettings'>SecureSecretSettings</a>; + +<a href='/constructor/account.passwordSettings'>account.passwordSettings</a>#9a5c33e5 flags:<a href='/type/%23'>#</a> email:flags.0?<a href='/type/string'>string</a> secure_settings:flags.1?<a href='/type/SecureSecretSettings'>SecureSecretSettings</a> = <a href='/type/account.PasswordSettings'>account.PasswordSettings</a>; + +---functions--- + +<a href='/method/account.getPasswordSettings'>account.getPasswordSettings</a>#9cd4eaf9 password:<a href='/type/InputCheckPasswordSRP'>InputCheckPasswordSRP</a> = <a href='/type/account.PasswordSettings'>account.PasswordSettings</a>;</code></pre> +<p>The client requests the user's <a href="/api/srp">2FA password and generates the SRP paramaters</a> to be passed to <a href="/method/account.getPasswordSettings">account.getPasswordSettings</a>.</p> +<p>If the password is correct, an <a href="/constructor/account.passwordSettings">account.passwordSettings</a> constructor with <a href="/constructor/secureSecretSettings">secureSecretSettings</a> is returned.</p> +<p><code>encrypted_passport_secret</code>, <code>passport_secret_fingerprint</code> parameters are extracted from the <a href="/constructor/secureSecretSettings">secureSecretSettings</a> constructor:</p> +<pre><code>encrypted_passport_secret = secureSecretSettings.secure_secret +passport_secret_fingerprint = secureSecretSettings.secure_id</code></pre> +<p>The combined <code>passport_secret_salt</code> is extracted from the <a href="/type/SecurePasswordKdfAlgo">SecurePasswordKdfAlgo</a>.</p> +<pre><code>passport_secret_salt = SecurePasswordKdfAlgo.salt</code></pre> +<p>Similar to <a href="#passport-secret-encryption">passport secret encryption</a>, the following process is used to decrypt and verify the <code>encrypted_passport_secret</code>:</p> +<ul> +<li> +<p>The user's 2FA plaintext <code>password</code> is hashed using the specified algorithm.</p> +<ul> +<li> +<p><a href="/constructor/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000">securePasswordKdfAlgoPBKDF2HMACSHA512iter100000</a> +To make the password hashes stored on the server more resilient to brute-force attacks while maintaining practical speeds on the range of devices popular among Telegram users, PBKDF2-HMAC-SHA512 with 100000 iterations is used: </p> +<pre><code>password_hash = PBKDF2( password, passport_secret_salt, HMACSHA512, 100000)</code></pre> +</li> +<li> +<p><a href="/constructor/securePasswordKdfAlgoSHA512">securePasswordKdfAlgoSHA512</a> +This mode can only be found in hashes generated by legacy clients: hashes generated with this mode <strong>must</strong> be re-encrypted and updated using <a href="/constructor/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000">securePasswordKdfAlgoPBKDF2HMACSHA512iter100000</a> as described in <a href="#passport-secret-encryption">Passport Secret Encryption</a>.</p> +<pre><code>password_hash = SHA512( passport_secret_salt + password + passport_secret_salt )</code></pre> +</li> +</ul> +</li> +<li> +<p>The <code>secret_key</code> and <code>iv</code> parameters are extracted from the generated <code>password_hash</code></p> +<pre><code>secret_key = slice( password_hash, 0, 32 ) +iv = slice( password_hash, 32, 16 )</code></pre> +</li> +<li> +<p>The <em>encrypted_passport_secret</em> is decrypted using AES256-CBC with the key <em>secret_key</em> and <em>iv</em>:</p> +<pre><code>passport_secret = AES256_CBC_DEC(encrypted_passport_secret, secret_key, iv)</code></pre> +</li> +<li> +<p>The <em>passport_secret</em> is verified by generating and checking the fingerprint:</p> +<pre><code>my_passport_secret_fingerprint = long( slice( SHA256( passport_secret ), 0, 8 ) )</code></pre> +<p>The client must verify that <em>passport_secret_fingerprint</em> is indeed equal to <em>my_passport_secret_fingerprint</em>.</p> +</li> +</ul> +<p>The <em>passport_secret</em> can now be used to decrypt encrypted passport data stored on telegram servers:</p> +<h3><a class="anchor" href="#data-and-file-encryption" id="data-and-file-encryption" name="data-and-file-encryption"><i class="anchor-icon"></i></a>Data and File Encryption</h3> +<h4><a class="anchor" href="#encryption" id="encryption" name="encryption"><i class="anchor-icon"></i></a>Encryption</h4> +<p>To encrypt Telegram Passport data, the client generates a <em>data_secret</em> (a 32-byte number with the modulo 255 sum of bytes equal to 239). The the data is encrypted according to the following scheme:</p> +<ul> +<li> +<p>Data is padded to a length that is divisible by 16 bytes. To achieve this, 32 to 255 bytes are added at the beginning, where the first byte always holds the number of added bytes and the rest are random.</p> +</li> +<li> +<p>We calculate the hash from this data <em>data_hash</em>:</p> +<pre><code>data_hash = SHA256( data_bytes )</code></pre> +</li> +<li> +<p>The encryption key <em>data_key</em> is calculated:</p> +<pre><code>data_secret_hash = SHA512( data_secret + data_hash ) +data_key = slice( data_secret_hash, 0, 32 ) +iv = slice( data_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Data is encrypted using AES256-CBC with the key <em>data_key</em> and <em>iv</em>:</p> +<pre><code>encrypted_data = AES256_CBC_ENC(data, data_key, iv)</code></pre> +</li> +<li> +<p><em>secret_key</em>, the key for encrypting the <em>data_secret</em>, is calculated: </p> +<pre><code>secret_hash = SHA512( passport_secret + data_hash ) +secret_key = slice( secret_hash, 0, 32 ) +iv = slice( secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p><em>data_secret</em> is encrypted using AES256-CBC with the key <em>secret_key</em> and <em>iv</em>:</p> +<pre><code>encrypted_data_secret = AES256_CBC_ENC(data_secret, secret_key, iv)</code></pre> +</li> +<li> +<p><em>encrypted_data</em> together with the <em>encrypted_data_secret</em> and <em>data_hash</em> are saved on the server:</p> +<p>Schema:</p> +<pre><code><a href='/constructor/inputSecureFileUploaded'>inputSecureFileUploaded</a>#3334b0f0 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> md5_checksum:<a href='/type/string'>string</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; +<a href='/constructor/inputSecureFile'>inputSecureFile</a>#5367e5be id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; + +<a href='/constructor/secureValueTypePersonalDetails'>secureValueTypePersonalDetails</a>#9d2a81e3 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePassport'>secureValueTypePassport</a>#3dac6a00 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeDriverLicense'>secureValueTypeDriverLicense</a>#6e425c4 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeIdentityCard'>secureValueTypeIdentityCard</a>#a0d0744b = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeInternalPassport'>secureValueTypeInternalPassport</a>#99a48f23 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeAddress'>secureValueTypeAddress</a>#cbe31e26 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeUtilityBill'>secureValueTypeUtilityBill</a>#fc36954e = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeBankStatement'>secureValueTypeBankStatement</a>#89137c0d = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeRentalAgreement'>secureValueTypeRentalAgreement</a>#8b883488 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePassportRegistration'>secureValueTypePassportRegistration</a>#99e3806a = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeTemporaryRegistration'>secureValueTypeTemporaryRegistration</a>#ea02ec33 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePhone'>secureValueTypePhone</a>#b320aadb = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeEmail'>secureValueTypeEmail</a>#8e3ca7ee = <a href='/type/SecureValueType'>SecureValueType</a>; + +<a href='/constructor/securePlainPhone'>securePlainPhone</a>#7d6099dd phone:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; +<a href='/constructor/securePlainEmail'>securePlainEmail</a>#21ec5a5f email:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; + +<a href='/constructor/secureData'>secureData</a>#8aeabec3 data:<a href='/type/bytes'>bytes</a> data_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureData'>SecureData</a>; + +<a href='/constructor/inputSecureValue'>inputSecureValue</a>#db21d0a7 flags:<a href='/type/%23'>#</a> type:<a href='/type/SecureValueType'>SecureValueType</a> data:flags.0?<a href='/type/SecureData'>SecureData</a> front_side:flags.1?<a href='/type/InputSecureFile'>InputSecureFile</a> reverse_side:flags.2?<a href='/type/InputSecureFile'>InputSecureFile</a> selfie:flags.3?<a href='/type/InputSecureFile'>InputSecureFile</a> translation:flags.6?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputSecureFile'>InputSecureFile</a>> files:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputSecureFile'>InputSecureFile</a>> plain_data:flags.5?<a href='/type/SecurePlainData'>SecurePlainData</a> = <a href='/type/InputSecureValue'>InputSecureValue</a>; + +---functions--- + +<a href='/method/account.saveSecureValue'>account.saveSecureValue</a>#899fe31d value:<a href='/type/InputSecureValue'>InputSecureValue</a> secure_secret_id:<a href='/type/long'>long</a> = <a href='/type/SecureValue'>SecureValue</a>;</code></pre> +<p><a href="/method/account.saveSecureValue">account.saveSecureValue</a> must be used to save an encrypted passport <a href="/constructor/secureValue">value</a> of a certain <a href="/type/SecureValueType">type</a>. +The <code>secure_secret_id</code> parameter must be set to the <code>passport_secret_fingerprint</code> of the <code>passport_secret</code> used to encrypt the <code>data_secret</code>.</p> +<p>The <a href="/constructor/inputSecureValue">inputSecureValue</a> constructor contains info about passport data of a certain <code>type</code>, identified by the chosen <a href="/type/SecureValueType">SecureValueType</a> constructor.</p> +<p>Depending on the chosen type, encrypted data will have to be stored into a <a href="/constructor/secureData">secureData</a> constructor, uploaded as an <a href="/type/InputSecureFile">InputSecureFile</a>, or in the case of email addresses and phone numbers, verified and provided in a <a href="/type/SecurePlainData">SecurePlainData</a> constructor. +For more info on each mode, and when each one should be used, read on.</p> +</li> +</ul> +<h4><a class="anchor" href="#packing" id="packing" name="packing"><i class="anchor-icon"></i></a>Packing</h4> +<h5><a class="anchor" href="#securedata" id="securedata" name="securedata"><i class="anchor-icon"></i></a><a href="/type/SecureData">SecureData</a></h5> +<pre><code><a href='/constructor/secureData'>secureData</a>#8aeabec3 data:<a href='/type/bytes'>bytes</a> data_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureData'>SecureData</a>;</code></pre> +<ul> +<li><code>data</code> is an encrypted and padded (<a href="#encryption">see Encryption</a>) JSON-serialized object of one of the following types: <a href="/passport#personaldetails">PersonalDetails</a>, <a href="/passport#iddocumentdata">IdDocumentData</a>, <a href="/passport#residentialaddress">ResidentialAddress</a>, depending on the chosen <a href="/type/SecureValueType">type</a>. +Data must be in JSON format and not TL, as it has to be passed directly to the service using E2E encryption, without the bot API middleman to convert TL objects.</li> +<li><code>data_hash</code> is the <em>data_hash</em></li> +<li><code>secret</code> is the <em>encrypted_data_secret</em></li> +</ul> +<p>Data is an encrypted and padded JSON-serialized object of one of the specified JSON types, depending on the chosen <a href="/type/SecureValueType">type</a>.</p> +<table class="table"> +<thead> +<tr> +<th>Chosen type</th> +<th>JSON object</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/secureValueTypePersonalDetails">secureValueTypePersonalDetails</a></td> +<td><a href="/passport#personaldetails">PersonalDetails</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassport">secureValueTypePassport</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></td> +<td><a href="/passport#iddocumentdata">IdDocumentData</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeAddress">secureValueTypeAddress</a></td> +<td><a href="/passport#residentialaddress">ResidentialAddress</a></td> +</tr> +</tbody> +</table> +<h5><a class="anchor" href="#inputsecurefile" id="inputsecurefile" name="inputsecurefile"><i class="anchor-icon"></i></a><a href="/type/InputSecureFile">InputSecureFile</a></h5> +<pre><code><a href='/constructor/inputSecureFileUploaded'>inputSecureFileUploaded</a>#3334b0f0 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> md5_checksum:<a href='/type/string'>string</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; +<a href='/constructor/inputSecureFile'>inputSecureFile</a>#5367e5be id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; + +---functions--- + +<a href='/method/upload.saveFilePart'>upload.saveFilePart</a>#b304a621 file_id:<a href='/type/long'>long</a> file_part:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>Files (JPG format, max. 10MB) are encrypted and padded (<a href="#encryption">see Encryption</a>), and then uploaded chunk by chunk as described in <a href="/api/files">files »</a>, except that instead of generating an <a href="/constructor/inputFile">inputFile</a>, an <a href="/constructor/inputSecureFile">inputSecureFile</a> should be generated, instead.</p> +<ul> +<li>As for secret chat files, the <code>md5_checksum</code> is to be set to the MD5 hash of the <em>encrypted</em> file, for a server-side integrity check.</li> +<li>The <code>file_hash</code> field should be set to the <em>data_hash</em> of the data.</li> +<li>The <code>secret</code> field is the <em>encrypted_data_secret</em>.</li> +</ul> +<h5><a class="anchor" href="#secureplaindata" id="secureplaindata" name="secureplaindata"><i class="anchor-icon"></i></a><a href="/type/SecurePlainData">SecurePlainData</a></h5> +<pre><code><a href='/constructor/securePlainPhone'>securePlainPhone</a>#7d6099dd phone:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; +<a href='/constructor/securePlainEmail'>securePlainEmail</a>#21ec5a5f email:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; + +---functions--- + +<a href='/method/account.sendVerifyPhoneCode'>account.sendVerifyPhoneCode</a>#a5a356f9 phone_number:<a href='/type/string'>string</a> settings:<a href='/type/CodeSettings'>CodeSettings</a> = <a href='/type/auth.SentCode'>auth.SentCode</a>; +<a href='/method/account.verifyPhone'>account.verifyPhone</a>#4dd3a7f6 phone_number:<a href='/type/string'>string</a> phone_code_hash:<a href='/type/string'>string</a> phone_code:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>; +<a href='/method/account.sendVerifyEmailCode'>account.sendVerifyEmailCode</a>#7011509f email:<a href='/type/string'>string</a> = <a href='/type/account.SentEmailCode'>account.SentEmailCode</a>; +<a href='/method/account.verifyEmail'>account.verifyEmail</a>#ecba39db email:<a href='/type/string'>string</a> code:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>; + +<a href='/method/auth.resendCode'>auth.resendCode</a>#3ef1a9bf phone_number:<a href='/type/string'>string</a> phone_code_hash:<a href='/type/string'>string</a> = <a href='/type/auth.SentCode'>auth.SentCode</a>; +<a href='/method/auth.cancelCode'>auth.cancelCode</a>#1f040578 phone_number:<a href='/type/string'>string</a> phone_code_hash:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>The email/phone is passed in plaintext using the respective <a href="/type/SecurePlainData">SecurePlainData</a> constructor. +To verify a phone number or email and use it in Telegram Passport, use the appropriate methods:</p> +<ul> +<li><a href="/method/account.sendVerifyEmailCode">account.sendVerifyEmailCode</a> - Send the verification email code for telegram <a href="/passport">passport</a>.</li> +<li><a href="/method/account.verifyEmail">account.verifyEmail</a> - Verify an email address for telegram <a href="/passport">passport</a>.</li> +<li><a href="/method/account.sendVerifyPhoneCode">account.sendVerifyPhoneCode</a> - Send the verification phone code for telegram <a href="/passport">passport</a>.</li> +<li><a href="/method/account.verifyPhone">account.verifyPhone</a> - Verify a phone number for telegram <a href="/passport">passport</a>. </li> +<li><a href="/method/auth.resendCode">auth.resendCode</a> - Only for phone code verification, resend the code using a different method</li> +<li><a href="/method/auth.cancelCode">auth.cancelCode</a> - Only for phone code verification, cancel phone code verification</li> +</ul> +<p>The flow is similar to the one used for <a href="/api/auth">logging in</a>:</p> +<ul> +<li>Send email/phone code using the appropriate <code>account.sendVerify*Code</code> method</li> +<li>Pass the received code to the appropriate <code>account.verify*</code> method</li> +<li>Only for phone code verification, you can also resend/cancel the phone code using <a href="/method/auth.resendCode">auth.resendCode</a>/<a href="/method/auth.cancelCode">auth.cancelCode</a>, as for <a href="/api/auth">logging in</a>.</li> +</ul> +<p>For more info, see the <a href="/api/auth">authorization docs</a>.</p> +<h4><a class="anchor" href="#when-to-use-each-constructor" id="when-to-use-each-constructor" name="when-to-use-each-constructor"><i class="anchor-icon"></i></a>When to use each constructor.</h4> +<pre><code><a href='/constructor/inputSecureFileUploaded'>inputSecureFileUploaded</a>#3334b0f0 id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> md5_checksum:<a href='/type/string'>string</a> file_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; +<a href='/constructor/inputSecureFile'>inputSecureFile</a>#5367e5be id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputSecureFile'>InputSecureFile</a>; + +<a href='/constructor/secureValueTypePersonalDetails'>secureValueTypePersonalDetails</a>#9d2a81e3 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePassport'>secureValueTypePassport</a>#3dac6a00 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeDriverLicense'>secureValueTypeDriverLicense</a>#6e425c4 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeIdentityCard'>secureValueTypeIdentityCard</a>#a0d0744b = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeInternalPassport'>secureValueTypeInternalPassport</a>#99a48f23 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeAddress'>secureValueTypeAddress</a>#cbe31e26 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeUtilityBill'>secureValueTypeUtilityBill</a>#fc36954e = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeBankStatement'>secureValueTypeBankStatement</a>#89137c0d = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeRentalAgreement'>secureValueTypeRentalAgreement</a>#8b883488 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePassportRegistration'>secureValueTypePassportRegistration</a>#99e3806a = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeTemporaryRegistration'>secureValueTypeTemporaryRegistration</a>#ea02ec33 = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypePhone'>secureValueTypePhone</a>#b320aadb = <a href='/type/SecureValueType'>SecureValueType</a>; +<a href='/constructor/secureValueTypeEmail'>secureValueTypeEmail</a>#8e3ca7ee = <a href='/type/SecureValueType'>SecureValueType</a>; + +<a href='/constructor/securePlainPhone'>securePlainPhone</a>#7d6099dd phone:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; +<a href='/constructor/securePlainEmail'>securePlainEmail</a>#21ec5a5f email:<a href='/type/string'>string</a> = <a href='/type/SecurePlainData'>SecurePlainData</a>; + +<a href='/constructor/secureData'>secureData</a>#8aeabec3 data:<a href='/type/bytes'>bytes</a> data_hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureData'>SecureData</a>; + +<a href='/constructor/inputSecureValue'>inputSecureValue</a>#db21d0a7 flags:<a href='/type/%23'>#</a> type:<a href='/type/SecureValueType'>SecureValueType</a> data:flags.0?<a href='/type/SecureData'>SecureData</a> front_side:flags.1?<a href='/type/InputSecureFile'>InputSecureFile</a> reverse_side:flags.2?<a href='/type/InputSecureFile'>InputSecureFile</a> selfie:flags.3?<a href='/type/InputSecureFile'>InputSecureFile</a> translation:flags.6?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputSecureFile'>InputSecureFile</a>> files:flags.4?<a href='/type/Vector%20t'>Vector</a><<a href='/type/InputSecureFile'>InputSecureFile</a>> plain_data:flags.5?<a href='/type/SecurePlainData'>SecurePlainData</a> = <a href='/type/InputSecureValue'>InputSecureValue</a>;</code></pre> +<p>The schema for the <a href="/constructor/inputSecureValue">inputSecureValue</a> constructor defines the constructor to use for each field.</p> +<table class="table"> +<thead> +<tr> +<th>Name</th> +<th>Type</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><strong>type</strong></td> +<td><a href="/type/SecureValueType">SecureValueType</a></td> +<td>Secure <a href="/passport">passport</a> value type</td> +</tr> +<tr> +<td><strong>data</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.0?<a href="/type/SecureData">SecureData</a></td> +<td>Encrypted <a href="/passport">Telegram Passport</a> element data</td> +</tr> +<tr> +<td><strong>front_side</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.1?<a href="/type/InputSecureFile">InputSecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the front side of the document</td> +</tr> +<tr> +<td><strong>reverse_side</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.2?<a href="/type/InputSecureFile">InputSecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with the reverse side of the document</td> +</tr> +<tr> +<td><strong>selfie</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.3?<a href="/type/InputSecureFile">InputSecureFile</a></td> +<td>Encrypted <a href="/passport">passport</a> file with a selfie of the user holding the document</td> +</tr> +<tr> +<td><strong>translation</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.6?<a href="/type/Vector%20t">Vector</a><<a href="/type/InputSecureFile">InputSecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with translated versions of the provided documents</td> +</tr> +<tr> +<td><strong>files</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.4?<a href="/type/Vector%20t">Vector</a><<a href="/type/InputSecureFile">InputSecureFile</a>></td> +<td>Array of encrypted <a href="/passport">passport</a> files with photos the of the documents</td> +</tr> +<tr> +<td><strong>plain_data</strong></td> +<td><a href="/mtproto/TL-combinators#conditional-fields">flags</a>.5?<a href="/type/SecurePlainData">SecurePlainData</a></td> +<td>Plaintext verified <a href="/passport">passport</a> data</td> +</tr> +</tbody> +</table> +<p>Here's a list of possible <a href="/type/SecureValueType">SecureValueTypes</a>, and the parameters that can be set/requested when using each type.</p> +<table class="table"> +<thead> +<tr> +<th>Type</th> +<th>Allowed fields</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/secureValueTypeEmail">secureValueTypeEmail</a></td> +<td><code>plain_data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeEmail">secureValueTypePhone</a></td> +<td><code>plain_data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePersonalDetails">secureValueTypePersonalDetails</a></td> +<td><code>data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassport">secureValueTypePassport</a></td> +<td><code>data</code>, <code>front_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a></td> +<td><code>data</code>, <code>front_side</code>, <code>reverse_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a></td> +<td><code>data</code>, <code>front_side</code>, <code>reverse_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></td> +<td><code>data</code>, <code>front_side</code>, <code>selfie</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeAddress">secureValueTypeAddress</a></td> +<td><code>data</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeUtilityBill">secureValueTypeUtilityBill</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeBankStatement">secureValueTypeBankStatement</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeRentalAgreement">secureValueTypeRentalAgreement</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassportRegistration">secureValueTypePassportRegistration</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeTemporaryRegistration">secureValueTypeTemporaryRegistration</a></td> +<td><code>files</code>, <code>translation</code></td> +</tr> +</tbody> +</table> +<h4><a class="anchor" href="#fetching-and-deleting-stored-passport-data" id="fetching-and-deleting-stored-passport-data" name="fetching-and-deleting-stored-passport-data"><i class="anchor-icon"></i></a>Fetching and deleting stored passport data</h4> +<pre><code>---functions--- + +<a href='/method/account.getAllSecureValues'>account.getAllSecureValues</a>#b288bc7d = <a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>>; +<a href='/method/account.getSecureValue'>account.getSecureValue</a>#73665bc2 types:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueType'>SecureValueType</a>> = <a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValue'>SecureValue</a>>; +<a href='/method/account.deleteSecureValue'>account.deleteSecureValue</a>#b880bc4b types:<a href='/type/Vector%20t'>Vector</a><<a href='/type/SecureValueType'>SecureValueType</a>> = <a href='/type/Bool'>Bool</a>;</code></pre> +<p>The above methods can be used to fetch or remove encrypted Telegram Passport files stored in the Telegram Cloud by document type.</p> +<h3><a class="anchor" href="#passport-credentials" id="passport-credentials" name="passport-credentials"><i class="anchor-icon"></i></a>Passport Credentials</h3> +<p>When a service requests data, it passes a <em>nonce</em> to the client. The nonce is a cryptographically secure unique identifier which allows the service to identify a request when receiving data as well as confirm the integrity of the data. The Telegram server doesn't have access to this nonce.</p> +<p>Once the user authorizes the Telegram Passport data transfer, the client forms the credentials (<a href="/passport#credentials">Credentials JSON object</a>). Credentials contain the <em>data_hash</em> and <em>data_secret</em> from each element of Telegram Passport to which the user has allowed access. In addition to this, the credentials will always contain the <em>nonce</em> that the client received from the service at the initiation of the request. </p> +<p>Credentials are then passed to the service through the Bot API in encrypted form. To encrypt the credentials, the client generates a <em>credentials_secret</em> (a 32-byte number with the modulo 255 sum of bytes equal to 239). Then the credentials are encrypted according to the following scheme:</p> +<ul> +<li> +<p>Credentials are padded to a length which is divisible by 16 bytes. To achieve this, 32 to 255 bytes are added at the beginning, where the first byte always holds the number of added bytes and the rest are random.</p> +</li> +<li> +<p>A hash of the padded credentials <em>credentials_hash</em> is calculated:</p> +<pre><code>credentials_hash = SHA256( credentials )</code></pre> +</li> +<li> +<p>The encryption key <em>credentials_key</em> is calculated:</p> +<pre><code>credentials_secret_hash = SHA512( credentials_secret + credentials_hash ) +credentials_key = slice( credentials_secret_hash, 0, 32 ) +iv = slice( credentials_secret_hash, 32, 16 )</code></pre> +</li> +<li> +<p>Credentials are encrypted using AES256-CBC with the key <em>credentials_key</em> and <em>iv</em>. </p> +<pre><code>encrypted_credentials = AES256-CBC-ENC(credentials, credentials_key, iv)</code></pre> +</li> +<li> +<p><em>credentials_secret</em> is encrypted with the public RSA-key of the service with OPENSSL_PKCS1_OAEP_PADDING.</p> +<pre><code>encrypted_credentials_secret = RSA-ENC(credentials_secret, key, OPENSSL_PKCS1_OAEP_PADDING)</code></pre> +</li> +<li> +<p>The encrypted credentials are passed to the service via the MTProto API together with the encrypred <em>credentials_secret</em> and <em>credentials_hash</em>. Along with the credentials, the service receives from the Telegram Cloud the data it requested in encrypted form. See <a href="/api/passport#submitting-the-passport-form">Submitting the Passport Form</a> and <a href="/bots/api#passportdata">PassportData</a>:</p> +<pre><code><a href='/constructor/secureCredentialsEncrypted'>secureCredentialsEncrypted</a>#33f0ea47 data:<a href='/type/bytes'>bytes</a> hash:<a href='/type/bytes'>bytes</a> secret:<a href='/type/bytes'>bytes</a> = <a href='/type/SecureCredentialsEncrypted'>SecureCredentialsEncrypted</a>;</code></pre> +</li> +<li> +<p><code>data</code> is the <em>encrypted_credentials</em></p> +</li> +<li> +<p><code>hash</code> is the <em>credentials_hash</em></p> +</li> +<li> +<p><code>secret</code> is the <em>encrypted_credentials_secret</em></p> +</li> +</ul> +<p>Then the service decrypts the data as described <a href="https://core.telegram.org/passport#receiving-information">here</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="//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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/passport/example.html b/data/corefork.telegram.org/passport/example.html new file mode 100644 index 0000000000..fbfa48d49e --- /dev/null +++ b/data/corefork.telegram.org/passport/example.html @@ -0,0 +1,585 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Example</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="If you'd like to test Telegram Passport, use this page to request data. If you'd like to check out a real-life implementation…"> + <meta property="og:title" content="Example"> + <meta property="og:image" content=""> + <meta property="og:description" content="If you'd like to test Telegram Passport, use this page to request data. If you'd like to check out a real-life implementation…"> + <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/telegram-extra.css?9" rel="stylesheet"> + + <link href="/css/telegram.css?215" 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">Example</h1> + + <div id="dev_page_content"><p>If you'd like to test <a href="https://telegram.org/blog/passport">Telegram Passport</a>, use this page to request data. If you'd like to check out a real-life implementation, please see <a href="https://telegram.org/blog/export-and-more#improved-telegram-passport">this blog post</a> for examples of services that have integrated Telegram Passport.</p> +<h3><a class="anchor" href="#request-telegram-passport-data" id="request-telegram-passport-data" name="request-telegram-passport-data"><i class="anchor-icon"></i></a>Request Telegram Passport Data</h3> +<p><script src="/js/telegram-passport2.js?2"></script> +<form class="form-horizontal telegram-passport-form clearfix" id="telegram_passport_form" style=""> + <div class="form-group visible-md-block visible-lg-block"> + <div class="col-md-8 col-md-offset-3"> + <div class="row"> + <label class="col-md-2 col-md-offset-7 control-label"> + <div class="text-center">Selfie</div> + </label> + <label class="col-md-3 control-label"> + <div class="text-center">Translation</div> + </label> + </div> + </div> + </div> + <div class="form-group"> + <label class="col-md-3 control-label">Identity:</label> + <div class="col-md-8"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="personal_details" value="1" onchange="updateForm()" checked /> + <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">Personal Details</span> + </label> + <div class="passport-opt"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="personal_details_native_names" value="1" onchange="updateForm()" /> + <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">name in the language of the user's country of residence</span> + </label> + </div> + </div> + <label class="col-md-3 control-label">ID Documents:</label> + <div class="col-md-8"> + <div class="row"> + <div class="col-md-7"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport" value="1" onchange="updateForm()" checked /> + <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">Passport</span> + </label> + </div> + <div class="col-md-2 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport_selfie" value="1" onchange="updateForm()" /> + <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">with selfie</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-7"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="driver_license" value="1" onchange="updateForm()" checked /> + <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">Driver License</span> + </label> + </div> + <div class="col-md-2 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="driver_license_selfie" value="1" onchange="updateForm()" /> + <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">with selfie</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="driver_license_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-7"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="identity_card" value="1" onchange="updateForm()" checked /> + <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">Identity Card</span> + </label> + </div> + <div class="col-md-2 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="identity_card_selfie" value="1" onchange="updateForm()" /> + <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">with selfie</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="identity_card_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-7"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="internal_passport" value="1" onchange="updateForm()" /> + <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">Internal Passport</span> + </label> + </div> + <div class="col-md-2 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="internal_passport_selfie" value="1" onchange="updateForm()" /> + <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">with selfie</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="internal_passport_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-12 sub-control-label"> + <label class="radio-item"> + <input type="radio" class="radio" name="id_mode" value="one_of" onchange="updateForm()" 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">One of the selected</span> + </label> + <label class="radio-item"> + <input type="radio" class="radio" name="id_mode" value="" onchange="updateForm()" /> + <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">All of the selected</span> + </label> + </div> + </div> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Address:</label> + <div class="col-md-8"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="address" value="1" onchange="updateForm()" checked /> + <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">Residential Address</span> + </label> + </div> + <label class="col-md-3 control-label">Proof of Address:</label> + <div class="col-md-8"> + <div class="row"> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="utility_bill" value="1" onchange="updateForm()" checked /> + <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">Utility Bill</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="utility_bill_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="bank_statement" value="1" onchange="updateForm()" checked /> + <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">Bank Statement</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="bank_statement_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="rental_agreement" value="1" onchange="updateForm()" checked /> + <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">Rental Agreement</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="rental_agreement_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport_registration" value="1" onchange="updateForm()" /> + <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">Registration page from Internal Passport</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="passport_registration_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-9"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="temporary_registration" value="1" onchange="updateForm()" /> + <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">Temporary Registration</span> + </label> + </div> + <div class="col-md-3 passport-opt-col"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="temporary_registration_translation" value="1" onchange="updateForm()" /> + <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">with translation</span> + </label> + </div> + <div class="col-md-12 sub-control-label"> + <label class="radio-item"> + <input type="radio" class="radio" name="ad_mode" value="one_of" onchange="updateForm()" 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">One of the selected</span> + </label> + <label class="radio-item"> + <input type="radio" class="radio" name="ad_mode" value="" onchange="updateForm()" /> + <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">All of the selected</span> + </label> + </div> + </div> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Contact:</label> + <div class="col-md-8"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="phone_number" value="1" onchange="updateForm()" checked /> + <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">Phone Number</span> + </label> + </div> + <div class="col-md-8 col-md-offset-3"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="email" value="1" onchange="updateForm()" checked /> + <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">Email</span> + </label> + </div> + </div> + + <div class="form-group telegram-passport-wrap"> + <div class="col-md-8 col-md-offset-3"> + <div class="telegram-passport-login-wrap" id="telegram_passport_login_btn"></div> + <script> +Telegram.Passport.createAuthButton('telegram_passport_login_btn', function() { + var form = $('#telegram_passport_form').get(0); + var fields = ['personal_details', 'address', 'phone_number', 'email']; + var scope_data = []; + for (var i = 0; i < fields.length; i++) { + var field, opts = {}, has_opts = false; + if (form[fields[i]].checked) { + field = fields[i]; + if (form[fields[i] + '_native_names'] && + form[fields[i] + '_native_names'].checked) { + has_opts = true; opts.native_names = true; + } + if (has_opts) { + opts.type = field; + field = opts; + } + scope_data.push(field); + } + } + var id_fields = ['passport', 'internal_passport', 'driver_license', 'identity_card']; + var id_data = []; + for (var i = 0; i < id_fields.length; i++) { + var field, opts = {}, has_opts = false; + if (form[id_fields[i]].checked) { + field = id_fields[i]; + if (form[id_fields[i] + '_selfie'] && + form[id_fields[i] + '_selfie'].checked) { + has_opts = true; opts.selfie = true; + } + if (form[id_fields[i] + '_translation'] && + form[id_fields[i] + '_translation'].checked) { + has_opts = true; opts.translation = true; + } + if (has_opts) { + opts.type = field; + field = opts; + } + id_data.push(field); + } + } + if (id_data.length > 1 && form['id_mode'].value == 'one_of') { + scope_data.push({one_of: id_data}); + } else { + scope_data = scope_data.concat(id_data); + } + var ad_fields = ['utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration']; + var ad_data = []; + for (var i = 0; i < ad_fields.length; i++) { + var field, opts = {}, has_opts = false; + if (form[ad_fields[i]].checked) { + field = ad_fields[i]; + if (form[ad_fields[i] + '_translation'] && + form[ad_fields[i] + '_translation'].checked) { + has_opts = true; opts.translation = true; + } + if (has_opts) { + opts.type = field; + field = opts; + } + ad_data.push(field); + } + } + if (ad_data.length > 1 && form['ad_mode'].value == 'one_of') { + scope_data.push({one_of: ad_data}); + } else { + scope_data = scope_data.concat(ad_data); + } + authOptions.scope = {data: scope_data, v: 1}; + return authOptions; +}, { + radius: 6 +}); + </script> + </div> + </div> +</form> +<div id="telegram_passport_pending" style="display:none;"> + <div class="telegram-passport-pending"><img width="128" height="128" src="/img/passport_processing.gif"></div> +</div> +<form id="telegram_passport_data" class="telegram-passport-form" style="display:none;" onsubmit="return false;"></form></p> +<hr> +<blockquote> +<p>Note that the passport demo bot will only store data for <strong>1 hour</strong> and then discard it. After logging in here, you can use the logout button on this page to reset your session.</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="//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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/jquery-ui.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>function updatePending() { + $.ajax({ + url: '/loadpassport?hash=telegram-crawler', + type: 'GET', + dataType: 'json', + success: function (data) { + console.log(data); + if (data.html) { + $('#telegram_passport_data').html(data.html); + $('#telegram_passport_pending').hide(); + $('#telegram_passport_data').show(); + initPassportData(data.data); + } else if (data.pending) { + setTimeout(updatePending, 1000); + } else { + $('#telegram_passport_pending').hide(); + $('#telegram_passport_form').show(); + } + }, + error: function (xhr) { + alert(xhr.responseText || 'Unknown error'); + } + }); +} +function updateReject(el, className) { + $(el).parents('.' + className).toggleClass('item-rejected', el.checked); + if (window.passportData) { + var has_checked = false; + for (var i = 0; i < passportData.errors.length; i++) { + if (el.form['reject' + i].checked) { + has_checked = true; break; + } + } + $('#telegram_passport_errors_btn').attr('disabled', !has_checked); + } +} +function updateForm() { + var form = $('#telegram_passport_form').get(0); + var fields = ['passport', 'internal_passport', 'driver_license', 'identity_card', 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration']; + for (var i = 0; i < fields.length; i++) { + var field = fields[i]; + if (form[field]) { + var sfield = field + '_selfie', + tfield = field + '_translation'; + if (form[sfield]) { + if (form[field].checked) { + if (form[sfield].disabled) { + form[sfield].checked = form[sfield].old_checked; + form[sfield].disabled = false; + } + } else { + if (!form[sfield].disabled) { + form[sfield].old_checked = form[sfield].checked; + form[sfield].disabled = true; + form[sfield].checked = false; + } + } + } + if (form[tfield]) { + if (form[field].checked) { + if (form[tfield].disabled) { + form[tfield].checked = form[tfield].old_checked; + form[tfield].disabled = false; + } + } else { + if (!form[tfield].disabled) { + form[tfield].old_checked = form[tfield].checked; + form[tfield].disabled = true; + form[tfield].checked = false; + } + } + } + } + } + var field = 'personal_details'; + var nfield = 'personal_details_native_names'; + if (form[field].checked) { + if (form[nfield].disabled) { + form[nfield].checked = form[nfield].old_checked; + form[nfield].disabled = false; + } + } else { + if (!form[nfield].disabled) { + form[nfield].old_checked = form[nfield].checked; + form[nfield].disabled = true; + form[nfield].checked = false; + } + } + var id_fields = ['passport', 'internal_passport', 'driver_license', 'identity_card']; + var id_sel_cnt = 0; + for (var i = 0; i < id_fields.length; i++) { + var field = id_fields[i]; + if (form[field].checked) { + id_sel_cnt++; + } + } + for (var i = 0; i < form.ad_mode.length; i++) { + form.id_mode[i].disabled = (id_sel_cnt <= 1); + } + var ad_fields = ['utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration']; + var ad_sel_cnt = 0; + for (var i = 0; i < ad_fields.length; i++) { + var field = ad_fields[i]; + if (form[field].checked) { + ad_sel_cnt++; + } + } + for (var i = 0; i < form.ad_mode.length; i++) { + form.ad_mode[i].disabled = (ad_sel_cnt <= 1); + } +} +var authOptions = {"bot_id":543260180,"public_key":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv6m1zBF8lZOCqcxf8hnj\nkvHwuWdU8s4rBWaxKXH\/vDDUklcCS5uhSnmjhxWca9suubaG3lW4HxlCilkeJPVf\njimg5Q8ZqWrR3OoOihEpcG9iJZTOEpsEk7VtEiabgacBG3Quv9JslTrDe95Fn801\nt9d21HXwgMrHeHpWDOn31Dr+woEH+kwySUWa6L\/ZbnGwSNP7eeDTE7Amz1RMDk3t\n8EWGq58u0IQatPcEH09aUQlKzk6MIiALkZ9ILBKCBk6d2WCokKnsdBctovNbxwSx\nhP1qst1r+Yc8iPBZozsDC0ZsC5jXCkcODI3OC0tkNtYzN2XKalW5R0DjDRUDmGhT\nzQIDAQAB\n-----END PUBLIC KEY-----\n","nonce":"telegram-crawler","callback_url":"https:\/\/corefork.telegram.org\/passport\/example?passport_ssid=telegram-crawler"}; +function initPassportData(data) { + window.passportData = data; +} +function sendErrors(el) { + if (!window.passportData) { + return false; + } + var errors = []; + for (var i = 0; i < passportData.errors.length; i++) { + if (el.form['reject' + i].checked) { + errors.push(passportData.errors[i]); + } + } + $.ajax({ + url: passportData.set_errors_url, + type: 'POST', + data: JSON.stringify(errors), + contentType: 'application/json', + dataType: 'json', + success: function (result) { + if (result) { + $('#telegram_passport_errors_sent').addClass('shown'); + setTimeout(function() { + $('#telegram_passport_errors_sent').removeClass('shown'); + }, 2000); + } + }, + error: function (xhr) { + alert(xhr.responseText || 'Unknown error'); + } + }); + return false; +} +function restartAuth() { + $.ajax({ + url: '/restartpassport?hash=telegram-crawler', + type: 'GET', + }); + $('#telegram_passport_form').show(); + $('#telegram_passport_data').hide(); + $('#telegram_passport_pending').hide(); + return false; +} +initRipple(); +updateForm(); + +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/schema/end-to-end.html b/data/corefork.telegram.org/schema/end-to-end.html new file mode 100644 index 0000000000..ddaa977025 --- /dev/null +++ b/data/corefork.telegram.org/schema/end-to-end.html @@ -0,0 +1,225 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Current end-to-end TL-schema</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Below you will find the current end-to-end TL-schema. More details on TL » +See also: +End-to-end encryption in MTProto,…"> + <meta property="og:title" content="Current end-to-end TL-schema"> + <meta property="og:image" content=""> + <meta property="og:description" content="Below you will find the current end-to-end TL-schema. More details on TL » +See also: +End-to-end encryption in MTProto,…"> + <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?215" 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="/api/end-to-end" >Secret chats</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema/end-to-end" >Current end-to-end TL-schema</a></li></ul></div> + <h1 id="dev_page_title">Current end-to-end TL-schema</h1> + + <div id="dev_page_content"><blockquote> +<p>Below you will find the current end-to-end TL-schema. <a href="/mtproto/TL">More details on TL »</a> </p> +</blockquote> +<p>See also:<br> +<a href="/api/end-to-end">End-to-end encryption in MTProto, Secret Chats</a><br> +<a href="/schema/end-to-end-json">Detailed schema in JSON</a> </p></div> + <div class="clearfix"> + <ul class="dev_layer_select slightly-pull-right nav nav-pills"> + <li class="dropdown"> + <a class="dropdown-toggle" onclick="return dropdownClick(this, event)" href="#">Layer 133 <b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="?layer=1">1 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code>===8=== +<a href="/constructor/decryptedMessage" >decryptedMessage</a>#1f814f1f random_id:<a href="/type/long" >long</a> random_bytes:<a href="/type/bytes" >bytes</a> message:<a href="/type/string" >string</a> media:<a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a> = <a href="/type/DecryptedMessage" >DecryptedMessage</a>; +<a href="/constructor/decryptedMessageService" >decryptedMessageService</a>#aa48327d random_id:<a href="/type/long" >long</a> random_bytes:<a href="/type/bytes" >bytes</a> action:<a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a> = <a href="/type/DecryptedMessage" >DecryptedMessage</a>; +<a href="/constructor/decryptedMessageMediaEmpty" >decryptedMessageMediaEmpty</a>#89f5c4a = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageMediaPhoto" >decryptedMessageMediaPhoto</a>#32798a8c thumb:<a href="/type/bytes" >bytes</a> thumb_w:<a href="/type/int" >int</a> thumb_h:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageMediaVideo" >decryptedMessageMediaVideo</a>#4cee6ef3 thumb:<a href="/type/bytes" >bytes</a> thumb_w:<a href="/type/int" >int</a> thumb_h:<a href="/type/int" >int</a> duration:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageMediaGeoPoint" >decryptedMessageMediaGeoPoint</a>#35480a59 lat:<a href="/type/double" >double</a> long:<a href="/type/double" >double</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageMediaContact" >decryptedMessageMediaContact</a>#588a0a97 phone_number:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> user_id:<a href="/type/int" >int</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageActionSetMessageTTL" >decryptedMessageActionSetMessageTTL</a>#a1733aec ttl_seconds:<a href="/type/int" >int</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageMediaDocument" >decryptedMessageMediaDocument</a>#b095434b thumb:<a href="/type/bytes" >bytes</a> thumb_w:<a href="/type/int" >int</a> thumb_h:<a href="/type/int" >int</a> file_name:<a href="/type/string" >string</a> mime_type:<a href="/type/string" >string</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageMediaAudio" >decryptedMessageMediaAudio</a>#6080758f duration:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageActionReadMessages" >decryptedMessageActionReadMessages</a>#c4f40be random_ids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageActionDeleteMessages" >decryptedMessageActionDeleteMessages</a>#65614304 random_ids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageActionScreenshotMessages" >decryptedMessageActionScreenshotMessages</a>#8ac1f475 random_ids:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageActionFlushHistory" >decryptedMessageActionFlushHistory</a>#6719e45c = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; + +===17=== +<a href="/constructor/decryptedMessage" >decryptedMessage</a>#204d3878 random_id:<a href="/type/long" >long</a> ttl:<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> media:<a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a> = <a href="/type/DecryptedMessage" >DecryptedMessage</a>; +<a href="/constructor/decryptedMessageService" >decryptedMessageService</a>#73164160 random_id:<a href="/type/long" >long</a> action:<a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a> = <a href="/type/DecryptedMessage" >DecryptedMessage</a>; +<a href="/constructor/decryptedMessageMediaVideo" >decryptedMessageMediaVideo</a>#524a415d thumb:<a href="/type/bytes" >bytes</a> thumb_w:<a href="/type/int" >int</a> thumb_h:<a href="/type/int" >int</a> duration:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageMediaAudio" >decryptedMessageMediaAudio</a>#57e0a9cb duration:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageLayer" >decryptedMessageLayer</a>#1be31789 random_bytes:<a href="/type/bytes" >bytes</a> layer:<a href="/type/int" >int</a> in_seq_no:<a href="/type/int" >int</a> out_seq_no:<a href="/type/int" >int</a> message:<a href="/type/DecryptedMessage" >DecryptedMessage</a> = <a href="/type/DecryptedMessageLayer" >DecryptedMessageLayer</a>; +<a href="/constructor/sendMessageTypingAction" >sendMessageTypingAction</a>#16bf744e = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageCancelAction" >sendMessageCancelAction</a>#fd5ec8f5 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageRecordVideoAction" >sendMessageRecordVideoAction</a>#a187d66f = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadVideoAction" >sendMessageUploadVideoAction</a>#92042ff7 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageRecordAudioAction" >sendMessageRecordAudioAction</a>#d52f73f7 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadAudioAction" >sendMessageUploadAudioAction</a>#e6ac8a6f = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadPhotoAction" >sendMessageUploadPhotoAction</a>#990a3c1a = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadDocumentAction" >sendMessageUploadDocumentAction</a>#8faee98e = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageGeoLocationAction" >sendMessageGeoLocationAction</a>#176f8ba1 = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageChooseContactAction" >sendMessageChooseContactAction</a>#628cbc6f = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/decryptedMessageActionResend" >decryptedMessageActionResend</a>#511110b0 start_seq_no:<a href="/type/int" >int</a> end_seq_no:<a href="/type/int" >int</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageActionNotifyLayer" >decryptedMessageActionNotifyLayer</a>#f3048883 layer:<a href="/type/int" >int</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageActionTyping" >decryptedMessageActionTyping</a>#ccb27641 action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; + +===20=== +<a href="/constructor/decryptedMessageActionRequestKey" >decryptedMessageActionRequestKey</a>#f3c9611b exchange_id:<a href="/type/long" >long</a> g_a:<a href="/type/bytes" >bytes</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageActionAcceptKey" >decryptedMessageActionAcceptKey</a>#6fe1735b exchange_id:<a href="/type/long" >long</a> g_b:<a href="/type/bytes" >bytes</a> key_fingerprint:<a href="/type/long" >long</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageActionAbortKey" >decryptedMessageActionAbortKey</a>#dd05ec6b exchange_id:<a href="/type/long" >long</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageActionCommitKey" >decryptedMessageActionCommitKey</a>#ec2e0b9b exchange_id:<a href="/type/long" >long</a> key_fingerprint:<a href="/type/long" >long</a> = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; +<a href="/constructor/decryptedMessageActionNoop" >decryptedMessageActionNoop</a>#a82fdd63 = <a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a>; + +===23=== +<a href="/constructor/documentAttributeImageSize" >documentAttributeImageSize</a>#6c37c15c w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeAnimated" >documentAttributeAnimated</a>#11b58939 = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeSticker" >documentAttributeSticker</a>#fb0a5727 = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeVideo" >documentAttributeVideo</a>#5910cccb duration:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeAudio" >documentAttributeAudio</a>#51448e5 duration:<a href="/type/int" >int</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeFilename" >documentAttributeFilename</a>#15590068 file_name:<a href="/type/string" >string</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/photoSizeEmpty" >photoSizeEmpty</a>#e17e23c type:<a href="/type/string" >string</a> = <a href="/type/PhotoSize" >PhotoSize</a>; +<a href="/constructor/photoSize" >photoSize</a>#77bfb61b type:<a href="/type/string" >string</a> location:<a href="/type/FileLocation" >FileLocation</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> = <a href="/type/PhotoSize" >PhotoSize</a>; +<a href="/constructor/photoCachedSize" >photoCachedSize</a>#e9a734fa type:<a href="/type/string" >string</a> location:<a href="/type/FileLocation" >FileLocation</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> bytes:<a href="/type/bytes" >bytes</a> = <a href="/type/PhotoSize" >PhotoSize</a>; +<a href="/constructor/fileLocationUnavailable" >fileLocationUnavailable</a>#7c596b46 volume_id:<a href="/type/long" >long</a> local_id:<a href="/type/int" >int</a> secret:<a href="/type/long" >long</a> = <a href="/type/FileLocation" >FileLocation</a>; +<a href="/constructor/fileLocation" >fileLocation</a>#53d69076 dc_id:<a href="/type/int" >int</a> volume_id:<a href="/type/long" >long</a> local_id:<a href="/type/int" >int</a> secret:<a href="/type/long" >long</a> = <a href="/type/FileLocation" >FileLocation</a>; +<a href="/constructor/decryptedMessageMediaExternalDocument" >decryptedMessageMediaExternalDocument</a>#fa95b0dd id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> size:<a href="/type/int" >int</a> thumb:<a href="/type/PhotoSize" >PhotoSize</a> dc_id:<a href="/type/int" >int</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; + +===45=== +<a href="/constructor/decryptedMessage" >decryptedMessage</a>#36b091de flags:<a href="/type/%23" >#</a> random_id:<a href="/type/long" >long</a> ttl:<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> media:flags.9?<a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> via_bot_name:flags.11?<a href="/type/string" >string</a> reply_to_random_id:flags.3?<a href="/type/long" >long</a> = <a href="/type/DecryptedMessage" >DecryptedMessage</a>; +<a href="/constructor/decryptedMessageMediaPhoto" >decryptedMessageMediaPhoto</a>#f1fa8d78 thumb:<a href="/type/bytes" >bytes</a> thumb_w:<a href="/type/int" >int</a> thumb_h:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> caption:<a href="/type/string" >string</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageMediaVideo" >decryptedMessageMediaVideo</a>#970c8c0e thumb:<a href="/type/bytes" >bytes</a> thumb_w:<a href="/type/int" >int</a> thumb_h:<a href="/type/int" >int</a> duration:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> caption:<a href="/type/string" >string</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageMediaDocument" >decryptedMessageMediaDocument</a>#7afe8ae2 thumb:<a href="/type/bytes" >bytes</a> thumb_w:<a href="/type/int" >int</a> thumb_h:<a href="/type/int" >int</a> mime_type:<a href="/type/string" >string</a> size:<a href="/type/int" >int</a> key:<a href="/type/bytes" >bytes</a> iv:<a href="/type/bytes" >bytes</a> attributes:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DocumentAttribute" >DocumentAttribute</a>> caption:<a href="/type/string" >string</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/documentAttributeSticker" >documentAttributeSticker</a>#3a556302 alt:<a href="/type/string" >string</a> stickerset:<a href="/type/InputStickerSet" >InputStickerSet</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/documentAttributeAudio" >documentAttributeAudio</a>#ded218e0 duration:<a href="/type/int" >int</a> title:<a href="/type/string" >string</a> performer:<a href="/type/string" >string</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/messageEntityUnknown" >messageEntityUnknown</a>#bb92ba95 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityMention" >messageEntityMention</a>#fa04579d offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityHashtag" >messageEntityHashtag</a>#6f635b0d offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityBotCommand" >messageEntityBotCommand</a>#6cef8ac7 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityUrl" >messageEntityUrl</a>#6ed02538 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityEmail" >messageEntityEmail</a>#64e475c2 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityBold" >messageEntityBold</a>#bd610bc9 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityItalic" >messageEntityItalic</a>#826f8b60 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityCode" >messageEntityCode</a>#28a20571 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityPre" >messageEntityPre</a>#73924be0 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> language:<a href="/type/string" >string</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/messageEntityTextUrl" >messageEntityTextUrl</a>#76a6d327 offset:<a href="/type/int" >int</a> length:<a href="/type/int" >int</a> url:<a href="/type/string" >string</a> = <a href="/type/MessageEntity" >MessageEntity</a>; +<a href="/constructor/inputStickerSetShortName" >inputStickerSetShortName</a>#861cc8a0 short_name:<a href="/type/string" >string</a> = <a href="/type/InputStickerSet" >InputStickerSet</a>; +<a href="/constructor/inputStickerSetEmpty" >inputStickerSetEmpty</a>#ffb62b95 = <a href="/type/InputStickerSet" >InputStickerSet</a>; +<a href="/constructor/decryptedMessageMediaVenue" >decryptedMessageMediaVenue</a>#8a0df56f lat:<a href="/type/double" >double</a> long:<a href="/type/double" >double</a> title:<a href="/type/string" >string</a> address:<a href="/type/string" >string</a> provider:<a href="/type/string" >string</a> venue_id:<a href="/type/string" >string</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; +<a href="/constructor/decryptedMessageMediaWebPage" >decryptedMessageMediaWebPage</a>#e50511d8 url:<a href="/type/string" >string</a> = <a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a>; + +===46=== +<a href="/constructor/documentAttributeAudio" >documentAttributeAudio</a>#9852f9c6 flags:<a href="/type/%23" >#</a> voice:flags.10?true duration:<a href="/type/int" >int</a> title:flags.0?<a href="/type/string" >string</a> performer:flags.1?<a href="/type/string" >string</a> waveform:flags.2?<a href="/type/bytes" >bytes</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; + +===66=== +<a href="/constructor/documentAttributeVideo" >documentAttributeVideo</a>#ef02ce6 flags:<a href="/type/%23" >#</a> round_message:flags.0?true duration:<a href="/type/int" >int</a> w:<a href="/type/int" >int</a> h:<a href="/type/int" >int</a> = <a href="/type/DocumentAttribute" >DocumentAttribute</a>; +<a href="/constructor/sendMessageRecordRoundAction" >sendMessageRecordRoundAction</a>#88f27fbc = <a href="/type/SendMessageAction" >SendMessageAction</a>; +<a href="/constructor/sendMessageUploadRoundAction" >sendMessageUploadRoundAction</a>#bb718624 = <a href="/type/SendMessageAction" >SendMessageAction</a>; + +===73=== +<a href="/constructor/decryptedMessage" >decryptedMessage</a>#91cc4674 flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true silent:flags.5?true random_id:<a href="/type/long" >long</a> ttl:<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> media:flags.9?<a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> via_bot_name:flags.11?<a href="/type/string" >string</a> reply_to_random_id:flags.3?<a href="/type/long" >long</a> grouped_id:flags.17?<a href="/type/long" >long</a> = <a href="/type/DecryptedMessage" >DecryptedMessage</a>;</code></pre> +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/schema/json.html b/data/corefork.telegram.org/schema/json.html new file mode 100644 index 0000000000..a6e0156ccf --- /dev/null +++ b/data/corefork.telegram.org/schema/json.html @@ -0,0 +1 @@ +{"constructors":[{"id":"-1132882121","predicate":"boolFalse","params":[],"type":"Bool"},{"id":"-1720552011","predicate":"boolTrue","params":[],"type":"Bool"},{"id":"1072550713","predicate":"true","params":[],"type":"True"},{"id":"481674261","predicate":"vector","params":[],"type":"Vector t"},{"id":"-994444869","predicate":"error","params":[{"name":"code","type":"int"},{"name":"text","type":"string"}],"type":"Error"},{"id":"1450380236","predicate":"null","params":[],"type":"Null"},{"id":"2134579434","predicate":"inputPeerEmpty","params":[],"type":"InputPeer"},{"id":"2107670217","predicate":"inputPeerSelf","params":[],"type":"InputPeer"},{"id":"900291769","predicate":"inputPeerChat","params":[{"name":"chat_id","type":"long"}],"type":"InputPeer"},{"id":"-1182234929","predicate":"inputUserEmpty","params":[],"type":"InputUser"},{"id":"-138301121","predicate":"inputUserSelf","params":[],"type":"InputUser"},{"id":"-208488460","predicate":"inputPhoneContact","params":[{"name":"client_id","type":"long"},{"name":"phone","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"}],"type":"InputContact"},{"id":"-181407105","predicate":"inputFile","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"name","type":"string"},{"name":"md5_checksum","type":"string"}],"type":"InputFile"},{"id":"-1771768449","predicate":"inputMediaEmpty","params":[],"type":"InputMedia"},{"id":"505969924","predicate":"inputMediaUploadedPhoto","params":[{"name":"flags","type":"#"},{"name":"file","type":"InputFile"},{"name":"stickers","type":"flags.0?Vector<InputDocument>"},{"name":"ttl_seconds","type":"flags.1?int"}],"type":"InputMedia"},{"id":"-1279654347","predicate":"inputMediaPhoto","params":[{"name":"flags","type":"#"},{"name":"id","type":"InputPhoto"},{"name":"ttl_seconds","type":"flags.0?int"}],"type":"InputMedia"},{"id":"-104578748","predicate":"inputMediaGeoPoint","params":[{"name":"geo_point","type":"InputGeoPoint"}],"type":"InputMedia"},{"id":"-122978821","predicate":"inputMediaContact","params":[{"name":"phone_number","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"vcard","type":"string"}],"type":"InputMedia"},{"id":"480546647","predicate":"inputChatPhotoEmpty","params":[],"type":"InputChatPhoto"},{"id":"-968723890","predicate":"inputChatUploadedPhoto","params":[{"name":"flags","type":"#"},{"name":"file","type":"flags.0?InputFile"},{"name":"video","type":"flags.1?InputFile"},{"name":"video_start_ts","type":"flags.2?double"}],"type":"InputChatPhoto"},{"id":"-1991004873","predicate":"inputChatPhoto","params":[{"name":"id","type":"InputPhoto"}],"type":"InputChatPhoto"},{"id":"-457104426","predicate":"inputGeoPointEmpty","params":[],"type":"InputGeoPoint"},{"id":"1210199983","predicate":"inputGeoPoint","params":[{"name":"flags","type":"#"},{"name":"lat","type":"double"},{"name":"long","type":"double"},{"name":"accuracy_radius","type":"flags.0?int"}],"type":"InputGeoPoint"},{"id":"483901197","predicate":"inputPhotoEmpty","params":[],"type":"InputPhoto"},{"id":"1001634122","predicate":"inputPhoto","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"}],"type":"InputPhoto"},{"id":"-539317279","predicate":"inputFileLocation","params":[{"name":"volume_id","type":"long"},{"name":"local_id","type":"int"},{"name":"secret","type":"long"},{"name":"file_reference","type":"bytes"}],"type":"InputFileLocation"},{"id":"1498486562","predicate":"peerUser","params":[{"name":"user_id","type":"long"}],"type":"Peer"},{"id":"918946202","predicate":"peerChat","params":[{"name":"chat_id","type":"long"}],"type":"Peer"},{"id":"-1432995067","predicate":"storage.fileUnknown","params":[],"type":"storage.FileType"},{"id":"1086091090","predicate":"storage.filePartial","params":[],"type":"storage.FileType"},{"id":"8322574","predicate":"storage.fileJpeg","params":[],"type":"storage.FileType"},{"id":"-891180321","predicate":"storage.fileGif","params":[],"type":"storage.FileType"},{"id":"172975040","predicate":"storage.filePng","params":[],"type":"storage.FileType"},{"id":"-1373745011","predicate":"storage.filePdf","params":[],"type":"storage.FileType"},{"id":"1384777335","predicate":"storage.fileMp3","params":[],"type":"storage.FileType"},{"id":"1258941372","predicate":"storage.fileMov","params":[],"type":"storage.FileType"},{"id":"-1278304028","predicate":"storage.fileMp4","params":[],"type":"storage.FileType"},{"id":"276907596","predicate":"storage.fileWebp","params":[],"type":"storage.FileType"},{"id":"-742634630","predicate":"userEmpty","params":[{"name":"id","type":"long"}],"type":"User"},{"id":"1326562017","predicate":"userProfilePhotoEmpty","params":[],"type":"UserProfilePhoto"},{"id":"-2100168954","predicate":"userProfilePhoto","params":[{"name":"flags","type":"#"},{"name":"has_video","type":"flags.0?true"},{"name":"photo_id","type":"long"},{"name":"stripped_thumb","type":"flags.1?bytes"},{"name":"dc_id","type":"int"}],"type":"UserProfilePhoto"},{"id":"164646985","predicate":"userStatusEmpty","params":[],"type":"UserStatus"},{"id":"-306628279","predicate":"userStatusOnline","params":[{"name":"expires","type":"int"}],"type":"UserStatus"},{"id":"9203775","predicate":"userStatusOffline","params":[{"name":"was_online","type":"int"}],"type":"UserStatus"},{"id":"693512293","predicate":"chatEmpty","params":[{"name":"id","type":"long"}],"type":"Chat"},{"id":"1103884886","predicate":"chat","params":[{"name":"flags","type":"#"},{"name":"creator","type":"flags.0?true"},{"name":"kicked","type":"flags.1?true"},{"name":"left","type":"flags.2?true"},{"name":"deactivated","type":"flags.5?true"},{"name":"call_active","type":"flags.23?true"},{"name":"call_not_empty","type":"flags.24?true"},{"name":"noforwards","type":"flags.25?true"},{"name":"id","type":"long"},{"name":"title","type":"string"},{"name":"photo","type":"ChatPhoto"},{"name":"participants_count","type":"int"},{"name":"date","type":"int"},{"name":"version","type":"int"},{"name":"migrated_to","type":"flags.6?InputChannel"},{"name":"admin_rights","type":"flags.14?ChatAdminRights"},{"name":"default_banned_rights","type":"flags.18?ChatBannedRights"}],"type":"Chat"},{"id":"1704108455","predicate":"chatForbidden","params":[{"name":"id","type":"long"},{"name":"title","type":"string"}],"type":"Chat"},{"id":"1304281241","predicate":"chatFull","params":[{"name":"flags","type":"#"},{"name":"can_set_username","type":"flags.7?true"},{"name":"has_scheduled","type":"flags.8?true"},{"name":"id","type":"long"},{"name":"about","type":"string"},{"name":"participants","type":"ChatParticipants"},{"name":"chat_photo","type":"flags.2?Photo"},{"name":"notify_settings","type":"PeerNotifySettings"},{"name":"exported_invite","type":"flags.13?ExportedChatInvite"},{"name":"bot_info","type":"flags.3?Vector<BotInfo>"},{"name":"pinned_msg_id","type":"flags.6?int"},{"name":"folder_id","type":"flags.11?int"},{"name":"call","type":"flags.12?InputGroupCall"},{"name":"ttl_period","type":"flags.14?int"},{"name":"groupcall_default_join_as","type":"flags.15?Peer"},{"name":"theme_emoticon","type":"flags.16?string"}],"type":"ChatFull"},{"id":"-1070776313","predicate":"chatParticipant","params":[{"name":"user_id","type":"long"},{"name":"inviter_id","type":"long"},{"name":"date","type":"int"}],"type":"ChatParticipant"},{"id":"-2023500831","predicate":"chatParticipantsForbidden","params":[{"name":"flags","type":"#"},{"name":"chat_id","type":"long"},{"name":"self_participant","type":"flags.0?ChatParticipant"}],"type":"ChatParticipants"},{"id":"1018991608","predicate":"chatParticipants","params":[{"name":"chat_id","type":"long"},{"name":"participants","type":"Vector<ChatParticipant>"},{"name":"version","type":"int"}],"type":"ChatParticipants"},{"id":"935395612","predicate":"chatPhotoEmpty","params":[],"type":"ChatPhoto"},{"id":"476978193","predicate":"chatPhoto","params":[{"name":"flags","type":"#"},{"name":"has_video","type":"flags.0?true"},{"name":"photo_id","type":"long"},{"name":"stripped_thumb","type":"flags.1?bytes"},{"name":"dc_id","type":"int"}],"type":"ChatPhoto"},{"id":"-1868117372","predicate":"messageEmpty","params":[{"name":"flags","type":"#"},{"name":"id","type":"int"},{"name":"peer_id","type":"flags.0?Peer"}],"type":"Message"},{"id":"-2049520670","predicate":"message","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"mentioned","type":"flags.4?true"},{"name":"media_unread","type":"flags.5?true"},{"name":"silent","type":"flags.13?true"},{"name":"post","type":"flags.14?true"},{"name":"from_scheduled","type":"flags.18?true"},{"name":"legacy","type":"flags.19?true"},{"name":"edit_hide","type":"flags.21?true"},{"name":"pinned","type":"flags.24?true"},{"name":"noforwards","type":"flags.26?true"},{"name":"id","type":"int"},{"name":"from_id","type":"flags.8?Peer"},{"name":"peer_id","type":"Peer"},{"name":"fwd_from","type":"flags.2?MessageFwdHeader"},{"name":"via_bot_id","type":"flags.11?long"},{"name":"reply_to","type":"flags.3?MessageReplyHeader"},{"name":"date","type":"int"},{"name":"message","type":"string"},{"name":"media","type":"flags.9?MessageMedia"},{"name":"reply_markup","type":"flags.6?ReplyMarkup"},{"name":"entities","type":"flags.7?Vector<MessageEntity>"},{"name":"views","type":"flags.10?int"},{"name":"forwards","type":"flags.10?int"},{"name":"replies","type":"flags.23?MessageReplies"},{"name":"edit_date","type":"flags.15?int"},{"name":"post_author","type":"flags.16?string"},{"name":"grouped_id","type":"flags.17?long"},{"name":"restriction_reason","type":"flags.22?Vector<RestrictionReason>"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Message"},{"id":"721967202","predicate":"messageService","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"mentioned","type":"flags.4?true"},{"name":"media_unread","type":"flags.5?true"},{"name":"silent","type":"flags.13?true"},{"name":"post","type":"flags.14?true"},{"name":"legacy","type":"flags.19?true"},{"name":"id","type":"int"},{"name":"from_id","type":"flags.8?Peer"},{"name":"peer_id","type":"Peer"},{"name":"reply_to","type":"flags.3?MessageReplyHeader"},{"name":"date","type":"int"},{"name":"action","type":"MessageAction"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Message"},{"id":"1038967584","predicate":"messageMediaEmpty","params":[],"type":"MessageMedia"},{"id":"1766936791","predicate":"messageMediaPhoto","params":[{"name":"flags","type":"#"},{"name":"photo","type":"flags.0?Photo"},{"name":"ttl_seconds","type":"flags.2?int"}],"type":"MessageMedia"},{"id":"1457575028","predicate":"messageMediaGeo","params":[{"name":"geo","type":"GeoPoint"}],"type":"MessageMedia"},{"id":"1882335561","predicate":"messageMediaContact","params":[{"name":"phone_number","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"vcard","type":"string"},{"name":"user_id","type":"long"}],"type":"MessageMedia"},{"id":"-1618676578","predicate":"messageMediaUnsupported","params":[],"type":"MessageMedia"},{"id":"-1230047312","predicate":"messageActionEmpty","params":[],"type":"MessageAction"},{"id":"-1119368275","predicate":"messageActionChatCreate","params":[{"name":"title","type":"string"},{"name":"users","type":"Vector<long>"}],"type":"MessageAction"},{"id":"-1247687078","predicate":"messageActionChatEditTitle","params":[{"name":"title","type":"string"}],"type":"MessageAction"},{"id":"2144015272","predicate":"messageActionChatEditPhoto","params":[{"name":"photo","type":"Photo"}],"type":"MessageAction"},{"id":"-1780220945","predicate":"messageActionChatDeletePhoto","params":[],"type":"MessageAction"},{"id":"365886720","predicate":"messageActionChatAddUser","params":[{"name":"users","type":"Vector<long>"}],"type":"MessageAction"},{"id":"-1539362612","predicate":"messageActionChatDeleteUser","params":[{"name":"user_id","type":"long"}],"type":"MessageAction"},{"id":"739712882","predicate":"dialog","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.2?true"},{"name":"unread_mark","type":"flags.3?true"},{"name":"peer","type":"Peer"},{"name":"top_message","type":"int"},{"name":"read_inbox_max_id","type":"int"},{"name":"read_outbox_max_id","type":"int"},{"name":"unread_count","type":"int"},{"name":"unread_mentions_count","type":"int"},{"name":"notify_settings","type":"PeerNotifySettings"},{"name":"pts","type":"flags.0?int"},{"name":"draft","type":"flags.1?DraftMessage"},{"name":"folder_id","type":"flags.4?int"}],"type":"Dialog"},{"id":"590459437","predicate":"photoEmpty","params":[{"name":"id","type":"long"}],"type":"Photo"},{"id":"-82216347","predicate":"photo","params":[{"name":"flags","type":"#"},{"name":"has_stickers","type":"flags.0?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"date","type":"int"},{"name":"sizes","type":"Vector<PhotoSize>"},{"name":"video_sizes","type":"flags.1?Vector<VideoSize>"},{"name":"dc_id","type":"int"}],"type":"Photo"},{"id":"236446268","predicate":"photoSizeEmpty","params":[{"name":"type","type":"string"}],"type":"PhotoSize"},{"id":"1976012384","predicate":"photoSize","params":[{"name":"type","type":"string"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"size","type":"int"}],"type":"PhotoSize"},{"id":"35527382","predicate":"photoCachedSize","params":[{"name":"type","type":"string"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"bytes","type":"bytes"}],"type":"PhotoSize"},{"id":"286776671","predicate":"geoPointEmpty","params":[],"type":"GeoPoint"},{"id":"-1297942941","predicate":"geoPoint","params":[{"name":"flags","type":"#"},{"name":"long","type":"double"},{"name":"lat","type":"double"},{"name":"access_hash","type":"long"},{"name":"accuracy_radius","type":"flags.0?int"}],"type":"GeoPoint"},{"id":"1577067778","predicate":"auth.sentCode","params":[{"name":"flags","type":"#"},{"name":"type","type":"auth.SentCodeType"},{"name":"phone_code_hash","type":"string"},{"name":"next_type","type":"flags.1?auth.CodeType"},{"name":"timeout","type":"flags.2?int"}],"type":"auth.SentCode"},{"id":"-855308010","predicate":"auth.authorization","params":[{"name":"flags","type":"#"},{"name":"tmp_sessions","type":"flags.0?int"},{"name":"user","type":"User"}],"type":"auth.Authorization"},{"id":"-1271602504","predicate":"auth.exportedAuthorization","params":[{"name":"id","type":"long"},{"name":"bytes","type":"bytes"}],"type":"auth.ExportedAuthorization"},{"id":"-1195615476","predicate":"inputNotifyPeer","params":[{"name":"peer","type":"InputPeer"}],"type":"InputNotifyPeer"},{"id":"423314455","predicate":"inputNotifyUsers","params":[],"type":"InputNotifyPeer"},{"id":"1251338318","predicate":"inputNotifyChats","params":[],"type":"InputNotifyPeer"},{"id":"-1673717362","predicate":"inputPeerNotifySettings","params":[{"name":"flags","type":"#"},{"name":"show_previews","type":"flags.0?Bool"},{"name":"silent","type":"flags.1?Bool"},{"name":"mute_until","type":"flags.2?int"},{"name":"sound","type":"flags.3?string"}],"type":"InputPeerNotifySettings"},{"id":"-1353671392","predicate":"peerNotifySettings","params":[{"name":"flags","type":"#"},{"name":"show_previews","type":"flags.0?Bool"},{"name":"silent","type":"flags.1?Bool"},{"name":"mute_until","type":"flags.2?int"},{"name":"sound","type":"flags.3?string"}],"type":"PeerNotifySettings"},{"id":"1933519201","predicate":"peerSettings","params":[{"name":"flags","type":"#"},{"name":"report_spam","type":"flags.0?true"},{"name":"add_contact","type":"flags.1?true"},{"name":"block_contact","type":"flags.2?true"},{"name":"share_contact","type":"flags.3?true"},{"name":"need_contacts_exception","type":"flags.4?true"},{"name":"report_geo","type":"flags.5?true"},{"name":"autoarchived","type":"flags.7?true"},{"name":"invite_members","type":"flags.8?true"},{"name":"geo_distance","type":"flags.6?int"}],"type":"PeerSettings"},{"id":"-1539849235","predicate":"wallPaper","params":[{"name":"id","type":"long"},{"name":"flags","type":"#"},{"name":"creator","type":"flags.0?true"},{"name":"default","type":"flags.1?true"},{"name":"pattern","type":"flags.3?true"},{"name":"dark","type":"flags.4?true"},{"name":"access_hash","type":"long"},{"name":"slug","type":"string"},{"name":"document","type":"Document"},{"name":"settings","type":"flags.2?WallPaperSettings"}],"type":"WallPaper"},{"id":"1490799288","predicate":"inputReportReasonSpam","params":[],"type":"ReportReason"},{"id":"505595789","predicate":"inputReportReasonViolence","params":[],"type":"ReportReason"},{"id":"777640226","predicate":"inputReportReasonPornography","params":[],"type":"ReportReason"},{"id":"-1376497949","predicate":"inputReportReasonChildAbuse","params":[],"type":"ReportReason"},{"id":"-1041980751","predicate":"inputReportReasonOther","params":[],"type":"ReportReason"},{"id":"-694681851","predicate":"userFull","params":[{"name":"flags","type":"#"},{"name":"blocked","type":"flags.0?true"},{"name":"phone_calls_available","type":"flags.4?true"},{"name":"phone_calls_private","type":"flags.5?true"},{"name":"can_pin_message","type":"flags.7?true"},{"name":"has_scheduled","type":"flags.12?true"},{"name":"video_calls_available","type":"flags.13?true"},{"name":"user","type":"User"},{"name":"about","type":"flags.1?string"},{"name":"settings","type":"PeerSettings"},{"name":"profile_photo","type":"flags.2?Photo"},{"name":"notify_settings","type":"PeerNotifySettings"},{"name":"bot_info","type":"flags.3?BotInfo"},{"name":"pinned_msg_id","type":"flags.6?int"},{"name":"common_chats_count","type":"int"},{"name":"folder_id","type":"flags.11?int"},{"name":"ttl_period","type":"flags.14?int"},{"name":"theme_emoticon","type":"flags.15?string"}],"type":"UserFull"},{"id":"341499403","predicate":"contact","params":[{"name":"user_id","type":"long"},{"name":"mutual","type":"Bool"}],"type":"Contact"},{"id":"-1052885936","predicate":"importedContact","params":[{"name":"user_id","type":"long"},{"name":"client_id","type":"long"}],"type":"ImportedContact"},{"id":"383348795","predicate":"contactStatus","params":[{"name":"user_id","type":"long"},{"name":"status","type":"UserStatus"}],"type":"ContactStatus"},{"id":"-1219778094","predicate":"contacts.contactsNotModified","params":[],"type":"contacts.Contacts"},{"id":"-353862078","predicate":"contacts.contacts","params":[{"name":"contacts","type":"Vector<Contact>"},{"name":"saved_count","type":"int"},{"name":"users","type":"Vector<User>"}],"type":"contacts.Contacts"},{"id":"2010127419","predicate":"contacts.importedContacts","params":[{"name":"imported","type":"Vector<ImportedContact>"},{"name":"popular_invites","type":"Vector<PopularContact>"},{"name":"retry_contacts","type":"Vector<long>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.ImportedContacts"},{"id":"182326673","predicate":"contacts.blocked","params":[{"name":"blocked","type":"Vector<PeerBlocked>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.Blocked"},{"id":"-513392236","predicate":"contacts.blockedSlice","params":[{"name":"count","type":"int"},{"name":"blocked","type":"Vector<PeerBlocked>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.Blocked"},{"id":"364538944","predicate":"messages.dialogs","params":[{"name":"dialogs","type":"Vector<Dialog>"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Dialogs"},{"id":"1910543603","predicate":"messages.dialogsSlice","params":[{"name":"count","type":"int"},{"name":"dialogs","type":"Vector<Dialog>"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Dialogs"},{"id":"-1938715001","predicate":"messages.messages","params":[{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Messages"},{"id":"978610270","predicate":"messages.messagesSlice","params":[{"name":"flags","type":"#"},{"name":"inexact","type":"flags.1?true"},{"name":"count","type":"int"},{"name":"next_rate","type":"flags.0?int"},{"name":"offset_id_offset","type":"flags.2?int"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Messages"},{"id":"1694474197","predicate":"messages.chats","params":[{"name":"chats","type":"Vector<Chat>"}],"type":"messages.Chats"},{"id":"-438840932","predicate":"messages.chatFull","params":[{"name":"full_chat","type":"ChatFull"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.ChatFull"},{"id":"-1269012015","predicate":"messages.affectedHistory","params":[{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"offset","type":"int"}],"type":"messages.AffectedHistory"},{"id":"1474492012","predicate":"inputMessagesFilterEmpty","params":[],"type":"MessagesFilter"},{"id":"-1777752804","predicate":"inputMessagesFilterPhotos","params":[],"type":"MessagesFilter"},{"id":"-1614803355","predicate":"inputMessagesFilterVideo","params":[],"type":"MessagesFilter"},{"id":"1458172132","predicate":"inputMessagesFilterPhotoVideo","params":[],"type":"MessagesFilter"},{"id":"-1629621880","predicate":"inputMessagesFilterDocument","params":[],"type":"MessagesFilter"},{"id":"2129714567","predicate":"inputMessagesFilterUrl","params":[],"type":"MessagesFilter"},{"id":"-3644025","predicate":"inputMessagesFilterGif","params":[],"type":"MessagesFilter"},{"id":"522914557","predicate":"updateNewMessage","params":[{"name":"message","type":"Message"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"1318109142","predicate":"updateMessageID","params":[{"name":"id","type":"int"},{"name":"random_id","type":"long"}],"type":"Update"},{"id":"-1576161051","predicate":"updateDeleteMessages","params":[{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1071741569","predicate":"updateUserTyping","params":[{"name":"user_id","type":"long"},{"name":"action","type":"SendMessageAction"}],"type":"Update"},{"id":"-2092401936","predicate":"updateChatUserTyping","params":[{"name":"chat_id","type":"long"},{"name":"from_id","type":"Peer"},{"name":"action","type":"SendMessageAction"}],"type":"Update"},{"id":"125178264","predicate":"updateChatParticipants","params":[{"name":"participants","type":"ChatParticipants"}],"type":"Update"},{"id":"-440534818","predicate":"updateUserStatus","params":[{"name":"user_id","type":"long"},{"name":"status","type":"UserStatus"}],"type":"Update"},{"id":"-1007549728","predicate":"updateUserName","params":[{"name":"user_id","type":"long"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"username","type":"string"}],"type":"Update"},{"id":"-232290676","predicate":"updateUserPhoto","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"},{"name":"photo","type":"UserProfilePhoto"},{"name":"previous","type":"Bool"}],"type":"Update"},{"id":"-1519637954","predicate":"updates.state","params":[{"name":"pts","type":"int"},{"name":"qts","type":"int"},{"name":"date","type":"int"},{"name":"seq","type":"int"},{"name":"unread_count","type":"int"}],"type":"updates.State"},{"id":"1567990072","predicate":"updates.differenceEmpty","params":[{"name":"date","type":"int"},{"name":"seq","type":"int"}],"type":"updates.Difference"},{"id":"16030880","predicate":"updates.difference","params":[{"name":"new_messages","type":"Vector<Message>"},{"name":"new_encrypted_messages","type":"Vector<EncryptedMessage>"},{"name":"other_updates","type":"Vector<Update>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"state","type":"updates.State"}],"type":"updates.Difference"},{"id":"-1459938943","predicate":"updates.differenceSlice","params":[{"name":"new_messages","type":"Vector<Message>"},{"name":"new_encrypted_messages","type":"Vector<EncryptedMessage>"},{"name":"other_updates","type":"Vector<Update>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"intermediate_state","type":"updates.State"}],"type":"updates.Difference"},{"id":"-484987010","predicate":"updatesTooLong","params":[],"type":"Updates"},{"id":"826001400","predicate":"updateShortMessage","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"mentioned","type":"flags.4?true"},{"name":"media_unread","type":"flags.5?true"},{"name":"silent","type":"flags.13?true"},{"name":"id","type":"int"},{"name":"user_id","type":"long"},{"name":"message","type":"string"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"date","type":"int"},{"name":"fwd_from","type":"flags.2?MessageFwdHeader"},{"name":"via_bot_id","type":"flags.11?long"},{"name":"reply_to","type":"flags.3?MessageReplyHeader"},{"name":"entities","type":"flags.7?Vector<MessageEntity>"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Updates"},{"id":"1299050149","predicate":"updateShortChatMessage","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"mentioned","type":"flags.4?true"},{"name":"media_unread","type":"flags.5?true"},{"name":"silent","type":"flags.13?true"},{"name":"id","type":"int"},{"name":"from_id","type":"long"},{"name":"chat_id","type":"long"},{"name":"message","type":"string"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"date","type":"int"},{"name":"fwd_from","type":"flags.2?MessageFwdHeader"},{"name":"via_bot_id","type":"flags.11?long"},{"name":"reply_to","type":"flags.3?MessageReplyHeader"},{"name":"entities","type":"flags.7?Vector<MessageEntity>"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Updates"},{"id":"2027216577","predicate":"updateShort","params":[{"name":"update","type":"Update"},{"name":"date","type":"int"}],"type":"Updates"},{"id":"1918567619","predicate":"updatesCombined","params":[{"name":"updates","type":"Vector<Update>"},{"name":"users","type":"Vector<User>"},{"name":"chats","type":"Vector<Chat>"},{"name":"date","type":"int"},{"name":"seq_start","type":"int"},{"name":"seq","type":"int"}],"type":"Updates"},{"id":"1957577280","predicate":"updates","params":[{"name":"updates","type":"Vector<Update>"},{"name":"users","type":"Vector<User>"},{"name":"chats","type":"Vector<Chat>"},{"name":"date","type":"int"},{"name":"seq","type":"int"}],"type":"Updates"},{"id":"-1916114267","predicate":"photos.photos","params":[{"name":"photos","type":"Vector<Photo>"},{"name":"users","type":"Vector<User>"}],"type":"photos.Photos"},{"id":"352657236","predicate":"photos.photosSlice","params":[{"name":"count","type":"int"},{"name":"photos","type":"Vector<Photo>"},{"name":"users","type":"Vector<User>"}],"type":"photos.Photos"},{"id":"539045032","predicate":"photos.photo","params":[{"name":"photo","type":"Photo"},{"name":"users","type":"Vector<User>"}],"type":"photos.Photo"},{"id":"157948117","predicate":"upload.file","params":[{"name":"type","type":"storage.FileType"},{"name":"mtime","type":"int"},{"name":"bytes","type":"bytes"}],"type":"upload.File"},{"id":"414687501","predicate":"dcOption","params":[{"name":"flags","type":"#"},{"name":"ipv6","type":"flags.0?true"},{"name":"media_only","type":"flags.1?true"},{"name":"tcpo_only","type":"flags.2?true"},{"name":"cdn","type":"flags.3?true"},{"name":"static","type":"flags.4?true"},{"name":"id","type":"int"},{"name":"ip_address","type":"string"},{"name":"port","type":"int"},{"name":"secret","type":"flags.10?bytes"}],"type":"DcOption"},{"id":"856375399","predicate":"config","params":[{"name":"flags","type":"#"},{"name":"phonecalls_enabled","type":"flags.1?true"},{"name":"default_p2p_contacts","type":"flags.3?true"},{"name":"preload_featured_stickers","type":"flags.4?true"},{"name":"ignore_phone_entities","type":"flags.5?true"},{"name":"revoke_pm_inbox","type":"flags.6?true"},{"name":"blocked_mode","type":"flags.8?true"},{"name":"pfs_enabled","type":"flags.13?true"},{"name":"date","type":"int"},{"name":"expires","type":"int"},{"name":"test_mode","type":"Bool"},{"name":"this_dc","type":"int"},{"name":"dc_options","type":"Vector<DcOption>"},{"name":"dc_txt_domain_name","type":"string"},{"name":"chat_size_max","type":"int"},{"name":"megagroup_size_max","type":"int"},{"name":"forwarded_count_max","type":"int"},{"name":"online_update_period_ms","type":"int"},{"name":"offline_blur_timeout_ms","type":"int"},{"name":"offline_idle_timeout_ms","type":"int"},{"name":"online_cloud_timeout_ms","type":"int"},{"name":"notify_cloud_delay_ms","type":"int"},{"name":"notify_default_delay_ms","type":"int"},{"name":"push_chat_period_ms","type":"int"},{"name":"push_chat_limit","type":"int"},{"name":"saved_gifs_limit","type":"int"},{"name":"edit_time_limit","type":"int"},{"name":"revoke_time_limit","type":"int"},{"name":"revoke_pm_time_limit","type":"int"},{"name":"rating_e_decay","type":"int"},{"name":"stickers_recent_limit","type":"int"},{"name":"stickers_faved_limit","type":"int"},{"name":"channels_read_media_period","type":"int"},{"name":"tmp_sessions","type":"flags.0?int"},{"name":"pinned_dialogs_count_max","type":"int"},{"name":"pinned_infolder_count_max","type":"int"},{"name":"call_receive_timeout_ms","type":"int"},{"name":"call_ring_timeout_ms","type":"int"},{"name":"call_connect_timeout_ms","type":"int"},{"name":"call_packet_timeout_ms","type":"int"},{"name":"me_url_prefix","type":"string"},{"name":"autoupdate_url_prefix","type":"flags.7?string"},{"name":"gif_search_username","type":"flags.9?string"},{"name":"venue_search_username","type":"flags.10?string"},{"name":"img_search_username","type":"flags.11?string"},{"name":"static_maps_provider","type":"flags.12?string"},{"name":"caption_length_max","type":"int"},{"name":"message_length_max","type":"int"},{"name":"webfile_dc_id","type":"int"},{"name":"suggested_lang_code","type":"flags.2?string"},{"name":"lang_pack_version","type":"flags.2?int"},{"name":"base_lang_pack_version","type":"flags.2?int"}],"type":"Config"},{"id":"-1910892683","predicate":"nearestDc","params":[{"name":"country","type":"string"},{"name":"this_dc","type":"int"},{"name":"nearest_dc","type":"int"}],"type":"NearestDc"},{"id":"-860107216","predicate":"help.appUpdate","params":[{"name":"flags","type":"#"},{"name":"can_not_skip","type":"flags.0?true"},{"name":"id","type":"int"},{"name":"version","type":"string"},{"name":"text","type":"string"},{"name":"entities","type":"Vector<MessageEntity>"},{"name":"document","type":"flags.1?Document"},{"name":"url","type":"flags.2?string"},{"name":"sticker","type":"flags.3?Document"}],"type":"help.AppUpdate"},{"id":"-1000708810","predicate":"help.noAppUpdate","params":[],"type":"help.AppUpdate"},{"id":"415997816","predicate":"help.inviteText","params":[{"name":"message","type":"string"}],"type":"help.InviteText"},{"id":"314359194","predicate":"updateNewEncryptedMessage","params":[{"name":"message","type":"EncryptedMessage"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"386986326","predicate":"updateEncryptedChatTyping","params":[{"name":"chat_id","type":"int"}],"type":"Update"},{"id":"-1264392051","predicate":"updateEncryption","params":[{"name":"chat","type":"EncryptedChat"},{"name":"date","type":"int"}],"type":"Update"},{"id":"956179895","predicate":"updateEncryptedMessagesRead","params":[{"name":"chat_id","type":"int"},{"name":"max_date","type":"int"},{"name":"date","type":"int"}],"type":"Update"},{"id":"-1417756512","predicate":"encryptedChatEmpty","params":[{"name":"id","type":"int"}],"type":"EncryptedChat"},{"id":"1722964307","predicate":"encryptedChatWaiting","params":[{"name":"id","type":"int"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"}],"type":"EncryptedChat"},{"id":"1223809356","predicate":"encryptedChatRequested","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.0?int"},{"name":"id","type":"int"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_a","type":"bytes"}],"type":"EncryptedChat"},{"id":"1643173063","predicate":"encryptedChat","params":[{"name":"id","type":"int"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_a_or_b","type":"bytes"},{"name":"key_fingerprint","type":"long"}],"type":"EncryptedChat"},{"id":"505183301","predicate":"encryptedChatDiscarded","params":[{"name":"flags","type":"#"},{"name":"history_deleted","type":"flags.0?true"},{"name":"id","type":"int"}],"type":"EncryptedChat"},{"id":"-247351839","predicate":"inputEncryptedChat","params":[{"name":"chat_id","type":"int"},{"name":"access_hash","type":"long"}],"type":"InputEncryptedChat"},{"id":"-1038136962","predicate":"encryptedFileEmpty","params":[],"type":"EncryptedFile"},{"id":"1248893260","predicate":"encryptedFile","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"size","type":"int"},{"name":"dc_id","type":"int"},{"name":"key_fingerprint","type":"int"}],"type":"EncryptedFile"},{"id":"406307684","predicate":"inputEncryptedFileEmpty","params":[],"type":"InputEncryptedFile"},{"id":"1690108678","predicate":"inputEncryptedFileUploaded","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"md5_checksum","type":"string"},{"name":"key_fingerprint","type":"int"}],"type":"InputEncryptedFile"},{"id":"1511503333","predicate":"inputEncryptedFile","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputEncryptedFile"},{"id":"-182231723","predicate":"inputEncryptedFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputFileLocation"},{"id":"-317144808","predicate":"encryptedMessage","params":[{"name":"random_id","type":"long"},{"name":"chat_id","type":"int"},{"name":"date","type":"int"},{"name":"bytes","type":"bytes"},{"name":"file","type":"EncryptedFile"}],"type":"EncryptedMessage"},{"id":"594758406","predicate":"encryptedMessageService","params":[{"name":"random_id","type":"long"},{"name":"chat_id","type":"int"},{"name":"date","type":"int"},{"name":"bytes","type":"bytes"}],"type":"EncryptedMessage"},{"id":"-1058912715","predicate":"messages.dhConfigNotModified","params":[{"name":"random","type":"bytes"}],"type":"messages.DhConfig"},{"id":"740433629","predicate":"messages.dhConfig","params":[{"name":"g","type":"int"},{"name":"p","type":"bytes"},{"name":"version","type":"int"},{"name":"random","type":"bytes"}],"type":"messages.DhConfig"},{"id":"1443858741","predicate":"messages.sentEncryptedMessage","params":[{"name":"date","type":"int"}],"type":"messages.SentEncryptedMessage"},{"id":"-1802240206","predicate":"messages.sentEncryptedFile","params":[{"name":"date","type":"int"},{"name":"file","type":"EncryptedFile"}],"type":"messages.SentEncryptedMessage"},{"id":"-95482955","predicate":"inputFileBig","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"name","type":"string"}],"type":"InputFile"},{"id":"767652808","predicate":"inputEncryptedFileBigUploaded","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"key_fingerprint","type":"int"}],"type":"InputEncryptedFile"},{"id":"1037718609","predicate":"updateChatParticipantAdd","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"long"},{"name":"inviter_id","type":"long"},{"name":"date","type":"int"},{"name":"version","type":"int"}],"type":"Update"},{"id":"-483443337","predicate":"updateChatParticipantDelete","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"long"},{"name":"version","type":"int"}],"type":"Update"},{"id":"-1906403213","predicate":"updateDcOptions","params":[{"name":"dc_options","type":"Vector<DcOption>"}],"type":"Update"},{"id":"1530447553","predicate":"inputMediaUploadedDocument","params":[{"name":"flags","type":"#"},{"name":"nosound_video","type":"flags.3?true"},{"name":"force_file","type":"flags.4?true"},{"name":"file","type":"InputFile"},{"name":"thumb","type":"flags.2?InputFile"},{"name":"mime_type","type":"string"},{"name":"attributes","type":"Vector<DocumentAttribute>"},{"name":"stickers","type":"flags.0?Vector<InputDocument>"},{"name":"ttl_seconds","type":"flags.1?int"}],"type":"InputMedia"},{"id":"860303448","predicate":"inputMediaDocument","params":[{"name":"flags","type":"#"},{"name":"id","type":"InputDocument"},{"name":"ttl_seconds","type":"flags.0?int"},{"name":"query","type":"flags.1?string"}],"type":"InputMedia"},{"id":"-1666158377","predicate":"messageMediaDocument","params":[{"name":"flags","type":"#"},{"name":"document","type":"flags.0?Document"},{"name":"ttl_seconds","type":"flags.2?int"}],"type":"MessageMedia"},{"id":"1928391342","predicate":"inputDocumentEmpty","params":[],"type":"InputDocument"},{"id":"448771445","predicate":"inputDocument","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"}],"type":"InputDocument"},{"id":"-1160743548","predicate":"inputDocumentFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"thumb_size","type":"string"}],"type":"InputFileLocation"},{"id":"922273905","predicate":"documentEmpty","params":[{"name":"id","type":"long"}],"type":"Document"},{"id":"512177195","predicate":"document","params":[{"name":"flags","type":"#"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"date","type":"int"},{"name":"mime_type","type":"string"},{"name":"size","type":"int"},{"name":"thumbs","type":"flags.0?Vector<PhotoSize>"},{"name":"video_thumbs","type":"flags.1?Vector<VideoSize>"},{"name":"dc_id","type":"int"},{"name":"attributes","type":"Vector<DocumentAttribute>"}],"type":"Document"},{"id":"398898678","predicate":"help.support","params":[{"name":"phone_number","type":"string"},{"name":"user","type":"User"}],"type":"help.Support"},{"id":"-1613493288","predicate":"notifyPeer","params":[{"name":"peer","type":"Peer"}],"type":"NotifyPeer"},{"id":"-1261946036","predicate":"notifyUsers","params":[],"type":"NotifyPeer"},{"id":"-1073230141","predicate":"notifyChats","params":[],"type":"NotifyPeer"},{"id":"-1094555409","predicate":"updateNotifySettings","params":[{"name":"peer","type":"NotifyPeer"},{"name":"notify_settings","type":"PeerNotifySettings"}],"type":"Update"},{"id":"381645902","predicate":"sendMessageTypingAction","params":[],"type":"SendMessageAction"},{"id":"-44119819","predicate":"sendMessageCancelAction","params":[],"type":"SendMessageAction"},{"id":"-1584933265","predicate":"sendMessageRecordVideoAction","params":[],"type":"SendMessageAction"},{"id":"-378127636","predicate":"sendMessageUploadVideoAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"-718310409","predicate":"sendMessageRecordAudioAction","params":[],"type":"SendMessageAction"},{"id":"-212740181","predicate":"sendMessageUploadAudioAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"-774682074","predicate":"sendMessageUploadPhotoAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"-1441998364","predicate":"sendMessageUploadDocumentAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"393186209","predicate":"sendMessageGeoLocationAction","params":[],"type":"SendMessageAction"},{"id":"1653390447","predicate":"sendMessageChooseContactAction","params":[],"type":"SendMessageAction"},{"id":"-1290580579","predicate":"contacts.found","params":[{"name":"my_results","type":"Vector<Peer>"},{"name":"results","type":"Vector<Peer>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.Found"},{"id":"-337352679","predicate":"updateServiceNotification","params":[{"name":"flags","type":"#"},{"name":"popup","type":"flags.0?true"},{"name":"inbox_date","type":"flags.1?int"},{"name":"type","type":"string"},{"name":"message","type":"string"},{"name":"media","type":"MessageMedia"},{"name":"entities","type":"Vector<MessageEntity>"}],"type":"Update"},{"id":"-496024847","predicate":"userStatusRecently","params":[],"type":"UserStatus"},{"id":"129960444","predicate":"userStatusLastWeek","params":[],"type":"UserStatus"},{"id":"2011940674","predicate":"userStatusLastMonth","params":[],"type":"UserStatus"},{"id":"-298113238","predicate":"updatePrivacy","params":[{"name":"key","type":"PrivacyKey"},{"name":"rules","type":"Vector<PrivacyRule>"}],"type":"Update"},{"id":"1335282456","predicate":"inputPrivacyKeyStatusTimestamp","params":[],"type":"InputPrivacyKey"},{"id":"-1137792208","predicate":"privacyKeyStatusTimestamp","params":[],"type":"PrivacyKey"},{"id":"218751099","predicate":"inputPrivacyValueAllowContacts","params":[],"type":"InputPrivacyRule"},{"id":"407582158","predicate":"inputPrivacyValueAllowAll","params":[],"type":"InputPrivacyRule"},{"id":"320652927","predicate":"inputPrivacyValueAllowUsers","params":[{"name":"users","type":"Vector<InputUser>"}],"type":"InputPrivacyRule"},{"id":"195371015","predicate":"inputPrivacyValueDisallowContacts","params":[],"type":"InputPrivacyRule"},{"id":"-697604407","predicate":"inputPrivacyValueDisallowAll","params":[],"type":"InputPrivacyRule"},{"id":"-1877932953","predicate":"inputPrivacyValueDisallowUsers","params":[{"name":"users","type":"Vector<InputUser>"}],"type":"InputPrivacyRule"},{"id":"-123988","predicate":"privacyValueAllowContacts","params":[],"type":"PrivacyRule"},{"id":"1698855810","predicate":"privacyValueAllowAll","params":[],"type":"PrivacyRule"},{"id":"-1198497870","predicate":"privacyValueAllowUsers","params":[{"name":"users","type":"Vector<long>"}],"type":"PrivacyRule"},{"id":"-125240806","predicate":"privacyValueDisallowContacts","params":[],"type":"PrivacyRule"},{"id":"-1955338397","predicate":"privacyValueDisallowAll","params":[],"type":"PrivacyRule"},{"id":"-463335103","predicate":"privacyValueDisallowUsers","params":[{"name":"users","type":"Vector<long>"}],"type":"PrivacyRule"},{"id":"1352683077","predicate":"account.privacyRules","params":[{"name":"rules","type":"Vector<PrivacyRule>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"account.PrivacyRules"},{"id":"-1194283041","predicate":"accountDaysTTL","params":[{"name":"days","type":"int"}],"type":"AccountDaysTTL"},{"id":"88680979","predicate":"updateUserPhone","params":[{"name":"user_id","type":"long"},{"name":"phone","type":"string"}],"type":"Update"},{"id":"1815593308","predicate":"documentAttributeImageSize","params":[{"name":"w","type":"int"},{"name":"h","type":"int"}],"type":"DocumentAttribute"},{"id":"297109817","predicate":"documentAttributeAnimated","params":[],"type":"DocumentAttribute"},{"id":"1662637586","predicate":"documentAttributeSticker","params":[{"name":"flags","type":"#"},{"name":"mask","type":"flags.1?true"},{"name":"alt","type":"string"},{"name":"stickerset","type":"InputStickerSet"},{"name":"mask_coords","type":"flags.0?MaskCoords"}],"type":"DocumentAttribute"},{"id":"250621158","predicate":"documentAttributeVideo","params":[{"name":"flags","type":"#"},{"name":"round_message","type":"flags.0?true"},{"name":"supports_streaming","type":"flags.1?true"},{"name":"duration","type":"int"},{"name":"w","type":"int"},{"name":"h","type":"int"}],"type":"DocumentAttribute"},{"id":"-1739392570","predicate":"documentAttributeAudio","params":[{"name":"flags","type":"#"},{"name":"voice","type":"flags.10?true"},{"name":"duration","type":"int"},{"name":"title","type":"flags.0?string"},{"name":"performer","type":"flags.1?string"},{"name":"waveform","type":"flags.2?bytes"}],"type":"DocumentAttribute"},{"id":"358154344","predicate":"documentAttributeFilename","params":[{"name":"file_name","type":"string"}],"type":"DocumentAttribute"},{"id":"-244016606","predicate":"messages.stickersNotModified","params":[],"type":"messages.Stickers"},{"id":"816245886","predicate":"messages.stickers","params":[{"name":"hash","type":"long"},{"name":"stickers","type":"Vector<Document>"}],"type":"messages.Stickers"},{"id":"313694676","predicate":"stickerPack","params":[{"name":"emoticon","type":"string"},{"name":"documents","type":"Vector<long>"}],"type":"StickerPack"},{"id":"-395967805","predicate":"messages.allStickersNotModified","params":[],"type":"messages.AllStickers"},{"id":"-843329861","predicate":"messages.allStickers","params":[{"name":"hash","type":"long"},{"name":"sets","type":"Vector<StickerSet>"}],"type":"messages.AllStickers"},{"id":"-1667805217","predicate":"updateReadHistoryInbox","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.0?int"},{"name":"peer","type":"Peer"},{"name":"max_id","type":"int"},{"name":"still_unread_count","type":"int"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"791617983","predicate":"updateReadHistoryOutbox","params":[{"name":"peer","type":"Peer"},{"name":"max_id","type":"int"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-2066640507","predicate":"messages.affectedMessages","params":[{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"messages.AffectedMessages"},{"id":"2139689491","predicate":"updateWebPage","params":[{"name":"webpage","type":"WebPage"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-350980120","predicate":"webPageEmpty","params":[{"name":"id","type":"long"}],"type":"WebPage"},{"id":"-981018084","predicate":"webPagePending","params":[{"name":"id","type":"long"},{"name":"date","type":"int"}],"type":"WebPage"},{"id":"-392411726","predicate":"webPage","params":[{"name":"flags","type":"#"},{"name":"id","type":"long"},{"name":"url","type":"string"},{"name":"display_url","type":"string"},{"name":"hash","type":"int"},{"name":"type","type":"flags.0?string"},{"name":"site_name","type":"flags.1?string"},{"name":"title","type":"flags.2?string"},{"name":"description","type":"flags.3?string"},{"name":"photo","type":"flags.4?Photo"},{"name":"embed_url","type":"flags.5?string"},{"name":"embed_type","type":"flags.5?string"},{"name":"embed_width","type":"flags.6?int"},{"name":"embed_height","type":"flags.6?int"},{"name":"duration","type":"flags.7?int"},{"name":"author","type":"flags.8?string"},{"name":"document","type":"flags.9?Document"},{"name":"cached_page","type":"flags.10?Page"},{"name":"attributes","type":"flags.12?Vector<WebPageAttribute>"}],"type":"WebPage"},{"id":"-1557277184","predicate":"messageMediaWebPage","params":[{"name":"webpage","type":"WebPage"}],"type":"MessageMedia"},{"id":"-1392388579","predicate":"authorization","params":[{"name":"flags","type":"#"},{"name":"current","type":"flags.0?true"},{"name":"official_app","type":"flags.1?true"},{"name":"password_pending","type":"flags.2?true"},{"name":"encrypted_requests_disabled","type":"flags.3?true"},{"name":"call_requests_disabled","type":"flags.4?true"},{"name":"hash","type":"long"},{"name":"device_model","type":"string"},{"name":"platform","type":"string"},{"name":"system_version","type":"string"},{"name":"api_id","type":"int"},{"name":"app_name","type":"string"},{"name":"app_version","type":"string"},{"name":"date_created","type":"int"},{"name":"date_active","type":"int"},{"name":"ip","type":"string"},{"name":"country","type":"string"},{"name":"region","type":"string"}],"type":"Authorization"},{"id":"307276766","predicate":"account.authorizations","params":[{"name":"authorizations","type":"Vector<Authorization>"}],"type":"account.Authorizations"},{"id":"408623183","predicate":"account.password","params":[{"name":"flags","type":"#"},{"name":"has_recovery","type":"flags.0?true"},{"name":"has_secure_values","type":"flags.1?true"},{"name":"has_password","type":"flags.2?true"},{"name":"current_algo","type":"flags.2?PasswordKdfAlgo"},{"name":"srp_B","type":"flags.2?bytes"},{"name":"srp_id","type":"flags.2?long"},{"name":"hint","type":"flags.3?string"},{"name":"email_unconfirmed_pattern","type":"flags.4?string"},{"name":"new_algo","type":"PasswordKdfAlgo"},{"name":"new_secure_algo","type":"SecurePasswordKdfAlgo"},{"name":"secure_random","type":"bytes"},{"name":"pending_reset_date","type":"flags.5?int"}],"type":"account.Password"},{"id":"-1705233435","predicate":"account.passwordSettings","params":[{"name":"flags","type":"#"},{"name":"email","type":"flags.0?string"},{"name":"secure_settings","type":"flags.1?SecureSecretSettings"}],"type":"account.PasswordSettings"},{"id":"-1036572727","predicate":"account.passwordInputSettings","params":[{"name":"flags","type":"#"},{"name":"new_algo","type":"flags.0?PasswordKdfAlgo"},{"name":"new_password_hash","type":"flags.0?bytes"},{"name":"hint","type":"flags.0?string"},{"name":"email","type":"flags.1?string"},{"name":"new_secure_settings","type":"flags.2?SecureSecretSettings"}],"type":"account.PasswordInputSettings"},{"id":"326715557","predicate":"auth.passwordRecovery","params":[{"name":"email_pattern","type":"string"}],"type":"auth.PasswordRecovery"},{"id":"-1052959727","predicate":"inputMediaVenue","params":[{"name":"geo_point","type":"InputGeoPoint"},{"name":"title","type":"string"},{"name":"address","type":"string"},{"name":"provider","type":"string"},{"name":"venue_id","type":"string"},{"name":"venue_type","type":"string"}],"type":"InputMedia"},{"id":"784356159","predicate":"messageMediaVenue","params":[{"name":"geo","type":"GeoPoint"},{"name":"title","type":"string"},{"name":"address","type":"string"},{"name":"provider","type":"string"},{"name":"venue_id","type":"string"},{"name":"venue_type","type":"string"}],"type":"MessageMedia"},{"id":"-1551583367","predicate":"receivedNotifyMessage","params":[{"name":"id","type":"int"},{"name":"flags","type":"int"}],"type":"ReceivedNotifyMessage"},{"id":"-1316944408","predicate":"chatInviteExported","params":[{"name":"flags","type":"#"},{"name":"revoked","type":"flags.0?true"},{"name":"permanent","type":"flags.5?true"},{"name":"link","type":"string"},{"name":"admin_id","type":"long"},{"name":"date","type":"int"},{"name":"start_date","type":"flags.4?int"},{"name":"expire_date","type":"flags.1?int"},{"name":"usage_limit","type":"flags.2?int"},{"name":"usage","type":"flags.3?int"}],"type":"ExportedChatInvite"},{"id":"1516793212","predicate":"chatInviteAlready","params":[{"name":"chat","type":"Chat"}],"type":"ChatInvite"},{"id":"-540871282","predicate":"chatInvite","params":[{"name":"flags","type":"#"},{"name":"channel","type":"flags.0?true"},{"name":"broadcast","type":"flags.1?true"},{"name":"public","type":"flags.2?true"},{"name":"megagroup","type":"flags.3?true"},{"name":"title","type":"string"},{"name":"photo","type":"Photo"},{"name":"participants_count","type":"int"},{"name":"participants","type":"flags.4?Vector<User>"}],"type":"ChatInvite"},{"id":"51520707","predicate":"messageActionChatJoinedByLink","params":[{"name":"inviter_id","type":"long"}],"type":"MessageAction"},{"id":"1757493555","predicate":"updateReadMessagesContents","params":[{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-4838507","predicate":"inputStickerSetEmpty","params":[],"type":"InputStickerSet"},{"id":"-1645763991","predicate":"inputStickerSetID","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputStickerSet"},{"id":"-2044933984","predicate":"inputStickerSetShortName","params":[{"name":"short_name","type":"string"}],"type":"InputStickerSet"},{"id":"-673242758","predicate":"stickerSet","params":[{"name":"flags","type":"#"},{"name":"archived","type":"flags.1?true"},{"name":"official","type":"flags.2?true"},{"name":"masks","type":"flags.3?true"},{"name":"animated","type":"flags.5?true"},{"name":"videos","type":"flags.6?true"},{"name":"installed_date","type":"flags.0?int"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"title","type":"string"},{"name":"short_name","type":"string"},{"name":"thumbs","type":"flags.4?Vector<PhotoSize>"},{"name":"thumb_dc_id","type":"flags.4?int"},{"name":"thumb_version","type":"flags.4?int"},{"name":"count","type":"int"},{"name":"hash","type":"int"}],"type":"StickerSet"},{"id":"-1240849242","predicate":"messages.stickerSet","params":[{"name":"set","type":"StickerSet"},{"name":"packs","type":"Vector<StickerPack>"},{"name":"documents","type":"Vector<Document>"}],"type":"messages.StickerSet"},{"id":"1073147056","predicate":"user","params":[{"name":"flags","type":"#"},{"name":"self","type":"flags.10?true"},{"name":"contact","type":"flags.11?true"},{"name":"mutual_contact","type":"flags.12?true"},{"name":"deleted","type":"flags.13?true"},{"name":"bot","type":"flags.14?true"},{"name":"bot_chat_history","type":"flags.15?true"},{"name":"bot_nochats","type":"flags.16?true"},{"name":"verified","type":"flags.17?true"},{"name":"restricted","type":"flags.18?true"},{"name":"min","type":"flags.20?true"},{"name":"bot_inline_geo","type":"flags.21?true"},{"name":"support","type":"flags.23?true"},{"name":"scam","type":"flags.24?true"},{"name":"apply_min_photo","type":"flags.25?true"},{"name":"fake","type":"flags.26?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"flags.0?long"},{"name":"first_name","type":"flags.1?string"},{"name":"last_name","type":"flags.2?string"},{"name":"username","type":"flags.3?string"},{"name":"phone","type":"flags.4?string"},{"name":"photo","type":"flags.5?UserProfilePhoto"},{"name":"status","type":"flags.6?UserStatus"},{"name":"bot_info_version","type":"flags.14?int"},{"name":"restriction_reason","type":"flags.18?Vector<RestrictionReason>"},{"name":"bot_inline_placeholder","type":"flags.19?string"},{"name":"lang_code","type":"flags.22?string"}],"type":"User"},{"id":"-1032140601","predicate":"botCommand","params":[{"name":"command","type":"string"},{"name":"description","type":"string"}],"type":"BotCommand"},{"id":"460632885","predicate":"botInfo","params":[{"name":"user_id","type":"long"},{"name":"description","type":"string"},{"name":"commands","type":"Vector<BotCommand>"}],"type":"BotInfo"},{"id":"-1560655744","predicate":"keyboardButton","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"2002815875","predicate":"keyboardButtonRow","params":[{"name":"buttons","type":"Vector<KeyboardButton>"}],"type":"KeyboardButtonRow"},{"id":"-1606526075","predicate":"replyKeyboardHide","params":[{"name":"flags","type":"#"},{"name":"selective","type":"flags.2?true"}],"type":"ReplyMarkup"},{"id":"-2035021048","predicate":"replyKeyboardForceReply","params":[{"name":"flags","type":"#"},{"name":"single_use","type":"flags.1?true"},{"name":"selective","type":"flags.2?true"},{"name":"placeholder","type":"flags.3?string"}],"type":"ReplyMarkup"},{"id":"-2049074735","predicate":"replyKeyboardMarkup","params":[{"name":"flags","type":"#"},{"name":"resize","type":"flags.0?true"},{"name":"single_use","type":"flags.1?true"},{"name":"selective","type":"flags.2?true"},{"name":"rows","type":"Vector<KeyboardButtonRow>"},{"name":"placeholder","type":"flags.3?string"}],"type":"ReplyMarkup"},{"id":"-571955892","predicate":"inputPeerUser","params":[{"name":"user_id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputPeer"},{"id":"-233744186","predicate":"inputUser","params":[{"name":"user_id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputUser"},{"id":"-1148011883","predicate":"messageEntityUnknown","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-100378723","predicate":"messageEntityMention","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1868782349","predicate":"messageEntityHashtag","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1827637959","predicate":"messageEntityBotCommand","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1859134776","predicate":"messageEntityUrl","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1692693954","predicate":"messageEntityEmail","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-1117713463","predicate":"messageEntityBold","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-2106619040","predicate":"messageEntityItalic","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"681706865","predicate":"messageEntityCode","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1938967520","predicate":"messageEntityPre","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"},{"name":"language","type":"string"}],"type":"MessageEntity"},{"id":"1990644519","predicate":"messageEntityTextUrl","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"},{"name":"url","type":"string"}],"type":"MessageEntity"},{"id":"-1877614335","predicate":"updateShortSentMessage","params":[{"name":"flags","type":"#"},{"name":"out","type":"flags.1?true"},{"name":"id","type":"int"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"date","type":"int"},{"name":"media","type":"flags.9?MessageMedia"},{"name":"entities","type":"flags.7?Vector<MessageEntity>"},{"name":"ttl_period","type":"flags.25?int"}],"type":"Updates"},{"id":"-292807034","predicate":"inputChannelEmpty","params":[],"type":"InputChannel"},{"id":"-212145112","predicate":"inputChannel","params":[{"name":"channel_id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputChannel"},{"id":"-1566230754","predicate":"peerChannel","params":[{"name":"channel_id","type":"long"}],"type":"Peer"},{"id":"666680316","predicate":"inputPeerChannel","params":[{"name":"channel_id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputPeer"},{"id":"-2107528095","predicate":"channel","params":[{"name":"flags","type":"#"},{"name":"creator","type":"flags.0?true"},{"name":"left","type":"flags.2?true"},{"name":"broadcast","type":"flags.5?true"},{"name":"verified","type":"flags.7?true"},{"name":"megagroup","type":"flags.8?true"},{"name":"restricted","type":"flags.9?true"},{"name":"signatures","type":"flags.11?true"},{"name":"min","type":"flags.12?true"},{"name":"scam","type":"flags.19?true"},{"name":"has_link","type":"flags.20?true"},{"name":"has_geo","type":"flags.21?true"},{"name":"slowmode_enabled","type":"flags.22?true"},{"name":"call_active","type":"flags.23?true"},{"name":"call_not_empty","type":"flags.24?true"},{"name":"fake","type":"flags.25?true"},{"name":"gigagroup","type":"flags.26?true"},{"name":"noforwards","type":"flags.27?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"flags.13?long"},{"name":"title","type":"string"},{"name":"username","type":"flags.6?string"},{"name":"photo","type":"ChatPhoto"},{"name":"date","type":"int"},{"name":"restriction_reason","type":"flags.9?Vector<RestrictionReason>"},{"name":"admin_rights","type":"flags.14?ChatAdminRights"},{"name":"banned_rights","type":"flags.15?ChatBannedRights"},{"name":"default_banned_rights","type":"flags.18?ChatBannedRights"},{"name":"participants_count","type":"flags.17?int"}],"type":"Chat"},{"id":"399807445","predicate":"channelForbidden","params":[{"name":"flags","type":"#"},{"name":"broadcast","type":"flags.5?true"},{"name":"megagroup","type":"flags.8?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"title","type":"string"},{"name":"until_date","type":"flags.16?int"}],"type":"Chat"},{"id":"2131196633","predicate":"contacts.resolvedPeer","params":[{"name":"peer","type":"Peer"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.ResolvedPeer"},{"id":"-374179305","predicate":"channelFull","params":[{"name":"flags","type":"#"},{"name":"can_view_participants","type":"flags.3?true"},{"name":"can_set_username","type":"flags.6?true"},{"name":"can_set_stickers","type":"flags.7?true"},{"name":"hidden_prehistory","type":"flags.10?true"},{"name":"can_set_location","type":"flags.16?true"},{"name":"has_scheduled","type":"flags.19?true"},{"name":"can_view_stats","type":"flags.20?true"},{"name":"blocked","type":"flags.22?true"},{"name":"id","type":"long"},{"name":"about","type":"string"},{"name":"participants_count","type":"flags.0?int"},{"name":"admins_count","type":"flags.1?int"},{"name":"kicked_count","type":"flags.2?int"},{"name":"banned_count","type":"flags.2?int"},{"name":"online_count","type":"flags.13?int"},{"name":"read_inbox_max_id","type":"int"},{"name":"read_outbox_max_id","type":"int"},{"name":"unread_count","type":"int"},{"name":"chat_photo","type":"Photo"},{"name":"notify_settings","type":"PeerNotifySettings"},{"name":"exported_invite","type":"flags.23?ExportedChatInvite"},{"name":"bot_info","type":"Vector<BotInfo>"},{"name":"migrated_from_chat_id","type":"flags.4?long"},{"name":"migrated_from_max_id","type":"flags.4?int"},{"name":"pinned_msg_id","type":"flags.5?int"},{"name":"stickerset","type":"flags.8?StickerSet"},{"name":"available_min_id","type":"flags.9?int"},{"name":"folder_id","type":"flags.11?int"},{"name":"linked_chat_id","type":"flags.14?long"},{"name":"location","type":"flags.15?ChannelLocation"},{"name":"slowmode_seconds","type":"flags.17?int"},{"name":"slowmode_next_send_date","type":"flags.18?int"},{"name":"stats_dc","type":"flags.12?int"},{"name":"pts","type":"int"},{"name":"call","type":"flags.21?InputGroupCall"},{"name":"ttl_period","type":"flags.24?int"},{"name":"pending_suggestions","type":"flags.25?Vector<string>"},{"name":"groupcall_default_join_as","type":"flags.26?Peer"},{"name":"theme_emoticon","type":"flags.27?string"}],"type":"ChatFull"},{"id":"182649427","predicate":"messageRange","params":[{"name":"min_id","type":"int"},{"name":"max_id","type":"int"}],"type":"MessageRange"},{"id":"1682413576","predicate":"messages.channelMessages","params":[{"name":"flags","type":"#"},{"name":"inexact","type":"flags.1?true"},{"name":"pts","type":"int"},{"name":"count","type":"int"},{"name":"offset_id_offset","type":"flags.2?int"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.Messages"},{"id":"-1781355374","predicate":"messageActionChannelCreate","params":[{"name":"title","type":"string"}],"type":"MessageAction"},{"id":"277713951","predicate":"updateChannelTooLong","params":[{"name":"flags","type":"#"},{"name":"channel_id","type":"long"},{"name":"pts","type":"flags.0?int"}],"type":"Update"},{"id":"1666927625","predicate":"updateChannel","params":[{"name":"channel_id","type":"long"}],"type":"Update"},{"id":"1656358105","predicate":"updateNewChannelMessage","params":[{"name":"message","type":"Message"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1842450928","predicate":"updateReadChannelInbox","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.0?int"},{"name":"channel_id","type":"long"},{"name":"max_id","type":"int"},{"name":"still_unread_count","type":"int"},{"name":"pts","type":"int"}],"type":"Update"},{"id":"-1020437742","predicate":"updateDeleteChannelMessages","params":[{"name":"channel_id","type":"long"},{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-232346616","predicate":"updateChannelMessageViews","params":[{"name":"channel_id","type":"long"},{"name":"id","type":"int"},{"name":"views","type":"int"}],"type":"Update"},{"id":"1041346555","predicate":"updates.channelDifferenceEmpty","params":[{"name":"flags","type":"#"},{"name":"final","type":"flags.0?true"},{"name":"pts","type":"int"},{"name":"timeout","type":"flags.1?int"}],"type":"updates.ChannelDifference"},{"id":"-1531132162","predicate":"updates.channelDifferenceTooLong","params":[{"name":"flags","type":"#"},{"name":"final","type":"flags.0?true"},{"name":"timeout","type":"flags.1?int"},{"name":"dialog","type":"Dialog"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"updates.ChannelDifference"},{"id":"543450958","predicate":"updates.channelDifference","params":[{"name":"flags","type":"#"},{"name":"final","type":"flags.0?true"},{"name":"pts","type":"int"},{"name":"timeout","type":"flags.1?int"},{"name":"new_messages","type":"Vector<Message>"},{"name":"other_updates","type":"Vector<Update>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"updates.ChannelDifference"},{"id":"-1798033689","predicate":"channelMessagesFilterEmpty","params":[],"type":"ChannelMessagesFilter"},{"id":"-847783593","predicate":"channelMessagesFilter","params":[{"name":"flags","type":"#"},{"name":"exclude_new_messages","type":"flags.1?true"},{"name":"ranges","type":"Vector<MessageRange>"}],"type":"ChannelMessagesFilter"},{"id":"-1072953408","predicate":"channelParticipant","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"}],"type":"ChannelParticipant"},{"id":"682146919","predicate":"channelParticipantSelf","params":[{"name":"user_id","type":"long"},{"name":"inviter_id","type":"long"},{"name":"date","type":"int"}],"type":"ChannelParticipant"},{"id":"803602899","predicate":"channelParticipantCreator","params":[{"name":"flags","type":"#"},{"name":"user_id","type":"long"},{"name":"admin_rights","type":"ChatAdminRights"},{"name":"rank","type":"flags.0?string"}],"type":"ChannelParticipant"},{"id":"-566281095","predicate":"channelParticipantsRecent","params":[],"type":"ChannelParticipantsFilter"},{"id":"-1268741783","predicate":"channelParticipantsAdmins","params":[],"type":"ChannelParticipantsFilter"},{"id":"-1548400251","predicate":"channelParticipantsKicked","params":[{"name":"q","type":"string"}],"type":"ChannelParticipantsFilter"},{"id":"-1699676497","predicate":"channels.channelParticipants","params":[{"name":"count","type":"int"},{"name":"participants","type":"Vector<ChannelParticipant>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"channels.ChannelParticipants"},{"id":"-541588713","predicate":"channels.channelParticipant","params":[{"name":"participant","type":"ChannelParticipant"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"channels.ChannelParticipant"},{"id":"-462696732","predicate":"chatParticipantCreator","params":[{"name":"user_id","type":"long"}],"type":"ChatParticipant"},{"id":"-1600962725","predicate":"chatParticipantAdmin","params":[{"name":"user_id","type":"long"},{"name":"inviter_id","type":"long"},{"name":"date","type":"int"}],"type":"ChatParticipant"},{"id":"-674602590","predicate":"updateChatParticipantAdmin","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"long"},{"name":"is_admin","type":"Bool"},{"name":"version","type":"int"}],"type":"Update"},{"id":"-519864430","predicate":"messageActionChatMigrateTo","params":[{"name":"channel_id","type":"long"}],"type":"MessageAction"},{"id":"-365344535","predicate":"messageActionChannelMigrateFrom","params":[{"name":"title","type":"string"},{"name":"chat_id","type":"long"}],"type":"MessageAction"},{"id":"-1328445861","predicate":"channelParticipantsBots","params":[],"type":"ChannelParticipantsFilter"},{"id":"2013922064","predicate":"help.termsOfService","params":[{"name":"flags","type":"#"},{"name":"popup","type":"flags.0?true"},{"name":"id","type":"DataJSON"},{"name":"text","type":"string"},{"name":"entities","type":"Vector<MessageEntity>"},{"name":"min_age_confirm","type":"flags.1?int"}],"type":"help.TermsOfService"},{"id":"1753886890","predicate":"updateNewStickerSet","params":[{"name":"stickerset","type":"messages.StickerSet"}],"type":"Update"},{"id":"196268545","predicate":"updateStickerSetsOrder","params":[{"name":"flags","type":"#"},{"name":"masks","type":"flags.0?true"},{"name":"order","type":"Vector<long>"}],"type":"Update"},{"id":"1135492588","predicate":"updateStickerSets","params":[],"type":"Update"},{"id":"-402498398","predicate":"messages.savedGifsNotModified","params":[],"type":"messages.SavedGifs"},{"id":"-2069878259","predicate":"messages.savedGifs","params":[{"name":"hash","type":"long"},{"name":"gifs","type":"Vector<Document>"}],"type":"messages.SavedGifs"},{"id":"-1821035490","predicate":"updateSavedGifs","params":[],"type":"Update"},{"id":"864077702","predicate":"inputBotInlineMessageMediaAuto","params":[{"name":"flags","type":"#"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"1036876423","predicate":"inputBotInlineMessageText","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.0?true"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"-2000710887","predicate":"inputBotInlineResult","params":[{"name":"flags","type":"#"},{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"title","type":"flags.1?string"},{"name":"description","type":"flags.2?string"},{"name":"url","type":"flags.3?string"},{"name":"thumb","type":"flags.4?InputWebDocument"},{"name":"content","type":"flags.5?InputWebDocument"},{"name":"send_message","type":"InputBotInlineMessage"}],"type":"InputBotInlineResult"},{"id":"1984755728","predicate":"botInlineMessageMediaAuto","params":[{"name":"flags","type":"#"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"-1937807902","predicate":"botInlineMessageText","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.0?true"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"295067450","predicate":"botInlineResult","params":[{"name":"flags","type":"#"},{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"title","type":"flags.1?string"},{"name":"description","type":"flags.2?string"},{"name":"url","type":"flags.3?string"},{"name":"thumb","type":"flags.4?WebDocument"},{"name":"content","type":"flags.5?WebDocument"},{"name":"send_message","type":"BotInlineMessage"}],"type":"BotInlineResult"},{"id":"-1803769784","predicate":"messages.botResults","params":[{"name":"flags","type":"#"},{"name":"gallery","type":"flags.0?true"},{"name":"query_id","type":"long"},{"name":"next_offset","type":"flags.1?string"},{"name":"switch_pm","type":"flags.2?InlineBotSwitchPM"},{"name":"results","type":"Vector<BotInlineResult>"},{"name":"cache_time","type":"int"},{"name":"users","type":"Vector<User>"}],"type":"messages.BotResults"},{"id":"1232025500","predicate":"updateBotInlineQuery","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"query","type":"string"},{"name":"geo","type":"flags.0?GeoPoint"},{"name":"peer_type","type":"flags.1?InlineQueryPeerType"},{"name":"offset","type":"string"}],"type":"Update"},{"id":"317794823","predicate":"updateBotInlineSend","params":[{"name":"flags","type":"#"},{"name":"user_id","type":"long"},{"name":"query","type":"string"},{"name":"geo","type":"flags.0?GeoPoint"},{"name":"id","type":"string"},{"name":"msg_id","type":"flags.1?InputBotInlineMessageID"}],"type":"Update"},{"id":"1358283666","predicate":"inputMessagesFilterVoice","params":[],"type":"MessagesFilter"},{"id":"928101534","predicate":"inputMessagesFilterMusic","params":[],"type":"MessagesFilter"},{"id":"-1107622874","predicate":"inputPrivacyKeyChatInvite","params":[],"type":"InputPrivacyKey"},{"id":"1343122938","predicate":"privacyKeyChatInvite","params":[],"type":"PrivacyKey"},{"id":"1571494644","predicate":"exportedMessageLink","params":[{"name":"link","type":"string"},{"name":"html","type":"string"}],"type":"ExportedMessageLink"},{"id":"1601666510","predicate":"messageFwdHeader","params":[{"name":"flags","type":"#"},{"name":"imported","type":"flags.7?true"},{"name":"from_id","type":"flags.0?Peer"},{"name":"from_name","type":"flags.5?string"},{"name":"date","type":"int"},{"name":"channel_post","type":"flags.2?int"},{"name":"post_author","type":"flags.3?string"},{"name":"saved_from_peer","type":"flags.4?Peer"},{"name":"saved_from_msg_id","type":"flags.4?int"},{"name":"psa_type","type":"flags.6?string"}],"type":"MessageFwdHeader"},{"id":"457133559","predicate":"updateEditChannelMessage","params":[{"name":"message","type":"Message"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1799538451","predicate":"messageActionPinMessage","params":[],"type":"MessageAction"},{"id":"1923290508","predicate":"auth.codeTypeSms","params":[],"type":"auth.CodeType"},{"id":"1948046307","predicate":"auth.codeTypeCall","params":[],"type":"auth.CodeType"},{"id":"577556219","predicate":"auth.codeTypeFlashCall","params":[],"type":"auth.CodeType"},{"id":"1035688326","predicate":"auth.sentCodeTypeApp","params":[{"name":"length","type":"int"}],"type":"auth.SentCodeType"},{"id":"-1073693790","predicate":"auth.sentCodeTypeSms","params":[{"name":"length","type":"int"}],"type":"auth.SentCodeType"},{"id":"1398007207","predicate":"auth.sentCodeTypeCall","params":[{"name":"length","type":"int"}],"type":"auth.SentCodeType"},{"id":"-1425815847","predicate":"auth.sentCodeTypeFlashCall","params":[{"name":"pattern","type":"string"}],"type":"auth.SentCodeType"},{"id":"629866245","predicate":"keyboardButtonUrl","params":[{"name":"text","type":"string"},{"name":"url","type":"string"}],"type":"KeyboardButton"},{"id":"901503851","predicate":"keyboardButtonCallback","params":[{"name":"flags","type":"#"},{"name":"requires_password","type":"flags.0?true"},{"name":"text","type":"string"},{"name":"data","type":"bytes"}],"type":"KeyboardButton"},{"id":"-1318425559","predicate":"keyboardButtonRequestPhone","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"-59151553","predicate":"keyboardButtonRequestGeoLocation","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"90744648","predicate":"keyboardButtonSwitchInline","params":[{"name":"flags","type":"#"},{"name":"same_peer","type":"flags.0?true"},{"name":"text","type":"string"},{"name":"query","type":"string"}],"type":"KeyboardButton"},{"id":"1218642516","predicate":"replyInlineMarkup","params":[{"name":"rows","type":"Vector<KeyboardButtonRow>"}],"type":"ReplyMarkup"},{"id":"911761060","predicate":"messages.botCallbackAnswer","params":[{"name":"flags","type":"#"},{"name":"alert","type":"flags.1?true"},{"name":"has_url","type":"flags.3?true"},{"name":"native_ui","type":"flags.4?true"},{"name":"message","type":"flags.0?string"},{"name":"url","type":"flags.2?string"},{"name":"cache_time","type":"int"}],"type":"messages.BotCallbackAnswer"},{"id":"-1177566067","predicate":"updateBotCallbackQuery","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"peer","type":"Peer"},{"name":"msg_id","type":"int"},{"name":"chat_instance","type":"long"},{"name":"data","type":"flags.0?bytes"},{"name":"game_short_name","type":"flags.1?string"}],"type":"Update"},{"id":"649453030","predicate":"messages.messageEditData","params":[{"name":"flags","type":"#"},{"name":"caption","type":"flags.0?true"}],"type":"messages.MessageEditData"},{"id":"-469536605","predicate":"updateEditMessage","params":[{"name":"message","type":"Message"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1768777083","predicate":"inputBotInlineMessageMediaGeo","params":[{"name":"flags","type":"#"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"heading","type":"flags.0?int"},{"name":"period","type":"flags.1?int"},{"name":"proximity_notification_radius","type":"flags.3?int"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"1098628881","predicate":"inputBotInlineMessageMediaVenue","params":[{"name":"flags","type":"#"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"title","type":"string"},{"name":"address","type":"string"},{"name":"provider","type":"string"},{"name":"venue_id","type":"string"},{"name":"venue_type","type":"string"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"-1494368259","predicate":"inputBotInlineMessageMediaContact","params":[{"name":"flags","type":"#"},{"name":"phone_number","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"vcard","type":"string"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"85477117","predicate":"botInlineMessageMediaGeo","params":[{"name":"flags","type":"#"},{"name":"geo","type":"GeoPoint"},{"name":"heading","type":"flags.0?int"},{"name":"period","type":"flags.1?int"},{"name":"proximity_notification_radius","type":"flags.3?int"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"-1970903652","predicate":"botInlineMessageMediaVenue","params":[{"name":"flags","type":"#"},{"name":"geo","type":"GeoPoint"},{"name":"title","type":"string"},{"name":"address","type":"string"},{"name":"provider","type":"string"},{"name":"venue_id","type":"string"},{"name":"venue_type","type":"string"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"416402882","predicate":"botInlineMessageMediaContact","params":[{"name":"flags","type":"#"},{"name":"phone_number","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"vcard","type":"string"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"-1462213465","predicate":"inputBotInlineResultPhoto","params":[{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"photo","type":"InputPhoto"},{"name":"send_message","type":"InputBotInlineMessage"}],"type":"InputBotInlineResult"},{"id":"-459324","predicate":"inputBotInlineResultDocument","params":[{"name":"flags","type":"#"},{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"title","type":"flags.1?string"},{"name":"description","type":"flags.2?string"},{"name":"document","type":"InputDocument"},{"name":"send_message","type":"InputBotInlineMessage"}],"type":"InputBotInlineResult"},{"id":"400266251","predicate":"botInlineMediaResult","params":[{"name":"flags","type":"#"},{"name":"id","type":"string"},{"name":"type","type":"string"},{"name":"photo","type":"flags.0?Photo"},{"name":"document","type":"flags.1?Document"},{"name":"title","type":"flags.2?string"},{"name":"description","type":"flags.3?string"},{"name":"send_message","type":"BotInlineMessage"}],"type":"BotInlineResult"},{"id":"-1995686519","predicate":"inputBotInlineMessageID","params":[{"name":"dc_id","type":"int"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputBotInlineMessageID"},{"id":"1763610706","predicate":"updateInlineBotCallbackQuery","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"msg_id","type":"InputBotInlineMessageID"},{"name":"chat_instance","type":"long"},{"name":"data","type":"flags.0?bytes"},{"name":"game_short_name","type":"flags.1?string"}],"type":"Update"},{"id":"1008755359","predicate":"inlineBotSwitchPM","params":[{"name":"text","type":"string"},{"name":"start_param","type":"string"}],"type":"InlineBotSwitchPM"},{"id":"863093588","predicate":"messages.peerDialogs","params":[{"name":"dialogs","type":"Vector<Dialog>"},{"name":"messages","type":"Vector<Message>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"state","type":"updates.State"}],"type":"messages.PeerDialogs"},{"id":"-305282981","predicate":"topPeer","params":[{"name":"peer","type":"Peer"},{"name":"rating","type":"double"}],"type":"TopPeer"},{"id":"-1419371685","predicate":"topPeerCategoryBotsPM","params":[],"type":"TopPeerCategory"},{"id":"344356834","predicate":"topPeerCategoryBotsInline","params":[],"type":"TopPeerCategory"},{"id":"104314861","predicate":"topPeerCategoryCorrespondents","params":[],"type":"TopPeerCategory"},{"id":"-1122524854","predicate":"topPeerCategoryGroups","params":[],"type":"TopPeerCategory"},{"id":"371037736","predicate":"topPeerCategoryChannels","params":[],"type":"TopPeerCategory"},{"id":"-75283823","predicate":"topPeerCategoryPeers","params":[{"name":"category","type":"TopPeerCategory"},{"name":"count","type":"int"},{"name":"peers","type":"Vector<TopPeer>"}],"type":"TopPeerCategoryPeers"},{"id":"-567906571","predicate":"contacts.topPeersNotModified","params":[],"type":"contacts.TopPeers"},{"id":"1891070632","predicate":"contacts.topPeers","params":[{"name":"categories","type":"Vector<TopPeerCategoryPeers>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"contacts.TopPeers"},{"id":"-595914432","predicate":"messageEntityMentionName","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"},{"name":"user_id","type":"long"}],"type":"MessageEntity"},{"id":"546203849","predicate":"inputMessageEntityMentionName","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"},{"name":"user_id","type":"InputUser"}],"type":"MessageEntity"},{"id":"975236280","predicate":"inputMessagesFilterChatPhotos","params":[],"type":"MessagesFilter"},{"id":"-1218471511","predicate":"updateReadChannelOutbox","params":[{"name":"channel_id","type":"long"},{"name":"max_id","type":"int"}],"type":"Update"},{"id":"-299124375","predicate":"updateDraftMessage","params":[{"name":"peer","type":"Peer"},{"name":"draft","type":"DraftMessage"}],"type":"Update"},{"id":"453805082","predicate":"draftMessageEmpty","params":[{"name":"flags","type":"#"},{"name":"date","type":"flags.0?int"}],"type":"DraftMessage"},{"id":"-40996577","predicate":"draftMessage","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"message","type":"string"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"},{"name":"date","type":"int"}],"type":"DraftMessage"},{"id":"-1615153660","predicate":"messageActionHistoryClear","params":[],"type":"MessageAction"},{"id":"-958657434","predicate":"messages.featuredStickersNotModified","params":[{"name":"count","type":"int"}],"type":"messages.FeaturedStickers"},{"id":"-2067782896","predicate":"messages.featuredStickers","params":[{"name":"hash","type":"long"},{"name":"count","type":"int"},{"name":"sets","type":"Vector<StickerSetCovered>"},{"name":"unread","type":"Vector<long>"}],"type":"messages.FeaturedStickers"},{"id":"1461528386","predicate":"updateReadFeaturedStickers","params":[],"type":"Update"},{"id":"186120336","predicate":"messages.recentStickersNotModified","params":[],"type":"messages.RecentStickers"},{"id":"-1999405994","predicate":"messages.recentStickers","params":[{"name":"hash","type":"long"},{"name":"packs","type":"Vector<StickerPack>"},{"name":"stickers","type":"Vector<Document>"},{"name":"dates","type":"Vector<int>"}],"type":"messages.RecentStickers"},{"id":"-1706939360","predicate":"updateRecentStickers","params":[],"type":"Update"},{"id":"1338747336","predicate":"messages.archivedStickers","params":[{"name":"count","type":"int"},{"name":"sets","type":"Vector<StickerSetCovered>"}],"type":"messages.ArchivedStickers"},{"id":"946083368","predicate":"messages.stickerSetInstallResultSuccess","params":[],"type":"messages.StickerSetInstallResult"},{"id":"904138920","predicate":"messages.stickerSetInstallResultArchive","params":[{"name":"sets","type":"Vector<StickerSetCovered>"}],"type":"messages.StickerSetInstallResult"},{"id":"1678812626","predicate":"stickerSetCovered","params":[{"name":"set","type":"StickerSet"},{"name":"cover","type":"Document"}],"type":"StickerSetCovered"},{"id":"-1574314746","predicate":"updateConfig","params":[],"type":"Update"},{"id":"861169551","predicate":"updatePtsChanged","params":[],"type":"Update"},{"id":"-440664550","predicate":"inputMediaPhotoExternal","params":[{"name":"flags","type":"#"},{"name":"url","type":"string"},{"name":"ttl_seconds","type":"flags.0?int"}],"type":"InputMedia"},{"id":"-78455655","predicate":"inputMediaDocumentExternal","params":[{"name":"flags","type":"#"},{"name":"url","type":"string"},{"name":"ttl_seconds","type":"flags.0?int"}],"type":"InputMedia"},{"id":"872932635","predicate":"stickerSetMultiCovered","params":[{"name":"set","type":"StickerSet"},{"name":"covers","type":"Vector<Document>"}],"type":"StickerSetCovered"},{"id":"-1361650766","predicate":"maskCoords","params":[{"name":"n","type":"int"},{"name":"x","type":"double"},{"name":"y","type":"double"},{"name":"zoom","type":"double"}],"type":"MaskCoords"},{"id":"-1744710921","predicate":"documentAttributeHasStickers","params":[],"type":"DocumentAttribute"},{"id":"1251549527","predicate":"inputStickeredMediaPhoto","params":[{"name":"id","type":"InputPhoto"}],"type":"InputStickeredMedia"},{"id":"70813275","predicate":"inputStickeredMediaDocument","params":[{"name":"id","type":"InputDocument"}],"type":"InputStickeredMedia"},{"id":"-1107729093","predicate":"game","params":[{"name":"flags","type":"#"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"short_name","type":"string"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"Photo"},{"name":"document","type":"flags.0?Document"}],"type":"Game"},{"id":"1336154098","predicate":"inputBotInlineResultGame","params":[{"name":"id","type":"string"},{"name":"short_name","type":"string"},{"name":"send_message","type":"InputBotInlineMessage"}],"type":"InputBotInlineResult"},{"id":"1262639204","predicate":"inputBotInlineMessageGame","params":[{"name":"flags","type":"#"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"-38694904","predicate":"messageMediaGame","params":[{"name":"game","type":"Game"}],"type":"MessageMedia"},{"id":"-750828557","predicate":"inputMediaGame","params":[{"name":"id","type":"InputGame"}],"type":"InputMedia"},{"id":"53231223","predicate":"inputGameID","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputGame"},{"id":"-1020139510","predicate":"inputGameShortName","params":[{"name":"bot_id","type":"InputUser"},{"name":"short_name","type":"string"}],"type":"InputGame"},{"id":"1358175439","predicate":"keyboardButtonGame","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"-1834538890","predicate":"messageActionGameScore","params":[{"name":"game_id","type":"long"},{"name":"score","type":"int"}],"type":"MessageAction"},{"id":"1940093419","predicate":"highScore","params":[{"name":"pos","type":"int"},{"name":"user_id","type":"long"},{"name":"score","type":"int"}],"type":"HighScore"},{"id":"-1707344487","predicate":"messages.highScores","params":[{"name":"scores","type":"Vector<HighScore>"},{"name":"users","type":"Vector<User>"}],"type":"messages.HighScores"},{"id":"1258196845","predicate":"updates.differenceTooLong","params":[{"name":"pts","type":"int"}],"type":"updates.Difference"},{"id":"791390623","predicate":"updateChannelWebPage","params":[{"name":"channel_id","type":"long"},{"name":"webpage","type":"WebPage"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"-1663561404","predicate":"messages.chatsSlice","params":[{"name":"count","type":"int"},{"name":"chats","type":"Vector<Chat>"}],"type":"messages.Chats"},{"id":"-599948721","predicate":"textEmpty","params":[],"type":"RichText"},{"id":"1950782688","predicate":"textPlain","params":[{"name":"text","type":"string"}],"type":"RichText"},{"id":"1730456516","predicate":"textBold","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"-653089380","predicate":"textItalic","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"-1054465340","predicate":"textUnderline","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"-1678197867","predicate":"textStrike","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"1816074681","predicate":"textFixed","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"1009288385","predicate":"textUrl","params":[{"name":"text","type":"RichText"},{"name":"url","type":"string"},{"name":"webpage_id","type":"long"}],"type":"RichText"},{"id":"-564523562","predicate":"textEmail","params":[{"name":"text","type":"RichText"},{"name":"email","type":"string"}],"type":"RichText"},{"id":"2120376535","predicate":"textConcat","params":[{"name":"texts","type":"Vector<RichText>"}],"type":"RichText"},{"id":"324435594","predicate":"pageBlockUnsupported","params":[],"type":"PageBlock"},{"id":"1890305021","predicate":"pageBlockTitle","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-1879401953","predicate":"pageBlockSubtitle","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-1162877472","predicate":"pageBlockAuthorDate","params":[{"name":"author","type":"RichText"},{"name":"published_date","type":"int"}],"type":"PageBlock"},{"id":"-1076861716","predicate":"pageBlockHeader","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-248793375","predicate":"pageBlockSubheader","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"1182402406","predicate":"pageBlockParagraph","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-1066346178","predicate":"pageBlockPreformatted","params":[{"name":"text","type":"RichText"},{"name":"language","type":"string"}],"type":"PageBlock"},{"id":"1216809369","predicate":"pageBlockFooter","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"-618614392","predicate":"pageBlockDivider","params":[],"type":"PageBlock"},{"id":"-837994576","predicate":"pageBlockAnchor","params":[{"name":"name","type":"string"}],"type":"PageBlock"},{"id":"-454524911","predicate":"pageBlockList","params":[{"name":"items","type":"Vector<PageListItem>"}],"type":"PageBlock"},{"id":"641563686","predicate":"pageBlockBlockquote","params":[{"name":"text","type":"RichText"},{"name":"caption","type":"RichText"}],"type":"PageBlock"},{"id":"1329878739","predicate":"pageBlockPullquote","params":[{"name":"text","type":"RichText"},{"name":"caption","type":"RichText"}],"type":"PageBlock"},{"id":"391759200","predicate":"pageBlockPhoto","params":[{"name":"flags","type":"#"},{"name":"photo_id","type":"long"},{"name":"caption","type":"PageCaption"},{"name":"url","type":"flags.0?string"},{"name":"webpage_id","type":"flags.0?long"}],"type":"PageBlock"},{"id":"2089805750","predicate":"pageBlockVideo","params":[{"name":"flags","type":"#"},{"name":"autoplay","type":"flags.0?true"},{"name":"loop","type":"flags.1?true"},{"name":"video_id","type":"long"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"972174080","predicate":"pageBlockCover","params":[{"name":"cover","type":"PageBlock"}],"type":"PageBlock"},{"id":"-1468953147","predicate":"pageBlockEmbed","params":[{"name":"flags","type":"#"},{"name":"full_width","type":"flags.0?true"},{"name":"allow_scrolling","type":"flags.3?true"},{"name":"url","type":"flags.1?string"},{"name":"html","type":"flags.2?string"},{"name":"poster_photo_id","type":"flags.4?long"},{"name":"w","type":"flags.5?int"},{"name":"h","type":"flags.5?int"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"-229005301","predicate":"pageBlockEmbedPost","params":[{"name":"url","type":"string"},{"name":"webpage_id","type":"long"},{"name":"author_photo_id","type":"long"},{"name":"author","type":"string"},{"name":"date","type":"int"},{"name":"blocks","type":"Vector<PageBlock>"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"1705048653","predicate":"pageBlockCollage","params":[{"name":"items","type":"Vector<PageBlock>"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"52401552","predicate":"pageBlockSlideshow","params":[{"name":"items","type":"Vector<PageBlock>"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"1930545681","predicate":"webPageNotModified","params":[{"name":"flags","type":"#"},{"name":"cached_page_views","type":"flags.0?int"}],"type":"WebPage"},{"id":"-88417185","predicate":"inputPrivacyKeyPhoneCall","params":[],"type":"InputPrivacyKey"},{"id":"1030105979","predicate":"privacyKeyPhoneCall","params":[],"type":"PrivacyKey"},{"id":"-580219064","predicate":"sendMessageGamePlayAction","params":[],"type":"SendMessageAction"},{"id":"-2048646399","predicate":"phoneCallDiscardReasonMissed","params":[],"type":"PhoneCallDiscardReason"},{"id":"-527056480","predicate":"phoneCallDiscardReasonDisconnect","params":[],"type":"PhoneCallDiscardReason"},{"id":"1471006352","predicate":"phoneCallDiscardReasonHangup","params":[],"type":"PhoneCallDiscardReason"},{"id":"-84416311","predicate":"phoneCallDiscardReasonBusy","params":[],"type":"PhoneCallDiscardReason"},{"id":"1852826908","predicate":"updateDialogPinned","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.0?true"},{"name":"folder_id","type":"flags.1?int"},{"name":"peer","type":"DialogPeer"}],"type":"Update"},{"id":"-99664734","predicate":"updatePinnedDialogs","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.1?int"},{"name":"order","type":"flags.0?Vector<DialogPeer>"}],"type":"Update"},{"id":"2104790276","predicate":"dataJSON","params":[{"name":"data","type":"string"}],"type":"DataJSON"},{"id":"-2095595325","predicate":"updateBotWebhookJSON","params":[{"name":"data","type":"DataJSON"}],"type":"Update"},{"id":"-1684914010","predicate":"updateBotWebhookJSONQuery","params":[{"name":"query_id","type":"long"},{"name":"data","type":"DataJSON"},{"name":"timeout","type":"int"}],"type":"Update"},{"id":"-886477832","predicate":"labeledPrice","params":[{"name":"label","type":"string"},{"name":"amount","type":"long"}],"type":"LabeledPrice"},{"id":"215516896","predicate":"invoice","params":[{"name":"flags","type":"#"},{"name":"test","type":"flags.0?true"},{"name":"name_requested","type":"flags.1?true"},{"name":"phone_requested","type":"flags.2?true"},{"name":"email_requested","type":"flags.3?true"},{"name":"shipping_address_requested","type":"flags.4?true"},{"name":"flexible","type":"flags.5?true"},{"name":"phone_to_provider","type":"flags.6?true"},{"name":"email_to_provider","type":"flags.7?true"},{"name":"currency","type":"string"},{"name":"prices","type":"Vector<LabeledPrice>"},{"name":"max_tip_amount","type":"flags.8?long"},{"name":"suggested_tip_amounts","type":"flags.8?Vector<long>"}],"type":"Invoice"},{"id":"-646342540","predicate":"inputMediaInvoice","params":[{"name":"flags","type":"#"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.0?InputWebDocument"},{"name":"invoice","type":"Invoice"},{"name":"payload","type":"bytes"},{"name":"provider","type":"string"},{"name":"provider_data","type":"DataJSON"},{"name":"start_param","type":"flags.1?string"}],"type":"InputMedia"},{"id":"-368917890","predicate":"paymentCharge","params":[{"name":"id","type":"string"},{"name":"provider_charge_id","type":"string"}],"type":"PaymentCharge"},{"id":"-1892568281","predicate":"messageActionPaymentSentMe","params":[{"name":"flags","type":"#"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"},{"name":"payload","type":"bytes"},{"name":"info","type":"flags.0?PaymentRequestedInfo"},{"name":"shipping_option_id","type":"flags.1?string"},{"name":"charge","type":"PaymentCharge"}],"type":"MessageAction"},{"id":"-2074799289","predicate":"messageMediaInvoice","params":[{"name":"flags","type":"#"},{"name":"shipping_address_requested","type":"flags.1?true"},{"name":"test","type":"flags.3?true"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.0?WebDocument"},{"name":"receipt_msg_id","type":"flags.2?int"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"},{"name":"start_param","type":"string"}],"type":"MessageMedia"},{"id":"512535275","predicate":"postAddress","params":[{"name":"street_line1","type":"string"},{"name":"street_line2","type":"string"},{"name":"city","type":"string"},{"name":"state","type":"string"},{"name":"country_iso2","type":"string"},{"name":"post_code","type":"string"}],"type":"PostAddress"},{"id":"-1868808300","predicate":"paymentRequestedInfo","params":[{"name":"flags","type":"#"},{"name":"name","type":"flags.0?string"},{"name":"phone","type":"flags.1?string"},{"name":"email","type":"flags.2?string"},{"name":"shipping_address","type":"flags.3?PostAddress"}],"type":"PaymentRequestedInfo"},{"id":"-1344716869","predicate":"keyboardButtonBuy","params":[{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"1080663248","predicate":"messageActionPaymentSent","params":[{"name":"currency","type":"string"},{"name":"total_amount","type":"long"}],"type":"MessageAction"},{"id":"-842892769","predicate":"paymentSavedCredentialsCard","params":[{"name":"id","type":"string"},{"name":"title","type":"string"}],"type":"PaymentSavedCredentials"},{"id":"475467473","predicate":"webDocument","params":[{"name":"url","type":"string"},{"name":"access_hash","type":"long"},{"name":"size","type":"int"},{"name":"mime_type","type":"string"},{"name":"attributes","type":"Vector<DocumentAttribute>"}],"type":"WebDocument"},{"id":"-1678949555","predicate":"inputWebDocument","params":[{"name":"url","type":"string"},{"name":"size","type":"int"},{"name":"mime_type","type":"string"},{"name":"attributes","type":"Vector<DocumentAttribute>"}],"type":"InputWebDocument"},{"id":"-1036396922","predicate":"inputWebFileLocation","params":[{"name":"url","type":"string"},{"name":"access_hash","type":"long"}],"type":"InputWebFileLocation"},{"id":"568808380","predicate":"upload.webFile","params":[{"name":"size","type":"int"},{"name":"mime_type","type":"string"},{"name":"file_type","type":"storage.FileType"},{"name":"mtime","type":"int"},{"name":"bytes","type":"bytes"}],"type":"upload.WebFile"},{"id":"378828315","predicate":"payments.paymentForm","params":[{"name":"flags","type":"#"},{"name":"can_save_credentials","type":"flags.2?true"},{"name":"password_missing","type":"flags.3?true"},{"name":"form_id","type":"long"},{"name":"bot_id","type":"long"},{"name":"invoice","type":"Invoice"},{"name":"provider_id","type":"long"},{"name":"url","type":"string"},{"name":"native_provider","type":"flags.4?string"},{"name":"native_params","type":"flags.4?DataJSON"},{"name":"saved_info","type":"flags.0?PaymentRequestedInfo"},{"name":"saved_credentials","type":"flags.1?PaymentSavedCredentials"},{"name":"users","type":"Vector<User>"}],"type":"payments.PaymentForm"},{"id":"-784000893","predicate":"payments.validatedRequestedInfo","params":[{"name":"flags","type":"#"},{"name":"id","type":"flags.0?string"},{"name":"shipping_options","type":"flags.1?Vector<ShippingOption>"}],"type":"payments.ValidatedRequestedInfo"},{"id":"1314881805","predicate":"payments.paymentResult","params":[{"name":"updates","type":"Updates"}],"type":"payments.PaymentResult"},{"id":"1891958275","predicate":"payments.paymentReceipt","params":[{"name":"flags","type":"#"},{"name":"date","type":"int"},{"name":"bot_id","type":"long"},{"name":"provider_id","type":"long"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.2?WebDocument"},{"name":"invoice","type":"Invoice"},{"name":"info","type":"flags.0?PaymentRequestedInfo"},{"name":"shipping","type":"flags.1?ShippingOption"},{"name":"tip_amount","type":"flags.3?long"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"},{"name":"credentials_title","type":"string"},{"name":"users","type":"Vector<User>"}],"type":"payments.PaymentReceipt"},{"id":"-74456004","predicate":"payments.savedInfo","params":[{"name":"flags","type":"#"},{"name":"has_saved_credentials","type":"flags.1?true"},{"name":"saved_info","type":"flags.0?PaymentRequestedInfo"}],"type":"payments.SavedInfo"},{"id":"-1056001329","predicate":"inputPaymentCredentialsSaved","params":[{"name":"id","type":"string"},{"name":"tmp_password","type":"bytes"}],"type":"InputPaymentCredentials"},{"id":"873977640","predicate":"inputPaymentCredentials","params":[{"name":"flags","type":"#"},{"name":"save","type":"flags.0?true"},{"name":"data","type":"DataJSON"}],"type":"InputPaymentCredentials"},{"id":"-614138572","predicate":"account.tmpPassword","params":[{"name":"tmp_password","type":"bytes"},{"name":"valid_until","type":"int"}],"type":"account.TmpPassword"},{"id":"-1239335713","predicate":"shippingOption","params":[{"name":"id","type":"string"},{"name":"title","type":"string"},{"name":"prices","type":"Vector<LabeledPrice>"}],"type":"ShippingOption"},{"id":"-1246823043","predicate":"updateBotShippingQuery","params":[{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"payload","type":"bytes"},{"name":"shipping_address","type":"PostAddress"}],"type":"Update"},{"id":"-1934976362","predicate":"updateBotPrecheckoutQuery","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"user_id","type":"long"},{"name":"payload","type":"bytes"},{"name":"info","type":"flags.0?PaymentRequestedInfo"},{"name":"shipping_option_id","type":"flags.1?string"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"}],"type":"Update"},{"id":"-6249322","predicate":"inputStickerSetItem","params":[{"name":"flags","type":"#"},{"name":"document","type":"InputDocument"},{"name":"emoji","type":"string"},{"name":"mask_coords","type":"flags.0?MaskCoords"}],"type":"InputStickerSetItem"},{"id":"-1425052898","predicate":"updatePhoneCall","params":[{"name":"phone_call","type":"PhoneCall"}],"type":"Update"},{"id":"506920429","predicate":"inputPhoneCall","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputPhoneCall"},{"id":"1399245077","predicate":"phoneCallEmpty","params":[{"name":"id","type":"long"}],"type":"PhoneCall"},{"id":"-987599081","predicate":"phoneCallWaiting","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"protocol","type":"PhoneCallProtocol"},{"name":"receive_date","type":"flags.0?int"}],"type":"PhoneCall"},{"id":"347139340","predicate":"phoneCallRequested","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_a_hash","type":"bytes"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"PhoneCall"},{"id":"912311057","predicate":"phoneCallAccepted","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_b","type":"bytes"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"PhoneCall"},{"id":"-1770029977","predicate":"phoneCall","params":[{"name":"flags","type":"#"},{"name":"p2p_allowed","type":"flags.5?true"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"date","type":"int"},{"name":"admin_id","type":"long"},{"name":"participant_id","type":"long"},{"name":"g_a_or_b","type":"bytes"},{"name":"key_fingerprint","type":"long"},{"name":"protocol","type":"PhoneCallProtocol"},{"name":"connections","type":"Vector<PhoneConnection>"},{"name":"start_date","type":"int"}],"type":"PhoneCall"},{"id":"1355435489","predicate":"phoneCallDiscarded","params":[{"name":"flags","type":"#"},{"name":"need_rating","type":"flags.2?true"},{"name":"need_debug","type":"flags.3?true"},{"name":"video","type":"flags.6?true"},{"name":"id","type":"long"},{"name":"reason","type":"flags.0?PhoneCallDiscardReason"},{"name":"duration","type":"flags.1?int"}],"type":"PhoneCall"},{"id":"-1655957568","predicate":"phoneConnection","params":[{"name":"id","type":"long"},{"name":"ip","type":"string"},{"name":"ipv6","type":"string"},{"name":"port","type":"int"},{"name":"peer_tag","type":"bytes"}],"type":"PhoneConnection"},{"id":"-58224696","predicate":"phoneCallProtocol","params":[{"name":"flags","type":"#"},{"name":"udp_p2p","type":"flags.0?true"},{"name":"udp_reflector","type":"flags.1?true"},{"name":"min_layer","type":"int"},{"name":"max_layer","type":"int"},{"name":"library_versions","type":"Vector<string>"}],"type":"PhoneCallProtocol"},{"id":"-326966976","predicate":"phone.phoneCall","params":[{"name":"phone_call","type":"PhoneCall"},{"name":"users","type":"Vector<User>"}],"type":"phone.PhoneCall"},{"id":"-2134272152","predicate":"inputMessagesFilterPhoneCalls","params":[{"name":"flags","type":"#"},{"name":"missed","type":"flags.0?true"}],"type":"MessagesFilter"},{"id":"-2132731265","predicate":"messageActionPhoneCall","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.2?true"},{"name":"call_id","type":"long"},{"name":"reason","type":"flags.0?PhoneCallDiscardReason"},{"name":"duration","type":"flags.1?int"}],"type":"MessageAction"},{"id":"2054952868","predicate":"inputMessagesFilterRoundVoice","params":[],"type":"MessagesFilter"},{"id":"-1253451181","predicate":"inputMessagesFilterRoundVideo","params":[],"type":"MessagesFilter"},{"id":"-1997373508","predicate":"sendMessageRecordRoundAction","params":[],"type":"SendMessageAction"},{"id":"608050278","predicate":"sendMessageUploadRoundAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"-242427324","predicate":"upload.fileCdnRedirect","params":[{"name":"dc_id","type":"int"},{"name":"file_token","type":"bytes"},{"name":"encryption_key","type":"bytes"},{"name":"encryption_iv","type":"bytes"},{"name":"file_hashes","type":"Vector<FileHash>"}],"type":"upload.File"},{"id":"-290921362","predicate":"upload.cdnFileReuploadNeeded","params":[{"name":"request_token","type":"bytes"}],"type":"upload.CdnFile"},{"id":"-1449145777","predicate":"upload.cdnFile","params":[{"name":"bytes","type":"bytes"}],"type":"upload.CdnFile"},{"id":"-914167110","predicate":"cdnPublicKey","params":[{"name":"dc_id","type":"int"},{"name":"public_key","type":"string"}],"type":"CdnPublicKey"},{"id":"1462101002","predicate":"cdnConfig","params":[{"name":"public_keys","type":"Vector<CdnPublicKey>"}],"type":"CdnConfig"},{"id":"-283684427","predicate":"pageBlockChannel","params":[{"name":"channel","type":"Chat"}],"type":"PageBlock"},{"id":"-892239370","predicate":"langPackString","params":[{"name":"key","type":"string"},{"name":"value","type":"string"}],"type":"LangPackString"},{"id":"1816636575","predicate":"langPackStringPluralized","params":[{"name":"flags","type":"#"},{"name":"key","type":"string"},{"name":"zero_value","type":"flags.0?string"},{"name":"one_value","type":"flags.1?string"},{"name":"two_value","type":"flags.2?string"},{"name":"few_value","type":"flags.3?string"},{"name":"many_value","type":"flags.4?string"},{"name":"other_value","type":"string"}],"type":"LangPackString"},{"id":"695856818","predicate":"langPackStringDeleted","params":[{"name":"key","type":"string"}],"type":"LangPackString"},{"id":"-209337866","predicate":"langPackDifference","params":[{"name":"lang_code","type":"string"},{"name":"from_version","type":"int"},{"name":"version","type":"int"},{"name":"strings","type":"Vector<LangPackString>"}],"type":"LangPackDifference"},{"id":"-288727837","predicate":"langPackLanguage","params":[{"name":"flags","type":"#"},{"name":"official","type":"flags.0?true"},{"name":"rtl","type":"flags.2?true"},{"name":"beta","type":"flags.3?true"},{"name":"name","type":"string"},{"name":"native_name","type":"string"},{"name":"lang_code","type":"string"},{"name":"base_lang_code","type":"flags.1?string"},{"name":"plural_code","type":"string"},{"name":"strings_count","type":"int"},{"name":"translated_count","type":"int"},{"name":"translations_url","type":"string"}],"type":"LangPackLanguage"},{"id":"1180041828","predicate":"updateLangPackTooLong","params":[{"name":"lang_code","type":"string"}],"type":"Update"},{"id":"1442983757","predicate":"updateLangPack","params":[{"name":"difference","type":"LangPackDifference"}],"type":"Update"},{"id":"885242707","predicate":"channelParticipantAdmin","params":[{"name":"flags","type":"#"},{"name":"can_edit","type":"flags.0?true"},{"name":"self","type":"flags.1?true"},{"name":"user_id","type":"long"},{"name":"inviter_id","type":"flags.1?long"},{"name":"promoted_by","type":"long"},{"name":"date","type":"int"},{"name":"admin_rights","type":"ChatAdminRights"},{"name":"rank","type":"flags.2?string"}],"type":"ChannelParticipant"},{"id":"1844969806","predicate":"channelParticipantBanned","params":[{"name":"flags","type":"#"},{"name":"left","type":"flags.0?true"},{"name":"peer","type":"Peer"},{"name":"kicked_by","type":"long"},{"name":"date","type":"int"},{"name":"banned_rights","type":"ChatBannedRights"}],"type":"ChannelParticipant"},{"id":"338142689","predicate":"channelParticipantsBanned","params":[{"name":"q","type":"string"}],"type":"ChannelParticipantsFilter"},{"id":"106343499","predicate":"channelParticipantsSearch","params":[{"name":"q","type":"string"}],"type":"ChannelParticipantsFilter"},{"id":"-421545947","predicate":"channelAdminLogEventActionChangeTitle","params":[{"name":"prev_value","type":"string"},{"name":"new_value","type":"string"}],"type":"ChannelAdminLogEventAction"},{"id":"1427671598","predicate":"channelAdminLogEventActionChangeAbout","params":[{"name":"prev_value","type":"string"},{"name":"new_value","type":"string"}],"type":"ChannelAdminLogEventAction"},{"id":"1783299128","predicate":"channelAdminLogEventActionChangeUsername","params":[{"name":"prev_value","type":"string"},{"name":"new_value","type":"string"}],"type":"ChannelAdminLogEventAction"},{"id":"1129042607","predicate":"channelAdminLogEventActionChangePhoto","params":[{"name":"prev_photo","type":"Photo"},{"name":"new_photo","type":"Photo"}],"type":"ChannelAdminLogEventAction"},{"id":"460916654","predicate":"channelAdminLogEventActionToggleInvites","params":[{"name":"new_value","type":"Bool"}],"type":"ChannelAdminLogEventAction"},{"id":"648939889","predicate":"channelAdminLogEventActionToggleSignatures","params":[{"name":"new_value","type":"Bool"}],"type":"ChannelAdminLogEventAction"},{"id":"-370660328","predicate":"channelAdminLogEventActionUpdatePinned","params":[{"name":"message","type":"Message"}],"type":"ChannelAdminLogEventAction"},{"id":"1889215493","predicate":"channelAdminLogEventActionEditMessage","params":[{"name":"prev_message","type":"Message"},{"name":"new_message","type":"Message"}],"type":"ChannelAdminLogEventAction"},{"id":"1121994683","predicate":"channelAdminLogEventActionDeleteMessage","params":[{"name":"message","type":"Message"}],"type":"ChannelAdminLogEventAction"},{"id":"405815507","predicate":"channelAdminLogEventActionParticipantJoin","params":[],"type":"ChannelAdminLogEventAction"},{"id":"-124291086","predicate":"channelAdminLogEventActionParticipantLeave","params":[],"type":"ChannelAdminLogEventAction"},{"id":"-484690728","predicate":"channelAdminLogEventActionParticipantInvite","params":[{"name":"participant","type":"ChannelParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"-422036098","predicate":"channelAdminLogEventActionParticipantToggleBan","params":[{"name":"prev_participant","type":"ChannelParticipant"},{"name":"new_participant","type":"ChannelParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"-714643696","predicate":"channelAdminLogEventActionParticipantToggleAdmin","params":[{"name":"prev_participant","type":"ChannelParticipant"},{"name":"new_participant","type":"ChannelParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"531458253","predicate":"channelAdminLogEvent","params":[{"name":"id","type":"long"},{"name":"date","type":"int"},{"name":"user_id","type":"long"},{"name":"action","type":"ChannelAdminLogEventAction"}],"type":"ChannelAdminLogEvent"},{"id":"-309659827","predicate":"channels.adminLogResults","params":[{"name":"events","type":"Vector<ChannelAdminLogEvent>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"channels.AdminLogResults"},{"id":"-368018716","predicate":"channelAdminLogEventsFilter","params":[{"name":"flags","type":"#"},{"name":"join","type":"flags.0?true"},{"name":"leave","type":"flags.1?true"},{"name":"invite","type":"flags.2?true"},{"name":"ban","type":"flags.3?true"},{"name":"unban","type":"flags.4?true"},{"name":"kick","type":"flags.5?true"},{"name":"unkick","type":"flags.6?true"},{"name":"promote","type":"flags.7?true"},{"name":"demote","type":"flags.8?true"},{"name":"info","type":"flags.9?true"},{"name":"settings","type":"flags.10?true"},{"name":"pinned","type":"flags.11?true"},{"name":"edit","type":"flags.12?true"},{"name":"delete","type":"flags.13?true"},{"name":"group_call","type":"flags.14?true"},{"name":"invites","type":"flags.15?true"},{"name":"send","type":"flags.16?true"}],"type":"ChannelAdminLogEventsFilter"},{"id":"511092620","predicate":"topPeerCategoryPhoneCalls","params":[],"type":"TopPeerCategory"},{"id":"-2143067670","predicate":"pageBlockAudio","params":[{"name":"audio_id","type":"long"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"1558266229","predicate":"popularContact","params":[{"name":"client_id","type":"long"},{"name":"importers","type":"int"}],"type":"PopularContact"},{"id":"1200788123","predicate":"messageActionScreenshotTaken","params":[],"type":"MessageAction"},{"id":"-1634752813","predicate":"messages.favedStickersNotModified","params":[],"type":"messages.FavedStickers"},{"id":"750063767","predicate":"messages.favedStickers","params":[{"name":"hash","type":"long"},{"name":"packs","type":"Vector<StickerPack>"},{"name":"stickers","type":"Vector<Document>"}],"type":"messages.FavedStickers"},{"id":"-451831443","predicate":"updateFavedStickers","params":[],"type":"Update"},{"id":"1153291573","predicate":"updateChannelReadMessagesContents","params":[{"name":"channel_id","type":"long"},{"name":"messages","type":"Vector<int>"}],"type":"Update"},{"id":"-1040652646","predicate":"inputMessagesFilterMyMentions","params":[],"type":"MessagesFilter"},{"id":"1887741886","predicate":"updateContactsReset","params":[],"type":"Update"},{"id":"-1312568665","predicate":"channelAdminLogEventActionChangeStickerSet","params":[{"name":"prev_stickerset","type":"InputStickerSet"},{"name":"new_stickerset","type":"InputStickerSet"}],"type":"ChannelAdminLogEventAction"},{"id":"-85549226","predicate":"messageActionCustomAction","params":[{"name":"message","type":"string"}],"type":"MessageAction"},{"id":"178373535","predicate":"inputPaymentCredentialsApplePay","params":[{"name":"payment_data","type":"DataJSON"}],"type":"InputPaymentCredentials"},{"id":"-419271411","predicate":"inputMessagesFilterGeo","params":[],"type":"MessagesFilter"},{"id":"-530392189","predicate":"inputMessagesFilterContacts","params":[],"type":"MessagesFilter"},{"id":"-1304443240","predicate":"updateChannelAvailableMessages","params":[{"name":"channel_id","type":"long"},{"name":"available_min_id","type":"int"}],"type":"Update"},{"id":"1599903217","predicate":"channelAdminLogEventActionTogglePreHistoryHidden","params":[{"name":"new_value","type":"Bool"}],"type":"ChannelAdminLogEventAction"},{"id":"-1759532989","predicate":"inputMediaGeoLive","params":[{"name":"flags","type":"#"},{"name":"stopped","type":"flags.0?true"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"heading","type":"flags.2?int"},{"name":"period","type":"flags.1?int"},{"name":"proximity_notification_radius","type":"flags.3?int"}],"type":"InputMedia"},{"id":"-1186937242","predicate":"messageMediaGeoLive","params":[{"name":"flags","type":"#"},{"name":"geo","type":"GeoPoint"},{"name":"heading","type":"flags.0?int"},{"name":"period","type":"int"},{"name":"proximity_notification_radius","type":"flags.1?int"}],"type":"MessageMedia"},{"id":"1189204285","predicate":"recentMeUrlUnknown","params":[{"name":"url","type":"string"}],"type":"RecentMeUrl"},{"id":"-1188296222","predicate":"recentMeUrlUser","params":[{"name":"url","type":"string"},{"name":"user_id","type":"long"}],"type":"RecentMeUrl"},{"id":"-1294306862","predicate":"recentMeUrlChat","params":[{"name":"url","type":"string"},{"name":"chat_id","type":"long"}],"type":"RecentMeUrl"},{"id":"-347535331","predicate":"recentMeUrlChatInvite","params":[{"name":"url","type":"string"},{"name":"chat_invite","type":"ChatInvite"}],"type":"RecentMeUrl"},{"id":"-1140172836","predicate":"recentMeUrlStickerSet","params":[{"name":"url","type":"string"},{"name":"set","type":"StickerSetCovered"}],"type":"RecentMeUrl"},{"id":"235081943","predicate":"help.recentMeUrls","params":[{"name":"urls","type":"Vector<RecentMeUrl>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"help.RecentMeUrls"},{"id":"-266911767","predicate":"channels.channelParticipantsNotModified","params":[],"type":"channels.ChannelParticipants"},{"id":"1951620897","predicate":"messages.messagesNotModified","params":[{"name":"count","type":"int"}],"type":"messages.Messages"},{"id":"482797855","predicate":"inputSingleMedia","params":[{"name":"flags","type":"#"},{"name":"media","type":"InputMedia"},{"name":"random_id","type":"long"},{"name":"message","type":"string"},{"name":"entities","type":"flags.0?Vector<MessageEntity>"}],"type":"InputSingleMedia"},{"id":"-1493633966","predicate":"webAuthorization","params":[{"name":"hash","type":"long"},{"name":"bot_id","type":"long"},{"name":"domain","type":"string"},{"name":"browser","type":"string"},{"name":"platform","type":"string"},{"name":"date_created","type":"int"},{"name":"date_active","type":"int"},{"name":"ip","type":"string"},{"name":"region","type":"string"}],"type":"WebAuthorization"},{"id":"-313079300","predicate":"account.webAuthorizations","params":[{"name":"authorizations","type":"Vector<WebAuthorization>"},{"name":"users","type":"Vector<User>"}],"type":"account.WebAuthorizations"},{"id":"-1502174430","predicate":"inputMessageID","params":[{"name":"id","type":"int"}],"type":"InputMessage"},{"id":"-1160215659","predicate":"inputMessageReplyTo","params":[{"name":"id","type":"int"}],"type":"InputMessage"},{"id":"-2037963464","predicate":"inputMessagePinned","params":[],"type":"InputMessage"},{"id":"-1687559349","predicate":"messageEntityPhone","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1280209983","predicate":"messageEntityCashtag","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-1410748418","predicate":"messageActionBotAllowed","params":[{"name":"domain","type":"string"}],"type":"MessageAction"},{"id":"-55902537","predicate":"inputDialogPeer","params":[{"name":"peer","type":"InputPeer"}],"type":"InputDialogPeer"},{"id":"-445792507","predicate":"dialogPeer","params":[{"name":"peer","type":"Peer"}],"type":"DialogPeer"},{"id":"223655517","predicate":"messages.foundStickerSetsNotModified","params":[],"type":"messages.FoundStickerSets"},{"id":"-1963942446","predicate":"messages.foundStickerSets","params":[{"name":"hash","type":"long"},{"name":"sets","type":"Vector<StickerSetCovered>"}],"type":"messages.FoundStickerSets"},{"id":"1648543603","predicate":"fileHash","params":[{"name":"offset","type":"int"},{"name":"limit","type":"int"},{"name":"hash","type":"bytes"}],"type":"FileHash"},{"id":"-104284986","predicate":"webDocumentNoProxy","params":[{"name":"url","type":"string"},{"name":"size","type":"int"},{"name":"mime_type","type":"string"},{"name":"attributes","type":"Vector<DocumentAttribute>"}],"type":"WebDocument"},{"id":"1968737087","predicate":"inputClientProxy","params":[{"name":"address","type":"string"},{"name":"port","type":"int"}],"type":"InputClientProxy"},{"id":"-483352705","predicate":"help.termsOfServiceUpdateEmpty","params":[{"name":"expires","type":"int"}],"type":"help.TermsOfServiceUpdate"},{"id":"686618977","predicate":"help.termsOfServiceUpdate","params":[{"name":"expires","type":"int"},{"name":"terms_of_service","type":"help.TermsOfService"}],"type":"help.TermsOfServiceUpdate"},{"id":"859091184","predicate":"inputSecureFileUploaded","params":[{"name":"id","type":"long"},{"name":"parts","type":"int"},{"name":"md5_checksum","type":"string"},{"name":"file_hash","type":"bytes"},{"name":"secret","type":"bytes"}],"type":"InputSecureFile"},{"id":"1399317950","predicate":"inputSecureFile","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputSecureFile"},{"id":"-876089816","predicate":"inputSecureFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputFileLocation"},{"id":"1679398724","predicate":"secureFileEmpty","params":[],"type":"SecureFile"},{"id":"-534283678","predicate":"secureFile","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"size","type":"int"},{"name":"dc_id","type":"int"},{"name":"date","type":"int"},{"name":"file_hash","type":"bytes"},{"name":"secret","type":"bytes"}],"type":"SecureFile"},{"id":"-1964327229","predicate":"secureData","params":[{"name":"data","type":"bytes"},{"name":"data_hash","type":"bytes"},{"name":"secret","type":"bytes"}],"type":"SecureData"},{"id":"2103482845","predicate":"securePlainPhone","params":[{"name":"phone","type":"string"}],"type":"SecurePlainData"},{"id":"569137759","predicate":"securePlainEmail","params":[{"name":"email","type":"string"}],"type":"SecurePlainData"},{"id":"-1658158621","predicate":"secureValueTypePersonalDetails","params":[],"type":"SecureValueType"},{"id":"1034709504","predicate":"secureValueTypePassport","params":[],"type":"SecureValueType"},{"id":"115615172","predicate":"secureValueTypeDriverLicense","params":[],"type":"SecureValueType"},{"id":"-1596951477","predicate":"secureValueTypeIdentityCard","params":[],"type":"SecureValueType"},{"id":"-1717268701","predicate":"secureValueTypeInternalPassport","params":[],"type":"SecureValueType"},{"id":"-874308058","predicate":"secureValueTypeAddress","params":[],"type":"SecureValueType"},{"id":"-63531698","predicate":"secureValueTypeUtilityBill","params":[],"type":"SecureValueType"},{"id":"-1995211763","predicate":"secureValueTypeBankStatement","params":[],"type":"SecureValueType"},{"id":"-1954007928","predicate":"secureValueTypeRentalAgreement","params":[],"type":"SecureValueType"},{"id":"-1713143702","predicate":"secureValueTypePassportRegistration","params":[],"type":"SecureValueType"},{"id":"-368907213","predicate":"secureValueTypeTemporaryRegistration","params":[],"type":"SecureValueType"},{"id":"-1289704741","predicate":"secureValueTypePhone","params":[],"type":"SecureValueType"},{"id":"-1908627474","predicate":"secureValueTypeEmail","params":[],"type":"SecureValueType"},{"id":"411017418","predicate":"secureValue","params":[{"name":"flags","type":"#"},{"name":"type","type":"SecureValueType"},{"name":"data","type":"flags.0?SecureData"},{"name":"front_side","type":"flags.1?SecureFile"},{"name":"reverse_side","type":"flags.2?SecureFile"},{"name":"selfie","type":"flags.3?SecureFile"},{"name":"translation","type":"flags.6?Vector<SecureFile>"},{"name":"files","type":"flags.4?Vector<SecureFile>"},{"name":"plain_data","type":"flags.5?SecurePlainData"},{"name":"hash","type":"bytes"}],"type":"SecureValue"},{"id":"-618540889","predicate":"inputSecureValue","params":[{"name":"flags","type":"#"},{"name":"type","type":"SecureValueType"},{"name":"data","type":"flags.0?SecureData"},{"name":"front_side","type":"flags.1?InputSecureFile"},{"name":"reverse_side","type":"flags.2?InputSecureFile"},{"name":"selfie","type":"flags.3?InputSecureFile"},{"name":"translation","type":"flags.6?Vector<InputSecureFile>"},{"name":"files","type":"flags.4?Vector<InputSecureFile>"},{"name":"plain_data","type":"flags.5?SecurePlainData"}],"type":"InputSecureValue"},{"id":"-316748368","predicate":"secureValueHash","params":[{"name":"type","type":"SecureValueType"},{"name":"hash","type":"bytes"}],"type":"SecureValueHash"},{"id":"-391902247","predicate":"secureValueErrorData","params":[{"name":"type","type":"SecureValueType"},{"name":"data_hash","type":"bytes"},{"name":"field","type":"string"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"12467706","predicate":"secureValueErrorFrontSide","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"-2037765467","predicate":"secureValueErrorReverseSide","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"-449327402","predicate":"secureValueErrorSelfie","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"2054162547","predicate":"secureValueErrorFile","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"1717706985","predicate":"secureValueErrorFiles","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"Vector<bytes>"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"871426631","predicate":"secureCredentialsEncrypted","params":[{"name":"data","type":"bytes"},{"name":"hash","type":"bytes"},{"name":"secret","type":"bytes"}],"type":"SecureCredentialsEncrypted"},{"id":"-1389486888","predicate":"account.authorizationForm","params":[{"name":"flags","type":"#"},{"name":"required_types","type":"Vector<SecureRequiredType>"},{"name":"values","type":"Vector<SecureValue>"},{"name":"errors","type":"Vector<SecureValueError>"},{"name":"users","type":"Vector<User>"},{"name":"privacy_policy_url","type":"flags.0?string"}],"type":"account.AuthorizationForm"},{"id":"-2128640689","predicate":"account.sentEmailCode","params":[{"name":"email_pattern","type":"string"},{"name":"length","type":"int"}],"type":"account.SentEmailCode"},{"id":"455635795","predicate":"messageActionSecureValuesSentMe","params":[{"name":"values","type":"Vector<SecureValue>"},{"name":"credentials","type":"SecureCredentialsEncrypted"}],"type":"MessageAction"},{"id":"-648257196","predicate":"messageActionSecureValuesSent","params":[{"name":"types","type":"Vector<SecureValueType>"}],"type":"MessageAction"},{"id":"1722786150","predicate":"help.deepLinkInfoEmpty","params":[],"type":"help.DeepLinkInfo"},{"id":"1783556146","predicate":"help.deepLinkInfo","params":[{"name":"flags","type":"#"},{"name":"update_app","type":"flags.0?true"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"}],"type":"help.DeepLinkInfo"},{"id":"289586518","predicate":"savedPhoneContact","params":[{"name":"phone","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"date","type":"int"}],"type":"SavedContact"},{"id":"1304052993","predicate":"account.takeout","params":[{"name":"id","type":"long"}],"type":"account.Takeout"},{"id":"700340377","predicate":"inputTakeoutFileLocation","params":[],"type":"InputFileLocation"},{"id":"-513517117","predicate":"updateDialogUnreadMark","params":[{"name":"flags","type":"#"},{"name":"unread","type":"flags.0?true"},{"name":"peer","type":"DialogPeer"}],"type":"Update"},{"id":"-253500010","predicate":"messages.dialogsNotModified","params":[{"name":"count","type":"int"}],"type":"messages.Dialogs"},{"id":"-1625153079","predicate":"inputWebFileGeoPointLocation","params":[{"name":"geo_point","type":"InputGeoPoint"},{"name":"access_hash","type":"long"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"zoom","type":"int"},{"name":"scale","type":"int"}],"type":"InputWebFileLocation"},{"id":"-1255369827","predicate":"contacts.topPeersDisabled","params":[],"type":"contacts.TopPeers"},{"id":"-1685456582","predicate":"inputReportReasonCopyright","params":[],"type":"ReportReason"},{"id":"-732254058","predicate":"passwordKdfAlgoUnknown","params":[],"type":"PasswordKdfAlgo"},{"id":"4883767","predicate":"securePasswordKdfAlgoUnknown","params":[],"type":"SecurePasswordKdfAlgo"},{"id":"-1141711456","predicate":"securePasswordKdfAlgoPBKDF2HMACSHA512iter100000","params":[{"name":"salt","type":"bytes"}],"type":"SecurePasswordKdfAlgo"},{"id":"-2042159726","predicate":"securePasswordKdfAlgoSHA512","params":[{"name":"salt","type":"bytes"}],"type":"SecurePasswordKdfAlgo"},{"id":"354925740","predicate":"secureSecretSettings","params":[{"name":"secure_algo","type":"SecurePasswordKdfAlgo"},{"name":"secure_secret","type":"bytes"},{"name":"secure_secret_id","type":"long"}],"type":"SecureSecretSettings"},{"id":"982592842","predicate":"passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow","params":[{"name":"salt1","type":"bytes"},{"name":"salt2","type":"bytes"},{"name":"g","type":"int"},{"name":"p","type":"bytes"}],"type":"PasswordKdfAlgo"},{"id":"-1736378792","predicate":"inputCheckPasswordEmpty","params":[],"type":"InputCheckPasswordSRP"},{"id":"-763367294","predicate":"inputCheckPasswordSRP","params":[{"name":"srp_id","type":"long"},{"name":"A","type":"bytes"},{"name":"M1","type":"bytes"}],"type":"InputCheckPasswordSRP"},{"id":"-2036501105","predicate":"secureValueError","params":[{"name":"type","type":"SecureValueType"},{"name":"hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"-1592506512","predicate":"secureValueErrorTranslationFile","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"bytes"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"878931416","predicate":"secureValueErrorTranslationFiles","params":[{"name":"type","type":"SecureValueType"},{"name":"file_hash","type":"Vector<bytes>"},{"name":"text","type":"string"}],"type":"SecureValueError"},{"id":"-2103600678","predicate":"secureRequiredType","params":[{"name":"flags","type":"#"},{"name":"native_names","type":"flags.0?true"},{"name":"selfie_required","type":"flags.1?true"},{"name":"translation_required","type":"flags.2?true"},{"name":"type","type":"SecureValueType"}],"type":"SecureRequiredType"},{"id":"41187252","predicate":"secureRequiredTypeOneOf","params":[{"name":"types","type":"Vector<SecureRequiredType>"}],"type":"SecureRequiredType"},{"id":"-1078332329","predicate":"help.passportConfigNotModified","params":[],"type":"help.PassportConfig"},{"id":"-1600596305","predicate":"help.passportConfig","params":[{"name":"hash","type":"int"},{"name":"countries_langs","type":"DataJSON"}],"type":"help.PassportConfig"},{"id":"488313413","predicate":"inputAppEvent","params":[{"name":"time","type":"double"},{"name":"type","type":"string"},{"name":"peer","type":"long"},{"name":"data","type":"JSONValue"}],"type":"InputAppEvent"},{"id":"-1059185703","predicate":"jsonObjectValue","params":[{"name":"key","type":"string"},{"name":"value","type":"JSONValue"}],"type":"JSONObjectValue"},{"id":"1064139624","predicate":"jsonNull","params":[],"type":"JSONValue"},{"id":"-952869270","predicate":"jsonBool","params":[{"name":"value","type":"Bool"}],"type":"JSONValue"},{"id":"736157604","predicate":"jsonNumber","params":[{"name":"value","type":"double"}],"type":"JSONValue"},{"id":"-1222740358","predicate":"jsonString","params":[{"name":"value","type":"string"}],"type":"JSONValue"},{"id":"-146520221","predicate":"jsonArray","params":[{"name":"value","type":"Vector<JSONValue>"}],"type":"JSONValue"},{"id":"-1715350371","predicate":"jsonObject","params":[{"name":"value","type":"Vector<JSONObjectValue>"}],"type":"JSONValue"},{"id":"-1311015810","predicate":"inputNotifyBroadcasts","params":[],"type":"InputNotifyPeer"},{"id":"-703403793","predicate":"notifyBroadcasts","params":[],"type":"NotifyPeer"},{"id":"-311786236","predicate":"textSubscript","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"-939827711","predicate":"textSuperscript","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"55281185","predicate":"textMarked","params":[{"name":"text","type":"RichText"}],"type":"RichText"},{"id":"483104362","predicate":"textPhone","params":[{"name":"text","type":"RichText"},{"name":"phone","type":"string"}],"type":"RichText"},{"id":"136105807","predicate":"textImage","params":[{"name":"document_id","type":"long"},{"name":"w","type":"int"},{"name":"h","type":"int"}],"type":"RichText"},{"id":"504660880","predicate":"pageBlockKicker","params":[{"name":"text","type":"RichText"}],"type":"PageBlock"},{"id":"878078826","predicate":"pageTableCell","params":[{"name":"flags","type":"#"},{"name":"header","type":"flags.0?true"},{"name":"align_center","type":"flags.3?true"},{"name":"align_right","type":"flags.4?true"},{"name":"valign_middle","type":"flags.5?true"},{"name":"valign_bottom","type":"flags.6?true"},{"name":"text","type":"flags.7?RichText"},{"name":"colspan","type":"flags.1?int"},{"name":"rowspan","type":"flags.2?int"}],"type":"PageTableCell"},{"id":"-524237339","predicate":"pageTableRow","params":[{"name":"cells","type":"Vector<PageTableCell>"}],"type":"PageTableRow"},{"id":"-1085412734","predicate":"pageBlockTable","params":[{"name":"flags","type":"#"},{"name":"bordered","type":"flags.0?true"},{"name":"striped","type":"flags.1?true"},{"name":"title","type":"RichText"},{"name":"rows","type":"Vector<PageTableRow>"}],"type":"PageBlock"},{"id":"1869903447","predicate":"pageCaption","params":[{"name":"text","type":"RichText"},{"name":"credit","type":"RichText"}],"type":"PageCaption"},{"id":"-1188055347","predicate":"pageListItemText","params":[{"name":"text","type":"RichText"}],"type":"PageListItem"},{"id":"635466748","predicate":"pageListItemBlocks","params":[{"name":"blocks","type":"Vector<PageBlock>"}],"type":"PageListItem"},{"id":"1577484359","predicate":"pageListOrderedItemText","params":[{"name":"num","type":"string"},{"name":"text","type":"RichText"}],"type":"PageListOrderedItem"},{"id":"-1730311882","predicate":"pageListOrderedItemBlocks","params":[{"name":"num","type":"string"},{"name":"blocks","type":"Vector<PageBlock>"}],"type":"PageListOrderedItem"},{"id":"-1702174239","predicate":"pageBlockOrderedList","params":[{"name":"items","type":"Vector<PageListOrderedItem>"}],"type":"PageBlock"},{"id":"1987480557","predicate":"pageBlockDetails","params":[{"name":"flags","type":"#"},{"name":"open","type":"flags.0?true"},{"name":"blocks","type":"Vector<PageBlock>"},{"name":"title","type":"RichText"}],"type":"PageBlock"},{"id":"-1282352120","predicate":"pageRelatedArticle","params":[{"name":"flags","type":"#"},{"name":"url","type":"string"},{"name":"webpage_id","type":"long"},{"name":"title","type":"flags.0?string"},{"name":"description","type":"flags.1?string"},{"name":"photo_id","type":"flags.2?long"},{"name":"author","type":"flags.3?string"},{"name":"published_date","type":"flags.4?int"}],"type":"PageRelatedArticle"},{"id":"370236054","predicate":"pageBlockRelatedArticles","params":[{"name":"title","type":"RichText"},{"name":"articles","type":"Vector<PageRelatedArticle>"}],"type":"PageBlock"},{"id":"-1538310410","predicate":"pageBlockMap","params":[{"name":"geo","type":"GeoPoint"},{"name":"zoom","type":"int"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"caption","type":"PageCaption"}],"type":"PageBlock"},{"id":"-1738178803","predicate":"page","params":[{"name":"flags","type":"#"},{"name":"part","type":"flags.0?true"},{"name":"rtl","type":"flags.1?true"},{"name":"v2","type":"flags.2?true"},{"name":"url","type":"string"},{"name":"blocks","type":"Vector<PageBlock>"},{"name":"photos","type":"Vector<Photo>"},{"name":"documents","type":"Vector<Document>"},{"name":"views","type":"flags.3?int"}],"type":"Page"},{"id":"-610373422","predicate":"inputPrivacyKeyPhoneP2P","params":[],"type":"InputPrivacyKey"},{"id":"961092808","predicate":"privacyKeyPhoneP2P","params":[],"type":"PrivacyKey"},{"id":"894777186","predicate":"textAnchor","params":[{"name":"text","type":"RichText"},{"name":"name","type":"string"}],"type":"RichText"},{"id":"-1945767479","predicate":"help.supportName","params":[{"name":"name","type":"string"}],"type":"help.SupportName"},{"id":"-206688531","predicate":"help.userInfoEmpty","params":[],"type":"help.UserInfo"},{"id":"32192344","predicate":"help.userInfo","params":[{"name":"message","type":"string"},{"name":"entities","type":"Vector<MessageEntity>"},{"name":"author","type":"string"},{"name":"date","type":"int"}],"type":"help.UserInfo"},{"id":"-202219658","predicate":"messageActionContactSignUp","params":[],"type":"MessageAction"},{"id":"-1398708869","predicate":"updateMessagePoll","params":[{"name":"flags","type":"#"},{"name":"poll_id","type":"long"},{"name":"poll","type":"flags.0?Poll"},{"name":"results","type":"PollResults"}],"type":"Update"},{"id":"1823064809","predicate":"pollAnswer","params":[{"name":"text","type":"string"},{"name":"option","type":"bytes"}],"type":"PollAnswer"},{"id":"-2032041631","predicate":"poll","params":[{"name":"id","type":"long"},{"name":"flags","type":"#"},{"name":"closed","type":"flags.0?true"},{"name":"public_voters","type":"flags.1?true"},{"name":"multiple_choice","type":"flags.2?true"},{"name":"quiz","type":"flags.3?true"},{"name":"question","type":"string"},{"name":"answers","type":"Vector<PollAnswer>"},{"name":"close_period","type":"flags.4?int"},{"name":"close_date","type":"flags.5?int"}],"type":"Poll"},{"id":"997055186","predicate":"pollAnswerVoters","params":[{"name":"flags","type":"#"},{"name":"chosen","type":"flags.0?true"},{"name":"correct","type":"flags.1?true"},{"name":"option","type":"bytes"},{"name":"voters","type":"int"}],"type":"PollAnswerVoters"},{"id":"-591909213","predicate":"pollResults","params":[{"name":"flags","type":"#"},{"name":"min","type":"flags.0?true"},{"name":"results","type":"flags.1?Vector<PollAnswerVoters>"},{"name":"total_voters","type":"flags.2?int"},{"name":"recent_voters","type":"flags.3?Vector<long>"},{"name":"solution","type":"flags.4?string"},{"name":"solution_entities","type":"flags.4?Vector<MessageEntity>"}],"type":"PollResults"},{"id":"261416433","predicate":"inputMediaPoll","params":[{"name":"flags","type":"#"},{"name":"poll","type":"Poll"},{"name":"correct_answers","type":"flags.0?Vector<bytes>"},{"name":"solution","type":"flags.1?string"},{"name":"solution_entities","type":"flags.1?Vector<MessageEntity>"}],"type":"InputMedia"},{"id":"1272375192","predicate":"messageMediaPoll","params":[{"name":"poll","type":"Poll"},{"name":"results","type":"PollResults"}],"type":"MessageMedia"},{"id":"-264117680","predicate":"chatOnlines","params":[{"name":"onlines","type":"int"}],"type":"ChatOnlines"},{"id":"1202287072","predicate":"statsURL","params":[{"name":"url","type":"string"}],"type":"StatsURL"},{"id":"-525288402","predicate":"photoStrippedSize","params":[{"name":"type","type":"string"},{"name":"bytes","type":"bytes"}],"type":"PhotoSize"},{"id":"1605510357","predicate":"chatAdminRights","params":[{"name":"flags","type":"#"},{"name":"change_info","type":"flags.0?true"},{"name":"post_messages","type":"flags.1?true"},{"name":"edit_messages","type":"flags.2?true"},{"name":"delete_messages","type":"flags.3?true"},{"name":"ban_users","type":"flags.4?true"},{"name":"invite_users","type":"flags.5?true"},{"name":"pin_messages","type":"flags.7?true"},{"name":"add_admins","type":"flags.9?true"},{"name":"anonymous","type":"flags.10?true"},{"name":"manage_call","type":"flags.11?true"},{"name":"other","type":"flags.12?true"}],"type":"ChatAdminRights"},{"id":"-1626209256","predicate":"chatBannedRights","params":[{"name":"flags","type":"#"},{"name":"view_messages","type":"flags.0?true"},{"name":"send_messages","type":"flags.1?true"},{"name":"send_media","type":"flags.2?true"},{"name":"send_stickers","type":"flags.3?true"},{"name":"send_gifs","type":"flags.4?true"},{"name":"send_games","type":"flags.5?true"},{"name":"send_inline","type":"flags.6?true"},{"name":"embed_links","type":"flags.7?true"},{"name":"send_polls","type":"flags.8?true"},{"name":"change_info","type":"flags.10?true"},{"name":"invite_users","type":"flags.15?true"},{"name":"pin_messages","type":"flags.17?true"},{"name":"until_date","type":"int"}],"type":"ChatBannedRights"},{"id":"1421875280","predicate":"updateChatDefaultBannedRights","params":[{"name":"peer","type":"Peer"},{"name":"default_banned_rights","type":"ChatBannedRights"},{"name":"version","type":"int"}],"type":"Update"},{"id":"-433014407","predicate":"inputWallPaper","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputWallPaper"},{"id":"1913199744","predicate":"inputWallPaperSlug","params":[{"name":"slug","type":"string"}],"type":"InputWallPaper"},{"id":"-1150621555","predicate":"channelParticipantsContacts","params":[{"name":"q","type":"string"}],"type":"ChannelParticipantsFilter"},{"id":"771095562","predicate":"channelAdminLogEventActionDefaultBannedRights","params":[{"name":"prev_banned_rights","type":"ChatBannedRights"},{"name":"new_banned_rights","type":"ChatBannedRights"}],"type":"ChannelAdminLogEventAction"},{"id":"-1895328189","predicate":"channelAdminLogEventActionStopPoll","params":[{"name":"message","type":"Message"}],"type":"ChannelAdminLogEventAction"},{"id":"471437699","predicate":"account.wallPapersNotModified","params":[],"type":"account.WallPapers"},{"id":"-842824308","predicate":"account.wallPapers","params":[{"name":"hash","type":"long"},{"name":"wallpapers","type":"Vector<WallPaper>"}],"type":"account.WallPapers"},{"id":"-557924733","predicate":"codeSettings","params":[{"name":"flags","type":"#"},{"name":"allow_flashcall","type":"flags.0?true"},{"name":"current_number","type":"flags.1?true"},{"name":"allow_app_hash","type":"flags.4?true"}],"type":"CodeSettings"},{"id":"499236004","predicate":"wallPaperSettings","params":[{"name":"flags","type":"#"},{"name":"blur","type":"flags.1?true"},{"name":"motion","type":"flags.2?true"},{"name":"background_color","type":"flags.0?int"},{"name":"second_background_color","type":"flags.4?int"},{"name":"third_background_color","type":"flags.5?int"},{"name":"fourth_background_color","type":"flags.6?int"},{"name":"intensity","type":"flags.3?int"},{"name":"rotation","type":"flags.4?int"}],"type":"WallPaperSettings"},{"id":"-532532493","predicate":"autoDownloadSettings","params":[{"name":"flags","type":"#"},{"name":"disabled","type":"flags.0?true"},{"name":"video_preload_large","type":"flags.1?true"},{"name":"audio_preload_next","type":"flags.2?true"},{"name":"phonecalls_less_data","type":"flags.3?true"},{"name":"photo_size_max","type":"int"},{"name":"video_size_max","type":"int"},{"name":"file_size_max","type":"int"},{"name":"video_upload_maxbitrate","type":"int"}],"type":"AutoDownloadSettings"},{"id":"1674235686","predicate":"account.autoDownloadSettings","params":[{"name":"low","type":"AutoDownloadSettings"},{"name":"medium","type":"AutoDownloadSettings"},{"name":"high","type":"AutoDownloadSettings"}],"type":"account.AutoDownloadSettings"},{"id":"-709641735","predicate":"emojiKeyword","params":[{"name":"keyword","type":"string"},{"name":"emoticons","type":"Vector<string>"}],"type":"EmojiKeyword"},{"id":"594408994","predicate":"emojiKeywordDeleted","params":[{"name":"keyword","type":"string"},{"name":"emoticons","type":"Vector<string>"}],"type":"EmojiKeyword"},{"id":"1556570557","predicate":"emojiKeywordsDifference","params":[{"name":"lang_code","type":"string"},{"name":"from_version","type":"int"},{"name":"version","type":"int"},{"name":"keywords","type":"Vector<EmojiKeyword>"}],"type":"EmojiKeywordsDifference"},{"id":"-1519029347","predicate":"emojiURL","params":[{"name":"url","type":"string"}],"type":"EmojiURL"},{"id":"-1275374751","predicate":"emojiLanguage","params":[{"name":"lang_code","type":"string"}],"type":"EmojiLanguage"},{"id":"-1529000952","predicate":"inputPrivacyKeyForwards","params":[],"type":"InputPrivacyKey"},{"id":"1777096355","predicate":"privacyKeyForwards","params":[],"type":"PrivacyKey"},{"id":"1461304012","predicate":"inputPrivacyKeyProfilePhoto","params":[],"type":"InputPrivacyKey"},{"id":"-1777000467","predicate":"privacyKeyProfilePhoto","params":[],"type":"PrivacyKey"},{"id":"1075322878","predicate":"inputPhotoFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"thumb_size","type":"string"}],"type":"InputFileLocation"},{"id":"-667654413","predicate":"inputPhotoLegacyFileLocation","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"file_reference","type":"bytes"},{"name":"volume_id","type":"long"},{"name":"local_id","type":"int"},{"name":"secret","type":"long"}],"type":"InputFileLocation"},{"id":"925204121","predicate":"inputPeerPhotoFileLocation","params":[{"name":"flags","type":"#"},{"name":"big","type":"flags.0?true"},{"name":"peer","type":"InputPeer"},{"name":"photo_id","type":"long"}],"type":"InputFileLocation"},{"id":"-1652231205","predicate":"inputStickerSetThumb","params":[{"name":"stickerset","type":"InputStickerSet"},{"name":"thumb_version","type":"int"}],"type":"InputFileLocation"},{"id":"-11252123","predicate":"folder","params":[{"name":"flags","type":"#"},{"name":"autofill_new_broadcasts","type":"flags.0?true"},{"name":"autofill_public_groups","type":"flags.1?true"},{"name":"autofill_new_correspondents","type":"flags.2?true"},{"name":"id","type":"int"},{"name":"title","type":"string"},{"name":"photo","type":"flags.3?ChatPhoto"}],"type":"Folder"},{"id":"1908216652","predicate":"dialogFolder","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.2?true"},{"name":"folder","type":"Folder"},{"name":"peer","type":"Peer"},{"name":"top_message","type":"int"},{"name":"unread_muted_peers_count","type":"int"},{"name":"unread_unmuted_peers_count","type":"int"},{"name":"unread_muted_messages_count","type":"int"},{"name":"unread_unmuted_messages_count","type":"int"}],"type":"Dialog"},{"id":"1684014375","predicate":"inputDialogPeerFolder","params":[{"name":"folder_id","type":"int"}],"type":"InputDialogPeer"},{"id":"1363483106","predicate":"dialogPeerFolder","params":[{"name":"folder_id","type":"int"}],"type":"DialogPeer"},{"id":"-70073706","predicate":"inputFolderPeer","params":[{"name":"peer","type":"InputPeer"},{"name":"folder_id","type":"int"}],"type":"InputFolderPeer"},{"id":"-373643672","predicate":"folderPeer","params":[{"name":"peer","type":"Peer"},{"name":"folder_id","type":"int"}],"type":"FolderPeer"},{"id":"422972864","predicate":"updateFolderPeers","params":[{"name":"folder_peers","type":"Vector<FolderPeer>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"497305826","predicate":"inputUserFromMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"user_id","type":"long"}],"type":"InputUser"},{"id":"1536380829","predicate":"inputChannelFromMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"channel_id","type":"long"}],"type":"InputChannel"},{"id":"-1468331492","predicate":"inputPeerUserFromMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"user_id","type":"long"}],"type":"InputPeer"},{"id":"-1121318848","predicate":"inputPeerChannelFromMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"channel_id","type":"long"}],"type":"InputPeer"},{"id":"55761658","predicate":"inputPrivacyKeyPhoneNumber","params":[],"type":"InputPrivacyKey"},{"id":"-778378131","predicate":"privacyKeyPhoneNumber","params":[],"type":"PrivacyKey"},{"id":"-1472172887","predicate":"topPeerCategoryForwardUsers","params":[],"type":"TopPeerCategory"},{"id":"-68239120","predicate":"topPeerCategoryForwardChats","params":[],"type":"TopPeerCategory"},{"id":"84703944","predicate":"channelAdminLogEventActionChangeLinkedChat","params":[{"name":"prev_value","type":"long"},{"name":"new_value","type":"long"}],"type":"ChannelAdminLogEventAction"},{"id":"-398136321","predicate":"messages.searchCounter","params":[{"name":"flags","type":"#"},{"name":"inexact","type":"flags.1?true"},{"name":"filter","type":"MessagesFilter"},{"name":"count","type":"int"}],"type":"messages.SearchCounter"},{"id":"280464681","predicate":"keyboardButtonUrlAuth","params":[{"name":"flags","type":"#"},{"name":"text","type":"string"},{"name":"fwd_text","type":"flags.0?string"},{"name":"url","type":"string"},{"name":"button_id","type":"int"}],"type":"KeyboardButton"},{"id":"-802258988","predicate":"inputKeyboardButtonUrlAuth","params":[{"name":"flags","type":"#"},{"name":"request_write_access","type":"flags.0?true"},{"name":"text","type":"string"},{"name":"fwd_text","type":"flags.1?string"},{"name":"url","type":"string"},{"name":"bot","type":"InputUser"}],"type":"KeyboardButton"},{"id":"-1831650802","predicate":"urlAuthResultRequest","params":[{"name":"flags","type":"#"},{"name":"request_write_access","type":"flags.0?true"},{"name":"bot","type":"User"},{"name":"domain","type":"string"}],"type":"UrlAuthResult"},{"id":"-1886646706","predicate":"urlAuthResultAccepted","params":[{"name":"url","type":"string"}],"type":"UrlAuthResult"},{"id":"-1445536993","predicate":"urlAuthResultDefault","params":[],"type":"UrlAuthResult"},{"id":"-2079962673","predicate":"inputPrivacyValueAllowChatParticipants","params":[{"name":"chats","type":"Vector<long>"}],"type":"InputPrivacyRule"},{"id":"-380694650","predicate":"inputPrivacyValueDisallowChatParticipants","params":[{"name":"chats","type":"Vector<long>"}],"type":"InputPrivacyRule"},{"id":"1796427406","predicate":"privacyValueAllowChatParticipants","params":[{"name":"chats","type":"Vector<long>"}],"type":"PrivacyRule"},{"id":"1103656293","predicate":"privacyValueDisallowChatParticipants","params":[{"name":"chats","type":"Vector<long>"}],"type":"PrivacyRule"},{"id":"-1672577397","predicate":"messageEntityUnderline","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-1090087980","predicate":"messageEntityStrike","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"34469328","predicate":"messageEntityBlockquote","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"1786671974","predicate":"updatePeerSettings","params":[{"name":"peer","type":"Peer"},{"name":"settings","type":"PeerSettings"}],"type":"Update"},{"id":"-1078612597","predicate":"channelLocationEmpty","params":[],"type":"ChannelLocation"},{"id":"547062491","predicate":"channelLocation","params":[{"name":"geo_point","type":"GeoPoint"},{"name":"address","type":"string"}],"type":"ChannelLocation"},{"id":"-901375139","predicate":"peerLocated","params":[{"name":"peer","type":"Peer"},{"name":"expires","type":"int"},{"name":"distance","type":"int"}],"type":"PeerLocated"},{"id":"-1263546448","predicate":"updatePeerLocated","params":[{"name":"peers","type":"Vector<PeerLocated>"}],"type":"Update"},{"id":"241923758","predicate":"channelAdminLogEventActionChangeLocation","params":[{"name":"prev_value","type":"ChannelLocation"},{"name":"new_value","type":"ChannelLocation"}],"type":"ChannelAdminLogEventAction"},{"id":"-606798099","predicate":"inputReportReasonGeoIrrelevant","params":[],"type":"ReportReason"},{"id":"1401984889","predicate":"channelAdminLogEventActionToggleSlowMode","params":[{"name":"prev_value","type":"int"},{"name":"new_value","type":"int"}],"type":"ChannelAdminLogEventAction"},{"id":"1148485274","predicate":"auth.authorizationSignUpRequired","params":[{"name":"flags","type":"#"},{"name":"terms_of_service","type":"flags.0?help.TermsOfService"}],"type":"auth.Authorization"},{"id":"-666824391","predicate":"payments.paymentVerificationNeeded","params":[{"name":"url","type":"string"}],"type":"payments.PaymentResult"},{"id":"42402760","predicate":"inputStickerSetAnimatedEmoji","params":[],"type":"InputStickerSet"},{"id":"967122427","predicate":"updateNewScheduledMessage","params":[{"name":"message","type":"Message"}],"type":"Update"},{"id":"-1870238482","predicate":"updateDeleteScheduledMessages","params":[{"name":"peer","type":"Peer"},{"name":"messages","type":"Vector<int>"}],"type":"Update"},{"id":"-797791052","predicate":"restrictionReason","params":[{"name":"platform","type":"string"},{"name":"reason","type":"string"},{"name":"text","type":"string"}],"type":"RestrictionReason"},{"id":"1012306921","predicate":"inputTheme","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputTheme"},{"id":"-175567375","predicate":"inputThemeSlug","params":[{"name":"slug","type":"string"}],"type":"InputTheme"},{"id":"-402474788","predicate":"theme","params":[{"name":"flags","type":"#"},{"name":"creator","type":"flags.0?true"},{"name":"default","type":"flags.1?true"},{"name":"for_chat","type":"flags.5?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"slug","type":"string"},{"name":"title","type":"string"},{"name":"document","type":"flags.2?Document"},{"name":"settings","type":"flags.3?ThemeSettings"},{"name":"installs_count","type":"flags.4?int"}],"type":"Theme"},{"id":"-199313886","predicate":"account.themesNotModified","params":[],"type":"account.Themes"},{"id":"-1707242387","predicate":"account.themes","params":[{"name":"hash","type":"long"},{"name":"themes","type":"Vector<Theme>"}],"type":"account.Themes"},{"id":"-2112423005","predicate":"updateTheme","params":[{"name":"theme","type":"Theme"}],"type":"Update"},{"id":"-786326563","predicate":"inputPrivacyKeyAddedByPhone","params":[],"type":"InputPrivacyKey"},{"id":"1124062251","predicate":"privacyKeyAddedByPhone","params":[],"type":"PrivacyKey"},{"id":"-2027964103","predicate":"updateGeoLiveViewed","params":[{"name":"peer","type":"Peer"},{"name":"msg_id","type":"int"}],"type":"Update"},{"id":"1448076945","predicate":"updateLoginToken","params":[],"type":"Update"},{"id":"1654593920","predicate":"auth.loginToken","params":[{"name":"expires","type":"int"},{"name":"token","type":"bytes"}],"type":"auth.LoginToken"},{"id":"110008598","predicate":"auth.loginTokenMigrateTo","params":[{"name":"dc_id","type":"int"},{"name":"token","type":"bytes"}],"type":"auth.LoginToken"},{"id":"957176926","predicate":"auth.loginTokenSuccess","params":[{"name":"authorization","type":"auth.Authorization"}],"type":"auth.LoginToken"},{"id":"1474462241","predicate":"account.contentSettings","params":[{"name":"flags","type":"#"},{"name":"sensitive_enabled","type":"flags.0?true"},{"name":"sensitive_can_change","type":"flags.1?true"}],"type":"account.ContentSettings"},{"id":"-1456996667","predicate":"messages.inactiveChats","params":[{"name":"dates","type":"Vector<int>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.InactiveChats"},{"id":"-1012849566","predicate":"baseThemeClassic","params":[],"type":"BaseTheme"},{"id":"-69724536","predicate":"baseThemeDay","params":[],"type":"BaseTheme"},{"id":"-1212997976","predicate":"baseThemeNight","params":[],"type":"BaseTheme"},{"id":"1834973166","predicate":"baseThemeTinted","params":[],"type":"BaseTheme"},{"id":"1527845466","predicate":"baseThemeArctic","params":[],"type":"BaseTheme"},{"id":"-1770371538","predicate":"inputWallPaperNoFile","params":[{"name":"id","type":"long"}],"type":"InputWallPaper"},{"id":"-528465642","predicate":"wallPaperNoFile","params":[{"name":"id","type":"long"},{"name":"flags","type":"#"},{"name":"default","type":"flags.1?true"},{"name":"dark","type":"flags.4?true"},{"name":"settings","type":"flags.2?WallPaperSettings"}],"type":"WallPaper"},{"id":"-1881255857","predicate":"inputThemeSettings","params":[{"name":"flags","type":"#"},{"name":"message_colors_animated","type":"flags.2?true"},{"name":"base_theme","type":"BaseTheme"},{"name":"accent_color","type":"int"},{"name":"outbox_accent_color","type":"flags.3?int"},{"name":"message_colors","type":"flags.0?Vector<int>"},{"name":"wallpaper","type":"flags.1?InputWallPaper"},{"name":"wallpaper_settings","type":"flags.1?WallPaperSettings"}],"type":"InputThemeSettings"},{"id":"-94849324","predicate":"themeSettings","params":[{"name":"flags","type":"#"},{"name":"message_colors_animated","type":"flags.2?true"},{"name":"base_theme","type":"BaseTheme"},{"name":"accent_color","type":"int"},{"name":"outbox_accent_color","type":"flags.3?int"},{"name":"message_colors","type":"flags.0?Vector<int>"},{"name":"wallpaper","type":"flags.1?WallPaper"}],"type":"ThemeSettings"},{"id":"1421174295","predicate":"webPageAttributeTheme","params":[{"name":"flags","type":"#"},{"name":"documents","type":"flags.0?Vector<Document>"},{"name":"settings","type":"flags.1?ThemeSettings"}],"type":"WebPageAttribute"},{"id":"274961865","predicate":"updateMessagePollVote","params":[{"name":"poll_id","type":"long"},{"name":"user_id","type":"long"},{"name":"options","type":"Vector<bytes>"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"886196148","predicate":"messageUserVote","params":[{"name":"user_id","type":"long"},{"name":"option","type":"bytes"},{"name":"date","type":"int"}],"type":"MessageUserVote"},{"id":"1017491692","predicate":"messageUserVoteInputOption","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"}],"type":"MessageUserVote"},{"id":"-1973033641","predicate":"messageUserVoteMultiple","params":[{"name":"user_id","type":"long"},{"name":"options","type":"Vector<bytes>"},{"name":"date","type":"int"}],"type":"MessageUserVote"},{"id":"136574537","predicate":"messages.votesList","params":[{"name":"flags","type":"#"},{"name":"count","type":"int"},{"name":"votes","type":"Vector<MessageUserVote>"},{"name":"users","type":"Vector<User>"},{"name":"next_offset","type":"flags.0?string"}],"type":"messages.VotesList"},{"id":"-1144565411","predicate":"keyboardButtonRequestPoll","params":[{"name":"flags","type":"#"},{"name":"quiz","type":"flags.0?Bool"},{"name":"text","type":"string"}],"type":"KeyboardButton"},{"id":"1981704948","predicate":"messageEntityBankCard","params":[{"name":"offset","type":"int"},{"name":"length","type":"int"}],"type":"MessageEntity"},{"id":"-177732982","predicate":"bankCardOpenUrl","params":[{"name":"url","type":"string"},{"name":"name","type":"string"}],"type":"BankCardOpenUrl"},{"id":"1042605427","predicate":"payments.bankCardData","params":[{"name":"title","type":"string"},{"name":"open_urls","type":"Vector<BankCardOpenUrl>"}],"type":"payments.BankCardData"},{"id":"-118740917","predicate":"peerSelfLocated","params":[{"name":"expires","type":"int"}],"type":"PeerLocated"},{"id":"1949890536","predicate":"dialogFilter","params":[{"name":"flags","type":"#"},{"name":"contacts","type":"flags.0?true"},{"name":"non_contacts","type":"flags.1?true"},{"name":"groups","type":"flags.2?true"},{"name":"broadcasts","type":"flags.3?true"},{"name":"bots","type":"flags.4?true"},{"name":"exclude_muted","type":"flags.11?true"},{"name":"exclude_read","type":"flags.12?true"},{"name":"exclude_archived","type":"flags.13?true"},{"name":"id","type":"int"},{"name":"title","type":"string"},{"name":"emoticon","type":"flags.25?string"},{"name":"pinned_peers","type":"Vector<InputPeer>"},{"name":"include_peers","type":"Vector<InputPeer>"},{"name":"exclude_peers","type":"Vector<InputPeer>"}],"type":"DialogFilter"},{"id":"2004110666","predicate":"dialogFilterSuggested","params":[{"name":"filter","type":"DialogFilter"},{"name":"description","type":"string"}],"type":"DialogFilterSuggested"},{"id":"654302845","predicate":"updateDialogFilter","params":[{"name":"flags","type":"#"},{"name":"id","type":"int"},{"name":"filter","type":"flags.0?DialogFilter"}],"type":"Update"},{"id":"-1512627963","predicate":"updateDialogFilterOrder","params":[{"name":"order","type":"Vector<int>"}],"type":"Update"},{"id":"889491791","predicate":"updateDialogFilters","params":[],"type":"Update"},{"id":"-1237848657","predicate":"statsDateRangeDays","params":[{"name":"min_date","type":"int"},{"name":"max_date","type":"int"}],"type":"StatsDateRangeDays"},{"id":"-884757282","predicate":"statsAbsValueAndPrev","params":[{"name":"current","type":"double"},{"name":"previous","type":"double"}],"type":"StatsAbsValueAndPrev"},{"id":"-875679776","predicate":"statsPercentValue","params":[{"name":"part","type":"double"},{"name":"total","type":"double"}],"type":"StatsPercentValue"},{"id":"1244130093","predicate":"statsGraphAsync","params":[{"name":"token","type":"string"}],"type":"StatsGraph"},{"id":"-1092839390","predicate":"statsGraphError","params":[{"name":"error","type":"string"}],"type":"StatsGraph"},{"id":"-1901828938","predicate":"statsGraph","params":[{"name":"flags","type":"#"},{"name":"json","type":"DataJSON"},{"name":"zoom_token","type":"flags.0?string"}],"type":"StatsGraph"},{"id":"-1387279939","predicate":"messageInteractionCounters","params":[{"name":"msg_id","type":"int"},{"name":"views","type":"int"},{"name":"forwards","type":"int"}],"type":"MessageInteractionCounters"},{"id":"-1107852396","predicate":"stats.broadcastStats","params":[{"name":"period","type":"StatsDateRangeDays"},{"name":"followers","type":"StatsAbsValueAndPrev"},{"name":"views_per_post","type":"StatsAbsValueAndPrev"},{"name":"shares_per_post","type":"StatsAbsValueAndPrev"},{"name":"enabled_notifications","type":"StatsPercentValue"},{"name":"growth_graph","type":"StatsGraph"},{"name":"followers_graph","type":"StatsGraph"},{"name":"mute_graph","type":"StatsGraph"},{"name":"top_hours_graph","type":"StatsGraph"},{"name":"interactions_graph","type":"StatsGraph"},{"name":"iv_interactions_graph","type":"StatsGraph"},{"name":"views_by_source_graph","type":"StatsGraph"},{"name":"new_followers_by_source_graph","type":"StatsGraph"},{"name":"languages_graph","type":"StatsGraph"},{"name":"recent_message_interactions","type":"Vector<MessageInteractionCounters>"}],"type":"stats.BroadcastStats"},{"id":"-428884101","predicate":"inputMediaDice","params":[{"name":"emoticon","type":"string"}],"type":"InputMedia"},{"id":"1065280907","predicate":"messageMediaDice","params":[{"name":"value","type":"int"},{"name":"emoticon","type":"string"}],"type":"MessageMedia"},{"id":"-427863538","predicate":"inputStickerSetDice","params":[{"name":"emoticon","type":"string"}],"type":"InputStickerSet"},{"id":"-1728664459","predicate":"help.promoDataEmpty","params":[{"name":"expires","type":"int"}],"type":"help.PromoData"},{"id":"-1942390465","predicate":"help.promoData","params":[{"name":"flags","type":"#"},{"name":"proxy","type":"flags.0?true"},{"name":"expires","type":"int"},{"name":"peer","type":"Peer"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"psa_type","type":"flags.1?string"},{"name":"psa_message","type":"flags.2?string"}],"type":"help.PromoData"},{"id":"-567037804","predicate":"videoSize","params":[{"name":"flags","type":"#"},{"name":"type","type":"string"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"size","type":"int"},{"name":"video_start_ts","type":"flags.0?double"}],"type":"VideoSize"},{"id":"643940105","predicate":"updatePhoneCallSignalingData","params":[{"name":"phone_call_id","type":"long"},{"name":"data","type":"bytes"}],"type":"Update"},{"id":"1634294960","predicate":"chatInvitePeek","params":[{"name":"chat","type":"Chat"},{"name":"expires","type":"int"}],"type":"ChatInvite"},{"id":"-1660637285","predicate":"statsGroupTopPoster","params":[{"name":"user_id","type":"long"},{"name":"messages","type":"int"},{"name":"avg_chars","type":"int"}],"type":"StatsGroupTopPoster"},{"id":"-682079097","predicate":"statsGroupTopAdmin","params":[{"name":"user_id","type":"long"},{"name":"deleted","type":"int"},{"name":"kicked","type":"int"},{"name":"banned","type":"int"}],"type":"StatsGroupTopAdmin"},{"id":"1398765469","predicate":"statsGroupTopInviter","params":[{"name":"user_id","type":"long"},{"name":"invitations","type":"int"}],"type":"StatsGroupTopInviter"},{"id":"-276825834","predicate":"stats.megagroupStats","params":[{"name":"period","type":"StatsDateRangeDays"},{"name":"members","type":"StatsAbsValueAndPrev"},{"name":"messages","type":"StatsAbsValueAndPrev"},{"name":"viewers","type":"StatsAbsValueAndPrev"},{"name":"posters","type":"StatsAbsValueAndPrev"},{"name":"growth_graph","type":"StatsGraph"},{"name":"members_graph","type":"StatsGraph"},{"name":"new_members_by_source_graph","type":"StatsGraph"},{"name":"languages_graph","type":"StatsGraph"},{"name":"messages_graph","type":"StatsGraph"},{"name":"actions_graph","type":"StatsGraph"},{"name":"top_hours_graph","type":"StatsGraph"},{"name":"weekdays_graph","type":"StatsGraph"},{"name":"top_posters","type":"Vector<StatsGroupTopPoster>"},{"name":"top_admins","type":"Vector<StatsGroupTopAdmin>"},{"name":"top_inviters","type":"Vector<StatsGroupTopInviter>"},{"name":"users","type":"Vector<User>"}],"type":"stats.MegagroupStats"},{"id":"-1096616924","predicate":"globalPrivacySettings","params":[{"name":"flags","type":"#"},{"name":"archive_and_mute_new_noncontact_peers","type":"flags.0?Bool"}],"type":"GlobalPrivacySettings"},{"id":"1667228533","predicate":"phoneConnectionWebrtc","params":[{"name":"flags","type":"#"},{"name":"turn","type":"flags.0?true"},{"name":"stun","type":"flags.1?true"},{"name":"id","type":"long"},{"name":"ip","type":"string"},{"name":"ipv6","type":"string"},{"name":"port","type":"int"},{"name":"username","type":"string"},{"name":"password","type":"string"}],"type":"PhoneConnection"},{"id":"1107543535","predicate":"help.countryCode","params":[{"name":"flags","type":"#"},{"name":"country_code","type":"string"},{"name":"prefixes","type":"flags.0?Vector<string>"},{"name":"patterns","type":"flags.1?Vector<string>"}],"type":"help.CountryCode"},{"id":"-1014526429","predicate":"help.country","params":[{"name":"flags","type":"#"},{"name":"hidden","type":"flags.0?true"},{"name":"iso2","type":"string"},{"name":"default_name","type":"string"},{"name":"name","type":"flags.1?string"},{"name":"country_codes","type":"Vector<help.CountryCode>"}],"type":"help.Country"},{"id":"-1815339214","predicate":"help.countriesListNotModified","params":[],"type":"help.CountriesList"},{"id":"-2016381538","predicate":"help.countriesList","params":[{"name":"countries","type":"Vector<help.Country>"},{"name":"hash","type":"int"}],"type":"help.CountriesList"},{"id":"1163625789","predicate":"messageViews","params":[{"name":"flags","type":"#"},{"name":"views","type":"flags.0?int"},{"name":"forwards","type":"flags.1?int"},{"name":"replies","type":"flags.2?MessageReplies"}],"type":"MessageViews"},{"id":"-761649164","predicate":"updateChannelMessageForwards","params":[{"name":"channel_id","type":"long"},{"name":"id","type":"int"},{"name":"forwards","type":"int"}],"type":"Update"},{"id":"-96535659","predicate":"photoSizeProgressive","params":[{"name":"type","type":"string"},{"name":"w","type":"int"},{"name":"h","type":"int"},{"name":"sizes","type":"Vector<int>"}],"type":"PhotoSize"},{"id":"-1228606141","predicate":"messages.messageViews","params":[{"name":"views","type":"Vector<MessageViews>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.MessageViews"},{"id":"-693004986","predicate":"updateReadChannelDiscussionInbox","params":[{"name":"flags","type":"#"},{"name":"channel_id","type":"long"},{"name":"top_msg_id","type":"int"},{"name":"read_max_id","type":"int"},{"name":"broadcast_id","type":"flags.0?long"},{"name":"broadcast_post","type":"flags.0?int"}],"type":"Update"},{"id":"1767677564","predicate":"updateReadChannelDiscussionOutbox","params":[{"name":"channel_id","type":"long"},{"name":"top_msg_id","type":"int"},{"name":"read_max_id","type":"int"}],"type":"Update"},{"id":"-1506535550","predicate":"messages.discussionMessage","params":[{"name":"flags","type":"#"},{"name":"messages","type":"Vector<Message>"},{"name":"max_id","type":"flags.0?int"},{"name":"read_inbox_max_id","type":"flags.1?int"},{"name":"read_outbox_max_id","type":"flags.2?int"},{"name":"unread_count","type":"int"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.DiscussionMessage"},{"id":"-1495959709","predicate":"messageReplyHeader","params":[{"name":"flags","type":"#"},{"name":"reply_to_msg_id","type":"int"},{"name":"reply_to_peer_id","type":"flags.0?Peer"},{"name":"reply_to_top_id","type":"flags.1?int"}],"type":"MessageReplyHeader"},{"id":"-2083123262","predicate":"messageReplies","params":[{"name":"flags","type":"#"},{"name":"comments","type":"flags.0?true"},{"name":"replies","type":"int"},{"name":"replies_pts","type":"int"},{"name":"recent_repliers","type":"flags.1?Vector<Peer>"},{"name":"channel_id","type":"flags.0?long"},{"name":"max_id","type":"flags.2?int"},{"name":"read_max_id","type":"flags.3?int"}],"type":"MessageReplies"},{"id":"610945826","predicate":"updatePeerBlocked","params":[{"name":"peer_id","type":"Peer"},{"name":"blocked","type":"Bool"}],"type":"Update"},{"id":"-386039788","predicate":"peerBlocked","params":[{"name":"peer_id","type":"Peer"},{"name":"date","type":"int"}],"type":"PeerBlocked"},{"id":"-1937192669","predicate":"updateChannelUserTyping","params":[{"name":"flags","type":"#"},{"name":"channel_id","type":"long"},{"name":"top_msg_id","type":"flags.0?int"},{"name":"from_id","type":"Peer"},{"name":"action","type":"SendMessageAction"}],"type":"Update"},{"id":"-1392895362","predicate":"inputMessageCallbackQuery","params":[{"name":"id","type":"int"},{"name":"query_id","type":"long"}],"type":"InputMessage"},{"id":"453242886","predicate":"channelParticipantLeft","params":[{"name":"peer","type":"Peer"}],"type":"ChannelParticipant"},{"id":"-531931925","predicate":"channelParticipantsMentions","params":[{"name":"flags","type":"#"},{"name":"q","type":"flags.0?string"},{"name":"top_msg_id","type":"flags.1?int"}],"type":"ChannelParticipantsFilter"},{"id":"-309990731","predicate":"updatePinnedMessages","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.0?true"},{"name":"peer","type":"Peer"},{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"1538885128","predicate":"updatePinnedChannelMessages","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.0?true"},{"name":"channel_id","type":"long"},{"name":"messages","type":"Vector<int>"},{"name":"pts","type":"int"},{"name":"pts_count","type":"int"}],"type":"Update"},{"id":"464520273","predicate":"inputMessagesFilterPinned","params":[],"type":"MessagesFilter"},{"id":"-1986399595","predicate":"stats.messageStats","params":[{"name":"views_graph","type":"StatsGraph"}],"type":"stats.MessageStats"},{"id":"-1730095465","predicate":"messageActionGeoProximityReached","params":[{"name":"from_id","type":"Peer"},{"name":"to_id","type":"Peer"},{"name":"distance","type":"int"}],"type":"MessageAction"},{"id":"-668906175","predicate":"photoPathSize","params":[{"name":"type","type":"string"},{"name":"bytes","type":"bytes"}],"type":"PhotoSize"},{"id":"-651419003","predicate":"speakingInGroupCallAction","params":[],"type":"SendMessageAction"},{"id":"2004925620","predicate":"groupCallDiscarded","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"duration","type":"int"}],"type":"GroupCall"},{"id":"-711498484","predicate":"groupCall","params":[{"name":"flags","type":"#"},{"name":"join_muted","type":"flags.1?true"},{"name":"can_change_join_muted","type":"flags.2?true"},{"name":"join_date_asc","type":"flags.6?true"},{"name":"schedule_start_subscribed","type":"flags.8?true"},{"name":"can_start_video","type":"flags.9?true"},{"name":"record_video_active","type":"flags.11?true"},{"name":"id","type":"long"},{"name":"access_hash","type":"long"},{"name":"participants_count","type":"int"},{"name":"title","type":"flags.3?string"},{"name":"stream_dc_id","type":"flags.4?int"},{"name":"record_start_date","type":"flags.5?int"},{"name":"schedule_date","type":"flags.7?int"},{"name":"unmuted_video_count","type":"flags.10?int"},{"name":"unmuted_video_limit","type":"int"},{"name":"version","type":"int"}],"type":"GroupCall"},{"id":"-659913713","predicate":"inputGroupCall","params":[{"name":"id","type":"long"},{"name":"access_hash","type":"long"}],"type":"InputGroupCall"},{"id":"2047704898","predicate":"messageActionGroupCall","params":[{"name":"flags","type":"#"},{"name":"call","type":"InputGroupCall"},{"name":"duration","type":"flags.0?int"}],"type":"MessageAction"},{"id":"1345295095","predicate":"messageActionInviteToGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"users","type":"Vector<long>"}],"type":"MessageAction"},{"id":"-341428482","predicate":"groupCallParticipant","params":[{"name":"flags","type":"#"},{"name":"muted","type":"flags.0?true"},{"name":"left","type":"flags.1?true"},{"name":"can_self_unmute","type":"flags.2?true"},{"name":"just_joined","type":"flags.4?true"},{"name":"versioned","type":"flags.5?true"},{"name":"min","type":"flags.8?true"},{"name":"muted_by_you","type":"flags.9?true"},{"name":"volume_by_admin","type":"flags.10?true"},{"name":"self","type":"flags.12?true"},{"name":"video_joined","type":"flags.15?true"},{"name":"peer","type":"Peer"},{"name":"date","type":"int"},{"name":"active_date","type":"flags.3?int"},{"name":"source","type":"int"},{"name":"volume","type":"flags.7?int"},{"name":"about","type":"flags.11?string"},{"name":"raise_hand_rating","type":"flags.13?long"},{"name":"video","type":"flags.6?GroupCallParticipantVideo"},{"name":"presentation","type":"flags.14?GroupCallParticipantVideo"}],"type":"GroupCallParticipant"},{"id":"-124097970","predicate":"updateChat","params":[{"name":"chat_id","type":"long"}],"type":"Update"},{"id":"-219423922","predicate":"updateGroupCallParticipants","params":[{"name":"call","type":"InputGroupCall"},{"name":"participants","type":"Vector<GroupCallParticipant>"},{"name":"version","type":"int"}],"type":"Update"},{"id":"347227392","predicate":"updateGroupCall","params":[{"name":"chat_id","type":"long"},{"name":"call","type":"GroupCall"}],"type":"Update"},{"id":"-1636664659","predicate":"phone.groupCall","params":[{"name":"call","type":"GroupCall"},{"name":"participants","type":"Vector<GroupCallParticipant>"},{"name":"participants_next_offset","type":"string"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"phone.GroupCall"},{"id":"-193506890","predicate":"phone.groupParticipants","params":[{"name":"count","type":"int"},{"name":"participants","type":"Vector<GroupCallParticipant>"},{"name":"next_offset","type":"string"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"},{"name":"version","type":"int"}],"type":"phone.GroupParticipants"},{"id":"813821341","predicate":"inlineQueryPeerTypeSameBotPM","params":[],"type":"InlineQueryPeerType"},{"id":"-2093215828","predicate":"inlineQueryPeerTypePM","params":[],"type":"InlineQueryPeerType"},{"id":"-681130742","predicate":"inlineQueryPeerTypeChat","params":[],"type":"InlineQueryPeerType"},{"id":"1589952067","predicate":"inlineQueryPeerTypeMegagroup","params":[],"type":"InlineQueryPeerType"},{"id":"1664413338","predicate":"inlineQueryPeerTypeBroadcast","params":[],"type":"InlineQueryPeerType"},{"id":"589338437","predicate":"channelAdminLogEventActionStartGroupCall","params":[{"name":"call","type":"InputGroupCall"}],"type":"ChannelAdminLogEventAction"},{"id":"-610299584","predicate":"channelAdminLogEventActionDiscardGroupCall","params":[{"name":"call","type":"InputGroupCall"}],"type":"ChannelAdminLogEventAction"},{"id":"-115071790","predicate":"channelAdminLogEventActionParticipantMute","params":[{"name":"participant","type":"GroupCallParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"-431740480","predicate":"channelAdminLogEventActionParticipantUnmute","params":[{"name":"participant","type":"GroupCallParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"1456906823","predicate":"channelAdminLogEventActionToggleGroupCallSetting","params":[{"name":"join_muted","type":"Bool"}],"type":"ChannelAdminLogEventAction"},{"id":"-1966921727","predicate":"inputPaymentCredentialsGooglePay","params":[{"name":"payment_token","type":"DataJSON"}],"type":"InputPaymentCredentials"},{"id":"375566091","predicate":"messages.historyImport","params":[{"name":"id","type":"long"}],"type":"messages.HistoryImport"},{"id":"-606432698","predicate":"sendMessageHistoryImportAction","params":[{"name":"progress","type":"int"}],"type":"SendMessageAction"},{"id":"1578088377","predicate":"messages.historyImportParsed","params":[{"name":"flags","type":"#"},{"name":"pm","type":"flags.0?true"},{"name":"group","type":"flags.1?true"},{"name":"title","type":"flags.2?string"}],"type":"messages.HistoryImportParsed"},{"id":"-170010905","predicate":"inputReportReasonFake","params":[],"type":"ReportReason"},{"id":"-275956116","predicate":"messages.affectedFoundMessages","params":[{"name":"pts","type":"int"},{"name":"pts_count","type":"int"},{"name":"offset","type":"int"},{"name":"messages","type":"Vector<int>"}],"type":"messages.AffectedFoundMessages"},{"id":"-1441072131","predicate":"messageActionSetMessagesTTL","params":[{"name":"period","type":"int"}],"type":"MessageAction"},{"id":"-1147422299","predicate":"updatePeerHistoryTTL","params":[{"name":"flags","type":"#"},{"name":"peer","type":"Peer"},{"name":"ttl_period","type":"flags.0?int"}],"type":"Update"},{"id":"-796432838","predicate":"updateChatParticipant","params":[{"name":"flags","type":"#"},{"name":"chat_id","type":"long"},{"name":"date","type":"int"},{"name":"actor_id","type":"long"},{"name":"user_id","type":"long"},{"name":"prev_participant","type":"flags.0?ChatParticipant"},{"name":"new_participant","type":"flags.1?ChatParticipant"},{"name":"invite","type":"flags.2?ExportedChatInvite"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"-1738720581","predicate":"updateChannelParticipant","params":[{"name":"flags","type":"#"},{"name":"channel_id","type":"long"},{"name":"date","type":"int"},{"name":"actor_id","type":"long"},{"name":"user_id","type":"long"},{"name":"prev_participant","type":"flags.0?ChannelParticipant"},{"name":"new_participant","type":"flags.1?ChannelParticipant"},{"name":"invite","type":"flags.2?ExportedChatInvite"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"-997782967","predicate":"updateBotStopped","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"},{"name":"stopped","type":"Bool"},{"name":"qts","type":"int"}],"type":"Update"},{"id":"190633460","predicate":"chatInviteImporter","params":[{"name":"user_id","type":"long"},{"name":"date","type":"int"}],"type":"ChatInviteImporter"},{"id":"-1111085620","predicate":"messages.exportedChatInvites","params":[{"name":"count","type":"int"},{"name":"invites","type":"Vector<ExportedChatInvite>"},{"name":"users","type":"Vector<User>"}],"type":"messages.ExportedChatInvites"},{"id":"410107472","predicate":"messages.exportedChatInvite","params":[{"name":"invite","type":"ExportedChatInvite"},{"name":"users","type":"Vector<User>"}],"type":"messages.ExportedChatInvite"},{"id":"572915951","predicate":"messages.exportedChatInviteReplaced","params":[{"name":"invite","type":"ExportedChatInvite"},{"name":"new_invite","type":"ExportedChatInvite"},{"name":"users","type":"Vector<User>"}],"type":"messages.ExportedChatInvite"},{"id":"-2118733814","predicate":"messages.chatInviteImporters","params":[{"name":"count","type":"int"},{"name":"importers","type":"Vector<ChatInviteImporter>"},{"name":"users","type":"Vector<User>"}],"type":"messages.ChatInviteImporters"},{"id":"-219353309","predicate":"chatAdminWithInvites","params":[{"name":"admin_id","type":"long"},{"name":"invites_count","type":"int"},{"name":"revoked_invites_count","type":"int"}],"type":"ChatAdminWithInvites"},{"id":"-1231326505","predicate":"messages.chatAdminsWithInvites","params":[{"name":"admins","type":"Vector<ChatAdminWithInvites>"},{"name":"users","type":"Vector<User>"}],"type":"messages.ChatAdminsWithInvites"},{"id":"1557846647","predicate":"channelAdminLogEventActionParticipantJoinByInvite","params":[{"name":"invite","type":"ExportedChatInvite"}],"type":"ChannelAdminLogEventAction"},{"id":"1515256996","predicate":"channelAdminLogEventActionExportedInviteDelete","params":[{"name":"invite","type":"ExportedChatInvite"}],"type":"ChannelAdminLogEventAction"},{"id":"1091179342","predicate":"channelAdminLogEventActionExportedInviteRevoke","params":[{"name":"invite","type":"ExportedChatInvite"}],"type":"ChannelAdminLogEventAction"},{"id":"-384910503","predicate":"channelAdminLogEventActionExportedInviteEdit","params":[{"name":"prev_invite","type":"ExportedChatInvite"},{"name":"new_invite","type":"ExportedChatInvite"}],"type":"ChannelAdminLogEventAction"},{"id":"1048537159","predicate":"channelAdminLogEventActionParticipantVolume","params":[{"name":"participant","type":"GroupCallParticipant"}],"type":"ChannelAdminLogEventAction"},{"id":"1855199800","predicate":"channelAdminLogEventActionChangeHistoryTTL","params":[{"name":"prev_value","type":"int"},{"name":"new_value","type":"int"}],"type":"ChannelAdminLogEventAction"},{"id":"-1571952873","predicate":"messages.checkedHistoryImportPeer","params":[{"name":"confirm_text","type":"string"}],"type":"messages.CheckedHistoryImportPeer"},{"id":"93890858","predicate":"inputGroupCallStream","params":[{"name":"flags","type":"#"},{"name":"call","type":"InputGroupCall"},{"name":"time_ms","type":"long"},{"name":"scale","type":"int"},{"name":"video_channel","type":"flags.0?int"},{"name":"video_quality","type":"flags.0?int"}],"type":"InputFileLocation"},{"id":"-1343921601","predicate":"phone.joinAsPeers","params":[{"name":"peers","type":"Vector<Peer>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"phone.JoinAsPeers"},{"id":"541839704","predicate":"phone.exportedGroupCallInvite","params":[{"name":"link","type":"string"}],"type":"phone.ExportedGroupCallInvite"},{"id":"-672693723","predicate":"inputBotInlineMessageMediaInvoice","params":[{"name":"flags","type":"#"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.0?InputWebDocument"},{"name":"invoice","type":"Invoice"},{"name":"payload","type":"bytes"},{"name":"provider","type":"string"},{"name":"provider_data","type":"DataJSON"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"InputBotInlineMessage"},{"id":"894081801","predicate":"botInlineMessageMediaInvoice","params":[{"name":"flags","type":"#"},{"name":"shipping_address_requested","type":"flags.1?true"},{"name":"test","type":"flags.3?true"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"photo","type":"flags.0?WebDocument"},{"name":"currency","type":"string"},{"name":"total_amount","type":"long"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"}],"type":"BotInlineMessage"},{"id":"-1281329567","predicate":"messageActionGroupCallScheduled","params":[{"name":"call","type":"InputGroupCall"},{"name":"schedule_date","type":"int"}],"type":"MessageAction"},{"id":"-592373577","predicate":"groupCallParticipantVideoSourceGroup","params":[{"name":"semantics","type":"string"},{"name":"sources","type":"Vector<int>"}],"type":"GroupCallParticipantVideoSourceGroup"},{"id":"1735736008","predicate":"groupCallParticipantVideo","params":[{"name":"flags","type":"#"},{"name":"paused","type":"flags.0?true"},{"name":"endpoint","type":"string"},{"name":"source_groups","type":"Vector<GroupCallParticipantVideoSourceGroup>"},{"name":"audio_source","type":"flags.1?int"}],"type":"GroupCallParticipantVideo"},{"id":"192428418","predicate":"updateGroupCallConnection","params":[{"name":"flags","type":"#"},{"name":"presentation","type":"flags.0?true"},{"name":"params","type":"DataJSON"}],"type":"Update"},{"id":"-2046910401","predicate":"stickers.suggestedShortName","params":[{"name":"short_name","type":"string"}],"type":"stickers.SuggestedShortName"},{"id":"795652779","predicate":"botCommandScopeDefault","params":[],"type":"BotCommandScope"},{"id":"1011811544","predicate":"botCommandScopeUsers","params":[],"type":"BotCommandScope"},{"id":"1877059713","predicate":"botCommandScopeChats","params":[],"type":"BotCommandScope"},{"id":"-1180016534","predicate":"botCommandScopeChatAdmins","params":[],"type":"BotCommandScope"},{"id":"-610432643","predicate":"botCommandScopePeer","params":[{"name":"peer","type":"InputPeer"}],"type":"BotCommandScope"},{"id":"1071145937","predicate":"botCommandScopePeerAdmins","params":[{"name":"peer","type":"InputPeer"}],"type":"BotCommandScope"},{"id":"169026035","predicate":"botCommandScopePeerUser","params":[{"name":"peer","type":"InputPeer"},{"name":"user_id","type":"InputUser"}],"type":"BotCommandScope"},{"id":"-478701471","predicate":"account.resetPasswordFailedWait","params":[{"name":"retry_date","type":"int"}],"type":"account.ResetPasswordResult"},{"id":"-370148227","predicate":"account.resetPasswordRequestedWait","params":[{"name":"until_date","type":"int"}],"type":"account.ResetPasswordResult"},{"id":"-383330754","predicate":"account.resetPasswordOk","params":[],"type":"account.ResetPasswordResult"},{"id":"1299263278","predicate":"updateBotCommands","params":[{"name":"peer","type":"Peer"},{"name":"bot_id","type":"long"},{"name":"commands","type":"Vector<BotCommand>"}],"type":"Update"},{"id":"-318022605","predicate":"chatTheme","params":[{"name":"emoticon","type":"string"},{"name":"theme","type":"Theme"},{"name":"dark_theme","type":"Theme"}],"type":"ChatTheme"},{"id":"-535699004","predicate":"account.chatThemesNotModified","params":[],"type":"account.ChatThemes"},{"id":"-28524867","predicate":"account.chatThemes","params":[{"name":"hash","type":"int"},{"name":"themes","type":"Vector<ChatTheme>"}],"type":"account.ChatThemes"},{"id":"-1434950843","predicate":"messageActionSetChatTheme","params":[{"name":"emoticon","type":"string"}],"type":"MessageAction"},{"id":"-1336228175","predicate":"sendMessageChooseStickerAction","params":[],"type":"SendMessageAction"},{"id":"708589599","predicate":"sponsoredMessage","params":[{"name":"flags","type":"#"},{"name":"random_id","type":"bytes"},{"name":"from_id","type":"Peer"},{"name":"start_param","type":"flags.0?string"},{"name":"message","type":"string"},{"name":"entities","type":"flags.1?Vector<MessageEntity>"}],"type":"SponsoredMessage"},{"id":"1705297877","predicate":"messages.sponsoredMessages","params":[{"name":"messages","type":"Vector<SponsoredMessage>"},{"name":"chats","type":"Vector<Chat>"},{"name":"users","type":"Vector<User>"}],"type":"messages.SponsoredMessages"},{"id":"215889721","predicate":"inputStickerSetAnimatedEmojiAnimations","params":[],"type":"InputStickerSet"},{"id":"630664139","predicate":"sendMessageEmojiInteraction","params":[{"name":"emoticon","type":"string"},{"name":"msg_id","type":"int"},{"name":"interaction","type":"DataJSON"}],"type":"SendMessageAction"},{"id":"-1234857938","predicate":"sendMessageEmojiInteractionSeen","params":[{"name":"emoticon","type":"string"}],"type":"SendMessageAction"},{"id":"-1227287081","predicate":"inputBotInlineMessageID64","params":[{"name":"dc_id","type":"int"},{"name":"owner_id","type":"long"},{"name":"id","type":"int"},{"name":"access_hash","type":"long"}],"type":"InputBotInlineMessageID"}],"methods":[{"id":"-878758099","method":"invokeAfterMsg","params":[{"name":"msg_id","type":"long"},{"name":"query","type":"!X"}],"type":"X"},{"id":"1036301552","method":"invokeAfterMsgs","params":[{"name":"msg_ids","type":"Vector<long>"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-1502141361","method":"auth.sendCode","params":[{"name":"phone_number","type":"string"},{"name":"api_id","type":"int"},{"name":"api_hash","type":"string"},{"name":"settings","type":"CodeSettings"}],"type":"auth.SentCode"},{"id":"-2131827673","method":"auth.signUp","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"}],"type":"auth.Authorization"},{"id":"-1126886015","method":"auth.signIn","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"},{"name":"phone_code","type":"string"}],"type":"auth.Authorization"},{"id":"1461180992","method":"auth.logOut","params":[],"type":"Bool"},{"id":"-1616179942","method":"auth.resetAuthorizations","params":[],"type":"Bool"},{"id":"-440401971","method":"auth.exportAuthorization","params":[{"name":"dc_id","type":"int"}],"type":"auth.ExportedAuthorization"},{"id":"-1518699091","method":"auth.importAuthorization","params":[{"name":"id","type":"long"},{"name":"bytes","type":"bytes"}],"type":"auth.Authorization"},{"id":"-841733627","method":"auth.bindTempAuthKey","params":[{"name":"perm_auth_key_id","type":"long"},{"name":"nonce","type":"long"},{"name":"expires_at","type":"int"},{"name":"encrypted_message","type":"bytes"}],"type":"Bool"},{"id":"-326762118","method":"account.registerDevice","params":[{"name":"flags","type":"#"},{"name":"no_muted","type":"flags.0?true"},{"name":"token_type","type":"int"},{"name":"token","type":"string"},{"name":"app_sandbox","type":"Bool"},{"name":"secret","type":"bytes"},{"name":"other_uids","type":"Vector<long>"}],"type":"Bool"},{"id":"1779249670","method":"account.unregisterDevice","params":[{"name":"token_type","type":"int"},{"name":"token","type":"string"},{"name":"other_uids","type":"Vector<long>"}],"type":"Bool"},{"id":"-2067899501","method":"account.updateNotifySettings","params":[{"name":"peer","type":"InputNotifyPeer"},{"name":"settings","type":"InputPeerNotifySettings"}],"type":"Bool"},{"id":"313765169","method":"account.getNotifySettings","params":[{"name":"peer","type":"InputNotifyPeer"}],"type":"PeerNotifySettings"},{"id":"-612493497","method":"account.resetNotifySettings","params":[],"type":"Bool"},{"id":"2018596725","method":"account.updateProfile","params":[{"name":"flags","type":"#"},{"name":"first_name","type":"flags.0?string"},{"name":"last_name","type":"flags.1?string"},{"name":"about","type":"flags.2?string"}],"type":"User"},{"id":"1713919532","method":"account.updateStatus","params":[{"name":"offline","type":"Bool"}],"type":"Bool"},{"id":"127302966","method":"account.getWallPapers","params":[{"name":"hash","type":"long"}],"type":"account.WallPapers"},{"id":"-977650298","method":"account.reportPeer","params":[{"name":"peer","type":"InputPeer"},{"name":"reason","type":"ReportReason"},{"name":"message","type":"string"}],"type":"Bool"},{"id":"227648840","method":"users.getUsers","params":[{"name":"id","type":"Vector<InputUser>"}],"type":"Vector<User>"},{"id":"-902781519","method":"users.getFullUser","params":[{"name":"id","type":"InputUser"}],"type":"UserFull"},{"id":"2061264541","method":"contacts.getContactIDs","params":[{"name":"hash","type":"long"}],"type":"Vector<int>"},{"id":"-995929106","method":"contacts.getStatuses","params":[],"type":"Vector<ContactStatus>"},{"id":"1574346258","method":"contacts.getContacts","params":[{"name":"hash","type":"long"}],"type":"contacts.Contacts"},{"id":"746589157","method":"contacts.importContacts","params":[{"name":"contacts","type":"Vector<InputContact>"}],"type":"contacts.ImportedContacts"},{"id":"157945344","method":"contacts.deleteContacts","params":[{"name":"id","type":"Vector<InputUser>"}],"type":"Updates"},{"id":"269745566","method":"contacts.deleteByPhones","params":[{"name":"phones","type":"Vector<string>"}],"type":"Bool"},{"id":"1758204945","method":"contacts.block","params":[{"name":"id","type":"InputPeer"}],"type":"Bool"},{"id":"-1096393392","method":"contacts.unblock","params":[{"name":"id","type":"InputPeer"}],"type":"Bool"},{"id":"-176409329","method":"contacts.getBlocked","params":[{"name":"offset","type":"int"},{"name":"limit","type":"int"}],"type":"contacts.Blocked"},{"id":"1673946374","method":"messages.getMessages","params":[{"name":"id","type":"Vector<InputMessage>"}],"type":"messages.Messages"},{"id":"-1594569905","method":"messages.getDialogs","params":[{"name":"flags","type":"#"},{"name":"exclude_pinned","type":"flags.0?true"},{"name":"folder_id","type":"flags.1?int"},{"name":"offset_date","type":"int"},{"name":"offset_id","type":"int"},{"name":"offset_peer","type":"InputPeer"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Dialogs"},{"id":"1143203525","method":"messages.getHistory","params":[{"name":"peer","type":"InputPeer"},{"name":"offset_id","type":"int"},{"name":"offset_date","type":"int"},{"name":"add_offset","type":"int"},{"name":"limit","type":"int"},{"name":"max_id","type":"int"},{"name":"min_id","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"-1593989278","method":"messages.search","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"q","type":"string"},{"name":"from_id","type":"flags.0?InputPeer"},{"name":"top_msg_id","type":"flags.1?int"},{"name":"filter","type":"MessagesFilter"},{"name":"min_date","type":"int"},{"name":"max_date","type":"int"},{"name":"offset_id","type":"int"},{"name":"add_offset","type":"int"},{"name":"limit","type":"int"},{"name":"max_id","type":"int"},{"name":"min_id","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"238054714","method":"messages.readHistory","params":[{"name":"peer","type":"InputPeer"},{"name":"max_id","type":"int"}],"type":"messages.AffectedMessages"},{"id":"469850889","method":"messages.deleteHistory","params":[{"name":"flags","type":"#"},{"name":"just_clear","type":"flags.0?true"},{"name":"revoke","type":"flags.1?true"},{"name":"peer","type":"InputPeer"},{"name":"max_id","type":"int"}],"type":"messages.AffectedHistory"},{"id":"-443640366","method":"messages.deleteMessages","params":[{"name":"flags","type":"#"},{"name":"revoke","type":"flags.0?true"},{"name":"id","type":"Vector<int>"}],"type":"messages.AffectedMessages"},{"id":"94983360","method":"messages.receivedMessages","params":[{"name":"max_id","type":"int"}],"type":"Vector<ReceivedNotifyMessage>"},{"id":"1486110434","method":"messages.setTyping","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"top_msg_id","type":"flags.0?int"},{"name":"action","type":"SendMessageAction"}],"type":"Bool"},{"id":"1376532592","method":"messages.sendMessage","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"clear_draft","type":"flags.7?true"},{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"message","type":"string"},{"name":"random_id","type":"long"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"881978281","method":"messages.sendMedia","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"clear_draft","type":"flags.7?true"},{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"media","type":"InputMedia"},{"name":"message","type":"string"},{"name":"random_id","type":"long"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"-637606386","method":"messages.forwardMessages","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"with_my_score","type":"flags.8?true"},{"name":"drop_author","type":"flags.11?true"},{"name":"drop_media_captions","type":"flags.12?true"},{"name":"from_peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"},{"name":"random_id","type":"Vector<long>"},{"name":"to_peer","type":"InputPeer"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"-820669733","method":"messages.reportSpam","params":[{"name":"peer","type":"InputPeer"}],"type":"Bool"},{"id":"913498268","method":"messages.getPeerSettings","params":[{"name":"peer","type":"InputPeer"}],"type":"PeerSettings"},{"id":"-1991005362","method":"messages.report","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"},{"name":"reason","type":"ReportReason"},{"name":"message","type":"string"}],"type":"Bool"},{"id":"1240027791","method":"messages.getChats","params":[{"name":"id","type":"Vector<long>"}],"type":"messages.Chats"},{"id":"-1364194508","method":"messages.getFullChat","params":[{"name":"chat_id","type":"long"}],"type":"messages.ChatFull"},{"id":"1937260541","method":"messages.editChatTitle","params":[{"name":"chat_id","type":"long"},{"name":"title","type":"string"}],"type":"Updates"},{"id":"903730804","method":"messages.editChatPhoto","params":[{"name":"chat_id","type":"long"},{"name":"photo","type":"InputChatPhoto"}],"type":"Updates"},{"id":"-230206493","method":"messages.addChatUser","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"InputUser"},{"name":"fwd_limit","type":"int"}],"type":"Updates"},{"id":"-1575461717","method":"messages.deleteChatUser","params":[{"name":"flags","type":"#"},{"name":"revoke_history","type":"flags.0?true"},{"name":"chat_id","type":"long"},{"name":"user_id","type":"InputUser"}],"type":"Updates"},{"id":"164303470","method":"messages.createChat","params":[{"name":"users","type":"Vector<InputUser>"},{"name":"title","type":"string"}],"type":"Updates"},{"id":"-304838614","method":"updates.getState","params":[],"type":"updates.State"},{"id":"630429265","method":"updates.getDifference","params":[{"name":"flags","type":"#"},{"name":"pts","type":"int"},{"name":"pts_total_limit","type":"flags.0?int"},{"name":"date","type":"int"},{"name":"qts","type":"int"}],"type":"updates.Difference"},{"id":"1926525996","method":"photos.updateProfilePhoto","params":[{"name":"id","type":"InputPhoto"}],"type":"photos.Photo"},{"id":"-1980559511","method":"photos.uploadProfilePhoto","params":[{"name":"flags","type":"#"},{"name":"file","type":"flags.0?InputFile"},{"name":"video","type":"flags.1?InputFile"},{"name":"video_start_ts","type":"flags.2?double"}],"type":"photos.Photo"},{"id":"-2016444625","method":"photos.deletePhotos","params":[{"name":"id","type":"Vector<InputPhoto>"}],"type":"Vector<long>"},{"id":"-1291540959","method":"upload.saveFilePart","params":[{"name":"file_id","type":"long"},{"name":"file_part","type":"int"},{"name":"bytes","type":"bytes"}],"type":"Bool"},{"id":"-1319462148","method":"upload.getFile","params":[{"name":"flags","type":"#"},{"name":"precise","type":"flags.0?true"},{"name":"cdn_supported","type":"flags.1?true"},{"name":"location","type":"InputFileLocation"},{"name":"offset","type":"int"},{"name":"limit","type":"int"}],"type":"upload.File"},{"id":"-990308245","method":"help.getConfig","params":[],"type":"Config"},{"id":"531836966","method":"help.getNearestDc","params":[],"type":"NearestDc"},{"id":"1378703997","method":"help.getAppUpdate","params":[{"name":"source","type":"string"}],"type":"help.AppUpdate"},{"id":"1295590211","method":"help.getInviteText","params":[],"type":"help.InviteText"},{"id":"-1848823128","method":"photos.getUserPhotos","params":[{"name":"user_id","type":"InputUser"},{"name":"offset","type":"int"},{"name":"max_id","type":"long"},{"name":"limit","type":"int"}],"type":"photos.Photos"},{"id":"651135312","method":"messages.getDhConfig","params":[{"name":"version","type":"int"},{"name":"random_length","type":"int"}],"type":"messages.DhConfig"},{"id":"-162681021","method":"messages.requestEncryption","params":[{"name":"user_id","type":"InputUser"},{"name":"random_id","type":"int"},{"name":"g_a","type":"bytes"}],"type":"EncryptedChat"},{"id":"1035731989","method":"messages.acceptEncryption","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"g_b","type":"bytes"},{"name":"key_fingerprint","type":"long"}],"type":"EncryptedChat"},{"id":"-208425312","method":"messages.discardEncryption","params":[{"name":"flags","type":"#"},{"name":"delete_history","type":"flags.0?true"},{"name":"chat_id","type":"int"}],"type":"Bool"},{"id":"2031374829","method":"messages.setEncryptedTyping","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"typing","type":"Bool"}],"type":"Bool"},{"id":"2135648522","method":"messages.readEncryptedHistory","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"max_date","type":"int"}],"type":"Bool"},{"id":"1157265941","method":"messages.sendEncrypted","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.0?true"},{"name":"peer","type":"InputEncryptedChat"},{"name":"random_id","type":"long"},{"name":"data","type":"bytes"}],"type":"messages.SentEncryptedMessage"},{"id":"1431914525","method":"messages.sendEncryptedFile","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.0?true"},{"name":"peer","type":"InputEncryptedChat"},{"name":"random_id","type":"long"},{"name":"data","type":"bytes"},{"name":"file","type":"InputEncryptedFile"}],"type":"messages.SentEncryptedMessage"},{"id":"852769188","method":"messages.sendEncryptedService","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"random_id","type":"long"},{"name":"data","type":"bytes"}],"type":"messages.SentEncryptedMessage"},{"id":"1436924774","method":"messages.receivedQueue","params":[{"name":"max_qts","type":"int"}],"type":"Vector<long>"},{"id":"1259113487","method":"messages.reportEncryptedSpam","params":[{"name":"peer","type":"InputEncryptedChat"}],"type":"Bool"},{"id":"-562337987","method":"upload.saveBigFilePart","params":[{"name":"file_id","type":"long"},{"name":"file_part","type":"int"},{"name":"file_total_parts","type":"int"},{"name":"bytes","type":"bytes"}],"type":"Bool"},{"id":"-1043505495","method":"initConnection","params":[{"name":"flags","type":"#"},{"name":"api_id","type":"int"},{"name":"device_model","type":"string"},{"name":"system_version","type":"string"},{"name":"app_version","type":"string"},{"name":"system_lang_code","type":"string"},{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"},{"name":"proxy","type":"flags.0?InputClientProxy"},{"name":"params","type":"flags.1?JSONValue"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-1663104819","method":"help.getSupport","params":[],"type":"help.Support"},{"id":"916930423","method":"messages.readMessageContents","params":[{"name":"id","type":"Vector<int>"}],"type":"messages.AffectedMessages"},{"id":"655677548","method":"account.checkUsername","params":[{"name":"username","type":"string"}],"type":"Bool"},{"id":"1040964988","method":"account.updateUsername","params":[{"name":"username","type":"string"}],"type":"User"},{"id":"301470424","method":"contacts.search","params":[{"name":"q","type":"string"},{"name":"limit","type":"int"}],"type":"contacts.Found"},{"id":"-623130288","method":"account.getPrivacy","params":[{"name":"key","type":"InputPrivacyKey"}],"type":"account.PrivacyRules"},{"id":"-906486552","method":"account.setPrivacy","params":[{"name":"key","type":"InputPrivacyKey"},{"name":"rules","type":"Vector<InputPrivacyRule>"}],"type":"account.PrivacyRules"},{"id":"1099779595","method":"account.deleteAccount","params":[{"name":"reason","type":"string"}],"type":"Bool"},{"id":"150761757","method":"account.getAccountTTL","params":[],"type":"AccountDaysTTL"},{"id":"608323678","method":"account.setAccountTTL","params":[{"name":"ttl","type":"AccountDaysTTL"}],"type":"Bool"},{"id":"-627372787","method":"invokeWithLayer","params":[{"name":"layer","type":"int"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-113456221","method":"contacts.resolveUsername","params":[{"name":"username","type":"string"}],"type":"contacts.ResolvedPeer"},{"id":"-2108208411","method":"account.sendChangePhoneCode","params":[{"name":"phone_number","type":"string"},{"name":"settings","type":"CodeSettings"}],"type":"auth.SentCode"},{"id":"1891839707","method":"account.changePhone","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"},{"name":"phone_code","type":"string"}],"type":"User"},{"id":"-710552671","method":"messages.getStickers","params":[{"name":"emoticon","type":"string"},{"name":"hash","type":"long"}],"type":"messages.Stickers"},{"id":"-1197432408","method":"messages.getAllStickers","params":[{"name":"hash","type":"long"}],"type":"messages.AllStickers"},{"id":"954152242","method":"account.updateDeviceLocked","params":[{"name":"period","type":"int"}],"type":"Bool"},{"id":"1738800940","method":"auth.importBotAuthorization","params":[{"name":"flags","type":"int"},{"name":"api_id","type":"int"},{"name":"api_hash","type":"string"},{"name":"bot_auth_token","type":"string"}],"type":"auth.Authorization"},{"id":"-1956073268","method":"messages.getWebPagePreview","params":[{"name":"flags","type":"#"},{"name":"message","type":"string"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"}],"type":"MessageMedia"},{"id":"-484392616","method":"account.getAuthorizations","params":[],"type":"account.Authorizations"},{"id":"-545786948","method":"account.resetAuthorization","params":[{"name":"hash","type":"long"}],"type":"Bool"},{"id":"1418342645","method":"account.getPassword","params":[],"type":"account.Password"},{"id":"-1663767815","method":"account.getPasswordSettings","params":[{"name":"password","type":"InputCheckPasswordSRP"}],"type":"account.PasswordSettings"},{"id":"-1516564433","method":"account.updatePasswordSettings","params":[{"name":"password","type":"InputCheckPasswordSRP"},{"name":"new_settings","type":"account.PasswordInputSettings"}],"type":"Bool"},{"id":"-779399914","method":"auth.checkPassword","params":[{"name":"password","type":"InputCheckPasswordSRP"}],"type":"auth.Authorization"},{"id":"-661144474","method":"auth.requestPasswordRecovery","params":[],"type":"auth.PasswordRecovery"},{"id":"923364464","method":"auth.recoverPassword","params":[{"name":"flags","type":"#"},{"name":"code","type":"string"},{"name":"new_settings","type":"flags.0?account.PasswordInputSettings"}],"type":"auth.Authorization"},{"id":"-1080796745","method":"invokeWithoutUpdates","params":[{"name":"query","type":"!X"}],"type":"X"},{"id":"347716823","method":"messages.exportChatInvite","params":[{"name":"flags","type":"#"},{"name":"legacy_revoke_permanent","type":"flags.2?true"},{"name":"peer","type":"InputPeer"},{"name":"expire_date","type":"flags.0?int"},{"name":"usage_limit","type":"flags.1?int"}],"type":"ExportedChatInvite"},{"id":"1051570619","method":"messages.checkChatInvite","params":[{"name":"hash","type":"string"}],"type":"ChatInvite"},{"id":"1817183516","method":"messages.importChatInvite","params":[{"name":"hash","type":"string"}],"type":"Updates"},{"id":"639215886","method":"messages.getStickerSet","params":[{"name":"stickerset","type":"InputStickerSet"}],"type":"messages.StickerSet"},{"id":"-946871200","method":"messages.installStickerSet","params":[{"name":"stickerset","type":"InputStickerSet"},{"name":"archived","type":"Bool"}],"type":"messages.StickerSetInstallResult"},{"id":"-110209570","method":"messages.uninstallStickerSet","params":[{"name":"stickerset","type":"InputStickerSet"}],"type":"Bool"},{"id":"-421563528","method":"messages.startBot","params":[{"name":"bot","type":"InputUser"},{"name":"peer","type":"InputPeer"},{"name":"random_id","type":"long"},{"name":"start_param","type":"string"}],"type":"Updates"},{"id":"-1877938321","method":"help.getAppChangelog","params":[{"name":"prev_app_version","type":"string"}],"type":"Updates"},{"id":"1468322785","method":"messages.getMessagesViews","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"},{"name":"increment","type":"Bool"}],"type":"messages.MessageViews"},{"id":"-871347913","method":"channels.readHistory","params":[{"name":"channel","type":"InputChannel"},{"name":"max_id","type":"int"}],"type":"Bool"},{"id":"-2067661490","method":"channels.deleteMessages","params":[{"name":"channel","type":"InputChannel"},{"name":"id","type":"Vector<int>"}],"type":"messages.AffectedMessages"},{"id":"-787622117","method":"channels.deleteUserHistory","params":[{"name":"channel","type":"InputChannel"},{"name":"user_id","type":"InputUser"}],"type":"messages.AffectedHistory"},{"id":"-32999408","method":"channels.reportSpam","params":[{"name":"channel","type":"InputChannel"},{"name":"user_id","type":"InputUser"},{"name":"id","type":"Vector<int>"}],"type":"Bool"},{"id":"-1383294429","method":"channels.getMessages","params":[{"name":"channel","type":"InputChannel"},{"name":"id","type":"Vector<InputMessage>"}],"type":"messages.Messages"},{"id":"2010044880","method":"channels.getParticipants","params":[{"name":"channel","type":"InputChannel"},{"name":"filter","type":"ChannelParticipantsFilter"},{"name":"offset","type":"int"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"channels.ChannelParticipants"},{"id":"-1599378234","method":"channels.getParticipant","params":[{"name":"channel","type":"InputChannel"},{"name":"participant","type":"InputPeer"}],"type":"channels.ChannelParticipant"},{"id":"176122811","method":"channels.getChannels","params":[{"name":"id","type":"Vector<InputChannel>"}],"type":"messages.Chats"},{"id":"141781513","method":"channels.getFullChannel","params":[{"name":"channel","type":"InputChannel"}],"type":"messages.ChatFull"},{"id":"1029681423","method":"channels.createChannel","params":[{"name":"flags","type":"#"},{"name":"broadcast","type":"flags.0?true"},{"name":"megagroup","type":"flags.1?true"},{"name":"for_import","type":"flags.3?true"},{"name":"title","type":"string"},{"name":"about","type":"string"},{"name":"geo_point","type":"flags.2?InputGeoPoint"},{"name":"address","type":"flags.2?string"}],"type":"Updates"},{"id":"-751007486","method":"channels.editAdmin","params":[{"name":"channel","type":"InputChannel"},{"name":"user_id","type":"InputUser"},{"name":"admin_rights","type":"ChatAdminRights"},{"name":"rank","type":"string"}],"type":"Updates"},{"id":"1450044624","method":"channels.editTitle","params":[{"name":"channel","type":"InputChannel"},{"name":"title","type":"string"}],"type":"Updates"},{"id":"-248621111","method":"channels.editPhoto","params":[{"name":"channel","type":"InputChannel"},{"name":"photo","type":"InputChatPhoto"}],"type":"Updates"},{"id":"283557164","method":"channels.checkUsername","params":[{"name":"channel","type":"InputChannel"},{"name":"username","type":"string"}],"type":"Bool"},{"id":"890549214","method":"channels.updateUsername","params":[{"name":"channel","type":"InputChannel"},{"name":"username","type":"string"}],"type":"Bool"},{"id":"615851205","method":"channels.joinChannel","params":[{"name":"channel","type":"InputChannel"}],"type":"Updates"},{"id":"-130635115","method":"channels.leaveChannel","params":[{"name":"channel","type":"InputChannel"}],"type":"Updates"},{"id":"429865580","method":"channels.inviteToChannel","params":[{"name":"channel","type":"InputChannel"},{"name":"users","type":"Vector<InputUser>"}],"type":"Updates"},{"id":"-1072619549","method":"channels.deleteChannel","params":[{"name":"channel","type":"InputChannel"}],"type":"Updates"},{"id":"51854712","method":"updates.getChannelDifference","params":[{"name":"flags","type":"#"},{"name":"force","type":"flags.0?true"},{"name":"channel","type":"InputChannel"},{"name":"filter","type":"ChannelMessagesFilter"},{"name":"pts","type":"int"},{"name":"limit","type":"int"}],"type":"updates.ChannelDifference"},{"id":"-1470377534","method":"messages.editChatAdmin","params":[{"name":"chat_id","type":"long"},{"name":"user_id","type":"InputUser"},{"name":"is_admin","type":"Bool"}],"type":"Bool"},{"id":"-1568189671","method":"messages.migrateChat","params":[{"name":"chat_id","type":"long"}],"type":"Updates"},{"id":"1271290010","method":"messages.searchGlobal","params":[{"name":"flags","type":"#"},{"name":"folder_id","type":"flags.0?int"},{"name":"q","type":"string"},{"name":"filter","type":"MessagesFilter"},{"name":"min_date","type":"int"},{"name":"max_date","type":"int"},{"name":"offset_rate","type":"int"},{"name":"offset_peer","type":"InputPeer"},{"name":"offset_id","type":"int"},{"name":"limit","type":"int"}],"type":"messages.Messages"},{"id":"2016638777","method":"messages.reorderStickerSets","params":[{"name":"flags","type":"#"},{"name":"masks","type":"flags.0?true"},{"name":"order","type":"Vector<long>"}],"type":"Bool"},{"id":"864953444","method":"messages.getDocumentByHash","params":[{"name":"sha256","type":"bytes"},{"name":"size","type":"int"},{"name":"mime_type","type":"string"}],"type":"Document"},{"id":"1559270965","method":"messages.getSavedGifs","params":[{"name":"hash","type":"long"}],"type":"messages.SavedGifs"},{"id":"846868683","method":"messages.saveGif","params":[{"name":"id","type":"InputDocument"},{"name":"unsave","type":"Bool"}],"type":"Bool"},{"id":"1364105629","method":"messages.getInlineBotResults","params":[{"name":"flags","type":"#"},{"name":"bot","type":"InputUser"},{"name":"peer","type":"InputPeer"},{"name":"geo_point","type":"flags.0?InputGeoPoint"},{"name":"query","type":"string"},{"name":"offset","type":"string"}],"type":"messages.BotResults"},{"id":"-346119674","method":"messages.setInlineBotResults","params":[{"name":"flags","type":"#"},{"name":"gallery","type":"flags.0?true"},{"name":"private","type":"flags.1?true"},{"name":"query_id","type":"long"},{"name":"results","type":"Vector<InputBotInlineResult>"},{"name":"cache_time","type":"int"},{"name":"next_offset","type":"flags.2?string"},{"name":"switch_pm","type":"flags.3?InlineBotSwitchPM"}],"type":"Bool"},{"id":"570955184","method":"messages.sendInlineBotResult","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"clear_draft","type":"flags.7?true"},{"name":"hide_via","type":"flags.11?true"},{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"random_id","type":"long"},{"name":"query_id","type":"long"},{"name":"id","type":"string"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"-432034325","method":"channels.exportMessageLink","params":[{"name":"flags","type":"#"},{"name":"grouped","type":"flags.0?true"},{"name":"thread","type":"flags.1?true"},{"name":"channel","type":"InputChannel"},{"name":"id","type":"int"}],"type":"ExportedMessageLink"},{"id":"527021574","method":"channels.toggleSignatures","params":[{"name":"channel","type":"InputChannel"},{"name":"enabled","type":"Bool"}],"type":"Updates"},{"id":"1056025023","method":"auth.resendCode","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"}],"type":"auth.SentCode"},{"id":"520357240","method":"auth.cancelCode","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"}],"type":"Bool"},{"id":"-39416522","method":"messages.getMessageEditData","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"}],"type":"messages.MessageEditData"},{"id":"1224152952","method":"messages.editMessage","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"},{"name":"message","type":"flags.11?string"},{"name":"media","type":"flags.14?InputMedia"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"},{"name":"schedule_date","type":"flags.15?int"}],"type":"Updates"},{"id":"-2091549254","method":"messages.editInlineBotMessage","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"id","type":"InputBotInlineMessageID"},{"name":"message","type":"flags.11?string"},{"name":"media","type":"flags.14?InputMedia"},{"name":"reply_markup","type":"flags.2?ReplyMarkup"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"}],"type":"Bool"},{"id":"-1824339449","method":"messages.getBotCallbackAnswer","params":[{"name":"flags","type":"#"},{"name":"game","type":"flags.1?true"},{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"data","type":"flags.0?bytes"},{"name":"password","type":"flags.2?InputCheckPasswordSRP"}],"type":"messages.BotCallbackAnswer"},{"id":"-712043766","method":"messages.setBotCallbackAnswer","params":[{"name":"flags","type":"#"},{"name":"alert","type":"flags.1?true"},{"name":"query_id","type":"long"},{"name":"message","type":"flags.0?string"},{"name":"url","type":"flags.2?string"},{"name":"cache_time","type":"int"}],"type":"Bool"},{"id":"-1758168906","method":"contacts.getTopPeers","params":[{"name":"flags","type":"#"},{"name":"correspondents","type":"flags.0?true"},{"name":"bots_pm","type":"flags.1?true"},{"name":"bots_inline","type":"flags.2?true"},{"name":"phone_calls","type":"flags.3?true"},{"name":"forward_users","type":"flags.4?true"},{"name":"forward_chats","type":"flags.5?true"},{"name":"groups","type":"flags.10?true"},{"name":"channels","type":"flags.15?true"},{"name":"offset","type":"int"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"contacts.TopPeers"},{"id":"451113900","method":"contacts.resetTopPeerRating","params":[{"name":"category","type":"TopPeerCategory"},{"name":"peer","type":"InputPeer"}],"type":"Bool"},{"id":"-462373635","method":"messages.getPeerDialogs","params":[{"name":"peers","type":"Vector<InputDialogPeer>"}],"type":"messages.PeerDialogs"},{"id":"-1137057461","method":"messages.saveDraft","params":[{"name":"flags","type":"#"},{"name":"no_webpage","type":"flags.1?true"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"peer","type":"InputPeer"},{"name":"message","type":"string"},{"name":"entities","type":"flags.3?Vector<MessageEntity>"}],"type":"Bool"},{"id":"1782549861","method":"messages.getAllDrafts","params":[],"type":"Updates"},{"id":"1685588756","method":"messages.getFeaturedStickers","params":[{"name":"hash","type":"long"}],"type":"messages.FeaturedStickers"},{"id":"1527873830","method":"messages.readFeaturedStickers","params":[{"name":"id","type":"Vector<long>"}],"type":"Bool"},{"id":"-1649852357","method":"messages.getRecentStickers","params":[{"name":"flags","type":"#"},{"name":"attached","type":"flags.0?true"},{"name":"hash","type":"long"}],"type":"messages.RecentStickers"},{"id":"958863608","method":"messages.saveRecentSticker","params":[{"name":"flags","type":"#"},{"name":"attached","type":"flags.0?true"},{"name":"id","type":"InputDocument"},{"name":"unsave","type":"Bool"}],"type":"Bool"},{"id":"-1986437075","method":"messages.clearRecentStickers","params":[{"name":"flags","type":"#"},{"name":"attached","type":"flags.0?true"}],"type":"Bool"},{"id":"1475442322","method":"messages.getArchivedStickers","params":[{"name":"flags","type":"#"},{"name":"masks","type":"flags.0?true"},{"name":"offset_id","type":"long"},{"name":"limit","type":"int"}],"type":"messages.ArchivedStickers"},{"id":"457157256","method":"account.sendConfirmPhoneCode","params":[{"name":"hash","type":"string"},{"name":"settings","type":"CodeSettings"}],"type":"auth.SentCode"},{"id":"1596029123","method":"account.confirmPhone","params":[{"name":"phone_code_hash","type":"string"},{"name":"phone_code","type":"string"}],"type":"Bool"},{"id":"-122669393","method":"channels.getAdminedPublicChannels","params":[{"name":"flags","type":"#"},{"name":"by_location","type":"flags.0?true"},{"name":"check_limit","type":"flags.1?true"}],"type":"messages.Chats"},{"id":"1678738104","method":"messages.getMaskStickers","params":[{"name":"hash","type":"long"}],"type":"messages.AllStickers"},{"id":"-866424884","method":"messages.getAttachedStickers","params":[{"name":"media","type":"InputStickeredMedia"}],"type":"Vector<StickerSetCovered>"},{"id":"-1907842680","method":"auth.dropTempAuthKeys","params":[{"name":"except_auth_keys","type":"Vector<long>"}],"type":"Bool"},{"id":"-1896289088","method":"messages.setGameScore","params":[{"name":"flags","type":"#"},{"name":"edit_message","type":"flags.0?true"},{"name":"force","type":"flags.1?true"},{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"},{"name":"user_id","type":"InputUser"},{"name":"score","type":"int"}],"type":"Updates"},{"id":"363700068","method":"messages.setInlineGameScore","params":[{"name":"flags","type":"#"},{"name":"edit_message","type":"flags.0?true"},{"name":"force","type":"flags.1?true"},{"name":"id","type":"InputBotInlineMessageID"},{"name":"user_id","type":"InputUser"},{"name":"score","type":"int"}],"type":"Bool"},{"id":"-400399203","method":"messages.getGameHighScores","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"},{"name":"user_id","type":"InputUser"}],"type":"messages.HighScores"},{"id":"258170395","method":"messages.getInlineGameHighScores","params":[{"name":"id","type":"InputBotInlineMessageID"},{"name":"user_id","type":"InputUser"}],"type":"messages.HighScores"},{"id":"-468934396","method":"messages.getCommonChats","params":[{"name":"user_id","type":"InputUser"},{"name":"max_id","type":"long"},{"name":"limit","type":"int"}],"type":"messages.Chats"},{"id":"-2023787330","method":"messages.getAllChats","params":[{"name":"except_ids","type":"Vector<long>"}],"type":"messages.Chats"},{"id":"-333262899","method":"help.setBotUpdatesStatus","params":[{"name":"pending_updates_count","type":"int"},{"name":"message","type":"string"}],"type":"Bool"},{"id":"852135825","method":"messages.getWebPage","params":[{"name":"url","type":"string"},{"name":"hash","type":"int"}],"type":"WebPage"},{"id":"-1489903017","method":"messages.toggleDialogPin","params":[{"name":"flags","type":"#"},{"name":"pinned","type":"flags.0?true"},{"name":"peer","type":"InputDialogPeer"}],"type":"Bool"},{"id":"991616823","method":"messages.reorderPinnedDialogs","params":[{"name":"flags","type":"#"},{"name":"force","type":"flags.0?true"},{"name":"folder_id","type":"int"},{"name":"order","type":"Vector<InputDialogPeer>"}],"type":"Bool"},{"id":"-692498958","method":"messages.getPinnedDialogs","params":[{"name":"folder_id","type":"int"}],"type":"messages.PeerDialogs"},{"id":"-1440257555","method":"bots.sendCustomRequest","params":[{"name":"custom_method","type":"string"},{"name":"params","type":"DataJSON"}],"type":"DataJSON"},{"id":"-434028723","method":"bots.answerWebhookJSONQuery","params":[{"name":"query_id","type":"long"},{"name":"data","type":"DataJSON"}],"type":"Bool"},{"id":"619086221","method":"upload.getWebFile","params":[{"name":"location","type":"InputWebFileLocation"},{"name":"offset","type":"int"},{"name":"limit","type":"int"}],"type":"upload.WebFile"},{"id":"-1976353651","method":"payments.getPaymentForm","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"theme_params","type":"flags.0?DataJSON"}],"type":"payments.PaymentForm"},{"id":"611897804","method":"payments.getPaymentReceipt","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"}],"type":"payments.PaymentReceipt"},{"id":"-619695760","method":"payments.validateRequestedInfo","params":[{"name":"flags","type":"#"},{"name":"save","type":"flags.0?true"},{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"info","type":"PaymentRequestedInfo"}],"type":"payments.ValidatedRequestedInfo"},{"id":"818134173","method":"payments.sendPaymentForm","params":[{"name":"flags","type":"#"},{"name":"form_id","type":"long"},{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"requested_info_id","type":"flags.0?string"},{"name":"shipping_option_id","type":"flags.1?string"},{"name":"credentials","type":"InputPaymentCredentials"},{"name":"tip_amount","type":"flags.2?long"}],"type":"payments.PaymentResult"},{"id":"1151208273","method":"account.getTmpPassword","params":[{"name":"password","type":"InputCheckPasswordSRP"},{"name":"period","type":"int"}],"type":"account.TmpPassword"},{"id":"578650699","method":"payments.getSavedInfo","params":[],"type":"payments.SavedInfo"},{"id":"-667062079","method":"payments.clearSavedInfo","params":[{"name":"flags","type":"#"},{"name":"credentials","type":"flags.0?true"},{"name":"info","type":"flags.1?true"}],"type":"Bool"},{"id":"-436833542","method":"messages.setBotShippingResults","params":[{"name":"flags","type":"#"},{"name":"query_id","type":"long"},{"name":"error","type":"flags.0?string"},{"name":"shipping_options","type":"flags.1?Vector<ShippingOption>"}],"type":"Bool"},{"id":"163765653","method":"messages.setBotPrecheckoutResults","params":[{"name":"flags","type":"#"},{"name":"success","type":"flags.1?true"},{"name":"query_id","type":"long"},{"name":"error","type":"flags.0?string"}],"type":"Bool"},{"id":"-1876841625","method":"stickers.createStickerSet","params":[{"name":"flags","type":"#"},{"name":"masks","type":"flags.0?true"},{"name":"animated","type":"flags.1?true"},{"name":"videos","type":"flags.4?true"},{"name":"user_id","type":"InputUser"},{"name":"title","type":"string"},{"name":"short_name","type":"string"},{"name":"thumb","type":"flags.2?InputDocument"},{"name":"stickers","type":"Vector<InputStickerSetItem>"},{"name":"software","type":"flags.3?string"}],"type":"messages.StickerSet"},{"id":"-143257775","method":"stickers.removeStickerFromSet","params":[{"name":"sticker","type":"InputDocument"}],"type":"messages.StickerSet"},{"id":"-4795190","method":"stickers.changeStickerPosition","params":[{"name":"sticker","type":"InputDocument"},{"name":"position","type":"int"}],"type":"messages.StickerSet"},{"id":"-2041315650","method":"stickers.addStickerToSet","params":[{"name":"stickerset","type":"InputStickerSet"},{"name":"sticker","type":"InputStickerSetItem"}],"type":"messages.StickerSet"},{"id":"1369162417","method":"messages.uploadMedia","params":[{"name":"peer","type":"InputPeer"},{"name":"media","type":"InputMedia"}],"type":"MessageMedia"},{"id":"1430593449","method":"phone.getCallConfig","params":[],"type":"DataJSON"},{"id":"1124046573","method":"phone.requestCall","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.0?true"},{"name":"user_id","type":"InputUser"},{"name":"random_id","type":"int"},{"name":"g_a_hash","type":"bytes"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"phone.PhoneCall"},{"id":"1003664544","method":"phone.acceptCall","params":[{"name":"peer","type":"InputPhoneCall"},{"name":"g_b","type":"bytes"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"phone.PhoneCall"},{"id":"788404002","method":"phone.confirmCall","params":[{"name":"peer","type":"InputPhoneCall"},{"name":"g_a","type":"bytes"},{"name":"key_fingerprint","type":"long"},{"name":"protocol","type":"PhoneCallProtocol"}],"type":"phone.PhoneCall"},{"id":"399855457","method":"phone.receivedCall","params":[{"name":"peer","type":"InputPhoneCall"}],"type":"Bool"},{"id":"-1295269440","method":"phone.discardCall","params":[{"name":"flags","type":"#"},{"name":"video","type":"flags.0?true"},{"name":"peer","type":"InputPhoneCall"},{"name":"duration","type":"int"},{"name":"reason","type":"PhoneCallDiscardReason"},{"name":"connection_id","type":"long"}],"type":"Updates"},{"id":"1508562471","method":"phone.setCallRating","params":[{"name":"flags","type":"#"},{"name":"user_initiative","type":"flags.0?true"},{"name":"peer","type":"InputPhoneCall"},{"name":"rating","type":"int"},{"name":"comment","type":"string"}],"type":"Updates"},{"id":"662363518","method":"phone.saveCallDebug","params":[{"name":"peer","type":"InputPhoneCall"},{"name":"debug","type":"DataJSON"}],"type":"Bool"},{"id":"536919235","method":"upload.getCdnFile","params":[{"name":"file_token","type":"bytes"},{"name":"offset","type":"int"},{"name":"limit","type":"int"}],"type":"upload.CdnFile"},{"id":"-1691921240","method":"upload.reuploadCdnFile","params":[{"name":"file_token","type":"bytes"},{"name":"request_token","type":"bytes"}],"type":"Vector<FileHash>"},{"id":"1375900482","method":"help.getCdnConfig","params":[],"type":"CdnConfig"},{"id":"-219008246","method":"langpack.getLangPack","params":[{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"}],"type":"LangPackDifference"},{"id":"-269862909","method":"langpack.getStrings","params":[{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"},{"name":"keys","type":"Vector<string>"}],"type":"Vector<LangPackString>"},{"id":"-845657435","method":"langpack.getDifference","params":[{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"},{"name":"from_version","type":"int"}],"type":"LangPackDifference"},{"id":"1120311183","method":"langpack.getLanguages","params":[{"name":"lang_pack","type":"string"}],"type":"Vector<LangPackLanguage>"},{"id":"-1763259007","method":"channels.editBanned","params":[{"name":"channel","type":"InputChannel"},{"name":"participant","type":"InputPeer"},{"name":"banned_rights","type":"ChatBannedRights"}],"type":"Updates"},{"id":"870184064","method":"channels.getAdminLog","params":[{"name":"flags","type":"#"},{"name":"channel","type":"InputChannel"},{"name":"q","type":"string"},{"name":"events_filter","type":"flags.0?ChannelAdminLogEventsFilter"},{"name":"admins","type":"flags.1?Vector<InputUser>"},{"name":"max_id","type":"long"},{"name":"min_id","type":"long"},{"name":"limit","type":"int"}],"type":"channels.AdminLogResults"},{"id":"1302676017","method":"upload.getCdnFileHashes","params":[{"name":"file_token","type":"bytes"},{"name":"offset","type":"int"}],"type":"Vector<FileHash>"},{"id":"-914493408","method":"messages.sendScreenshotNotification","params":[{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"int"},{"name":"random_id","type":"long"}],"type":"Updates"},{"id":"-359881479","method":"channels.setStickers","params":[{"name":"channel","type":"InputChannel"},{"name":"stickerset","type":"InputStickerSet"}],"type":"Bool"},{"id":"82946729","method":"messages.getFavedStickers","params":[{"name":"hash","type":"long"}],"type":"messages.FavedStickers"},{"id":"-1174420133","method":"messages.faveSticker","params":[{"name":"id","type":"InputDocument"},{"name":"unfave","type":"Bool"}],"type":"Bool"},{"id":"-357180360","method":"channels.readMessageContents","params":[{"name":"channel","type":"InputChannel"},{"name":"id","type":"Vector<int>"}],"type":"Bool"},{"id":"-2020263951","method":"contacts.resetSaved","params":[],"type":"Bool"},{"id":"1180140658","method":"messages.getUnreadMentions","params":[{"name":"peer","type":"InputPeer"},{"name":"offset_id","type":"int"},{"name":"add_offset","type":"int"},{"name":"limit","type":"int"},{"name":"max_id","type":"int"},{"name":"min_id","type":"int"}],"type":"messages.Messages"},{"id":"-1355375294","method":"channels.deleteHistory","params":[{"name":"channel","type":"InputChannel"},{"name":"max_id","type":"int"}],"type":"Bool"},{"id":"1036054804","method":"help.getRecentMeUrls","params":[{"name":"referer","type":"string"}],"type":"help.RecentMeUrls"},{"id":"-356796084","method":"channels.togglePreHistoryHidden","params":[{"name":"channel","type":"InputChannel"},{"name":"enabled","type":"Bool"}],"type":"Updates"},{"id":"251759059","method":"messages.readMentions","params":[{"name":"peer","type":"InputPeer"}],"type":"messages.AffectedHistory"},{"id":"1881817312","method":"messages.getRecentLocations","params":[{"name":"peer","type":"InputPeer"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"-872345397","method":"messages.sendMultiMedia","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.5?true"},{"name":"background","type":"flags.6?true"},{"name":"clear_draft","type":"flags.7?true"},{"name":"peer","type":"InputPeer"},{"name":"reply_to_msg_id","type":"flags.0?int"},{"name":"multi_media","type":"Vector<InputSingleMedia>"},{"name":"schedule_date","type":"flags.10?int"}],"type":"Updates"},{"id":"1347929239","method":"messages.uploadEncryptedFile","params":[{"name":"peer","type":"InputEncryptedChat"},{"name":"file","type":"InputEncryptedFile"}],"type":"EncryptedFile"},{"id":"405695855","method":"account.getWebAuthorizations","params":[],"type":"account.WebAuthorizations"},{"id":"755087855","method":"account.resetWebAuthorization","params":[{"name":"hash","type":"long"}],"type":"Bool"},{"id":"1747789204","method":"account.resetWebAuthorizations","params":[],"type":"Bool"},{"id":"896555914","method":"messages.searchStickerSets","params":[{"name":"flags","type":"#"},{"name":"exclude_featured","type":"flags.0?true"},{"name":"q","type":"string"},{"name":"hash","type":"long"}],"type":"messages.FoundStickerSets"},{"id":"-956147407","method":"upload.getFileHashes","params":[{"name":"location","type":"InputFileLocation"},{"name":"offset","type":"int"}],"type":"Vector<FileHash>"},{"id":"749019089","method":"help.getTermsOfServiceUpdate","params":[],"type":"help.TermsOfServiceUpdate"},{"id":"-294455398","method":"help.acceptTermsOfService","params":[{"name":"id","type":"DataJSON"}],"type":"Bool"},{"id":"-1299661699","method":"account.getAllSecureValues","params":[],"type":"Vector<SecureValue>"},{"id":"1936088002","method":"account.getSecureValue","params":[{"name":"types","type":"Vector<SecureValueType>"}],"type":"Vector<SecureValue>"},{"id":"-1986010339","method":"account.saveSecureValue","params":[{"name":"value","type":"InputSecureValue"},{"name":"secure_secret_id","type":"long"}],"type":"SecureValue"},{"id":"-1199522741","method":"account.deleteSecureValue","params":[{"name":"types","type":"Vector<SecureValueType>"}],"type":"Bool"},{"id":"-1865902923","method":"users.setSecureValueErrors","params":[{"name":"id","type":"InputUser"},{"name":"errors","type":"Vector<SecureValueError>"}],"type":"Bool"},{"id":"-1456907910","method":"account.getAuthorizationForm","params":[{"name":"bot_id","type":"long"},{"name":"scope","type":"string"},{"name":"public_key","type":"string"}],"type":"account.AuthorizationForm"},{"id":"-202552205","method":"account.acceptAuthorization","params":[{"name":"bot_id","type":"long"},{"name":"scope","type":"string"},{"name":"public_key","type":"string"},{"name":"value_hashes","type":"Vector<SecureValueHash>"},{"name":"credentials","type":"SecureCredentialsEncrypted"}],"type":"Bool"},{"id":"-1516022023","method":"account.sendVerifyPhoneCode","params":[{"name":"phone_number","type":"string"},{"name":"settings","type":"CodeSettings"}],"type":"auth.SentCode"},{"id":"1305716726","method":"account.verifyPhone","params":[{"name":"phone_number","type":"string"},{"name":"phone_code_hash","type":"string"},{"name":"phone_code","type":"string"}],"type":"Bool"},{"id":"1880182943","method":"account.sendVerifyEmailCode","params":[{"name":"email","type":"string"}],"type":"account.SentEmailCode"},{"id":"-323339813","method":"account.verifyEmail","params":[{"name":"email","type":"string"},{"name":"code","type":"string"}],"type":"Bool"},{"id":"1072547679","method":"help.getDeepLinkInfo","params":[{"name":"path","type":"string"}],"type":"help.DeepLinkInfo"},{"id":"-2098076769","method":"contacts.getSaved","params":[],"type":"Vector<SavedContact>"},{"id":"-2092831552","method":"channels.getLeftChannels","params":[{"name":"offset","type":"int"}],"type":"messages.Chats"},{"id":"-262453244","method":"account.initTakeoutSession","params":[{"name":"flags","type":"#"},{"name":"contacts","type":"flags.0?true"},{"name":"message_users","type":"flags.1?true"},{"name":"message_chats","type":"flags.2?true"},{"name":"message_megagroups","type":"flags.3?true"},{"name":"message_channels","type":"flags.4?true"},{"name":"files","type":"flags.5?true"},{"name":"file_max_size","type":"flags.5?int"}],"type":"account.Takeout"},{"id":"489050862","method":"account.finishTakeoutSession","params":[{"name":"flags","type":"#"},{"name":"success","type":"flags.0?true"}],"type":"Bool"},{"id":"486505992","method":"messages.getSplitRanges","params":[],"type":"Vector<MessageRange>"},{"id":"911373810","method":"invokeWithMessagesRange","params":[{"name":"range","type":"MessageRange"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-1398145746","method":"invokeWithTakeout","params":[{"name":"takeout_id","type":"long"},{"name":"query","type":"!X"}],"type":"X"},{"id":"-1031349873","method":"messages.markDialogUnread","params":[{"name":"flags","type":"#"},{"name":"unread","type":"flags.0?true"},{"name":"peer","type":"InputDialogPeer"}],"type":"Bool"},{"id":"585256482","method":"messages.getDialogUnreadMarks","params":[],"type":"Vector<DialogPeer>"},{"id":"-2062238246","method":"contacts.toggleTopPeers","params":[{"name":"enabled","type":"Bool"}],"type":"Bool"},{"id":"2119757468","method":"messages.clearAllDrafts","params":[],"type":"Bool"},{"id":"-1735311088","method":"help.getAppConfig","params":[],"type":"JSONValue"},{"id":"1862465352","method":"help.saveAppLog","params":[{"name":"events","type":"Vector<InputAppEvent>"}],"type":"Bool"},{"id":"-966677240","method":"help.getPassportConfig","params":[{"name":"hash","type":"int"}],"type":"help.PassportConfig"},{"id":"1784243458","method":"langpack.getLanguage","params":[{"name":"lang_pack","type":"string"},{"name":"lang_code","type":"string"}],"type":"LangPackLanguage"},{"id":"-760547348","method":"messages.updatePinnedMessage","params":[{"name":"flags","type":"#"},{"name":"silent","type":"flags.0?true"},{"name":"unpin","type":"flags.1?true"},{"name":"pm_oneside","type":"flags.2?true"},{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"}],"type":"Updates"},{"id":"-1881204448","method":"account.confirmPasswordEmail","params":[{"name":"code","type":"string"}],"type":"Bool"},{"id":"2055154197","method":"account.resendPasswordEmail","params":[],"type":"Bool"},{"id":"-1043606090","method":"account.cancelPasswordEmail","params":[],"type":"Bool"},{"id":"-748624084","method":"help.getSupportName","params":[],"type":"help.SupportName"},{"id":"59377875","method":"help.getUserInfo","params":[{"name":"user_id","type":"InputUser"}],"type":"help.UserInfo"},{"id":"1723407216","method":"help.editUserInfo","params":[{"name":"user_id","type":"InputUser"},{"name":"message","type":"string"},{"name":"entities","type":"Vector<MessageEntity>"}],"type":"help.UserInfo"},{"id":"-1626880216","method":"account.getContactSignUpNotification","params":[],"type":"Bool"},{"id":"-806076575","method":"account.setContactSignUpNotification","params":[{"name":"silent","type":"Bool"}],"type":"Bool"},{"id":"1398240377","method":"account.getNotifyExceptions","params":[{"name":"flags","type":"#"},{"name":"compare_sound","type":"flags.1?true"},{"name":"peer","type":"flags.0?InputNotifyPeer"}],"type":"Updates"},{"id":"283795844","method":"messages.sendVote","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"options","type":"Vector<bytes>"}],"type":"Updates"},{"id":"1941660731","method":"messages.getPollResults","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"}],"type":"Updates"},{"id":"1848369232","method":"messages.getOnlines","params":[{"name":"peer","type":"InputPeer"}],"type":"ChatOnlines"},{"id":"-554301545","method":"messages.editChatAbout","params":[{"name":"peer","type":"InputPeer"},{"name":"about","type":"string"}],"type":"Bool"},{"id":"-1517917375","method":"messages.editChatDefaultBannedRights","params":[{"name":"peer","type":"InputPeer"},{"name":"banned_rights","type":"ChatBannedRights"}],"type":"Updates"},{"id":"-57811990","method":"account.getWallPaper","params":[{"name":"wallpaper","type":"InputWallPaper"}],"type":"WallPaper"},{"id":"-578472351","method":"account.uploadWallPaper","params":[{"name":"file","type":"InputFile"},{"name":"mime_type","type":"string"},{"name":"settings","type":"WallPaperSettings"}],"type":"WallPaper"},{"id":"1817860919","method":"account.saveWallPaper","params":[{"name":"wallpaper","type":"InputWallPaper"},{"name":"unsave","type":"Bool"},{"name":"settings","type":"WallPaperSettings"}],"type":"Bool"},{"id":"-18000023","method":"account.installWallPaper","params":[{"name":"wallpaper","type":"InputWallPaper"},{"name":"settings","type":"WallPaperSettings"}],"type":"Bool"},{"id":"-1153722364","method":"account.resetWallPapers","params":[],"type":"Bool"},{"id":"1457130303","method":"account.getAutoDownloadSettings","params":[],"type":"account.AutoDownloadSettings"},{"id":"1995661875","method":"account.saveAutoDownloadSettings","params":[{"name":"flags","type":"#"},{"name":"low","type":"flags.0?true"},{"name":"high","type":"flags.1?true"},{"name":"settings","type":"AutoDownloadSettings"}],"type":"Bool"},{"id":"899735650","method":"messages.getEmojiKeywords","params":[{"name":"lang_code","type":"string"}],"type":"EmojiKeywordsDifference"},{"id":"352892591","method":"messages.getEmojiKeywordsDifference","params":[{"name":"lang_code","type":"string"},{"name":"from_version","type":"int"}],"type":"EmojiKeywordsDifference"},{"id":"1318675378","method":"messages.getEmojiKeywordsLanguages","params":[{"name":"lang_codes","type":"Vector<string>"}],"type":"Vector<EmojiLanguage>"},{"id":"-709817306","method":"messages.getEmojiURL","params":[{"name":"lang_code","type":"string"}],"type":"EmojiURL"},{"id":"1749536939","method":"folders.editPeerFolders","params":[{"name":"folder_peers","type":"Vector<InputFolderPeer>"}],"type":"Updates"},{"id":"472471681","method":"folders.deleteFolder","params":[{"name":"folder_id","type":"int"}],"type":"Updates"},{"id":"1932455680","method":"messages.getSearchCounters","params":[{"name":"peer","type":"InputPeer"},{"name":"filters","type":"Vector<MessagesFilter>"}],"type":"Vector<messages.SearchCounter>"},{"id":"-170208392","method":"channels.getGroupsForDiscussion","params":[],"type":"messages.Chats"},{"id":"1079520178","method":"channels.setDiscussionGroup","params":[{"name":"broadcast","type":"InputChannel"},{"name":"group","type":"InputChannel"}],"type":"Bool"},{"id":"428848198","method":"messages.requestUrlAuth","params":[{"name":"flags","type":"#"},{"name":"peer","type":"flags.1?InputPeer"},{"name":"msg_id","type":"flags.1?int"},{"name":"button_id","type":"flags.1?int"},{"name":"url","type":"flags.2?string"}],"type":"UrlAuthResult"},{"id":"-1322487515","method":"messages.acceptUrlAuth","params":[{"name":"flags","type":"#"},{"name":"write_allowed","type":"flags.0?true"},{"name":"peer","type":"flags.1?InputPeer"},{"name":"msg_id","type":"flags.1?int"},{"name":"button_id","type":"flags.1?int"},{"name":"url","type":"flags.2?string"}],"type":"UrlAuthResult"},{"id":"1336717624","method":"messages.hidePeerSettingsBar","params":[{"name":"peer","type":"InputPeer"}],"type":"Bool"},{"id":"-386636848","method":"contacts.addContact","params":[{"name":"flags","type":"#"},{"name":"add_phone_privacy_exception","type":"flags.0?true"},{"name":"id","type":"InputUser"},{"name":"first_name","type":"string"},{"name":"last_name","type":"string"},{"name":"phone","type":"string"}],"type":"Updates"},{"id":"-130964977","method":"contacts.acceptContact","params":[{"name":"id","type":"InputUser"}],"type":"Updates"},{"id":"-1892102881","method":"channels.editCreator","params":[{"name":"channel","type":"InputChannel"},{"name":"user_id","type":"InputUser"},{"name":"password","type":"InputCheckPasswordSRP"}],"type":"Updates"},{"id":"-750207932","method":"contacts.getLocated","params":[{"name":"flags","type":"#"},{"name":"background","type":"flags.1?true"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"self_expires","type":"flags.0?int"}],"type":"Updates"},{"id":"1491484525","method":"channels.editLocation","params":[{"name":"channel","type":"InputChannel"},{"name":"geo_point","type":"InputGeoPoint"},{"name":"address","type":"string"}],"type":"Bool"},{"id":"-304832784","method":"channels.toggleSlowMode","params":[{"name":"channel","type":"InputChannel"},{"name":"seconds","type":"int"}],"type":"Updates"},{"id":"-183077365","method":"messages.getScheduledHistory","params":[{"name":"peer","type":"InputPeer"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"-1111817116","method":"messages.getScheduledMessages","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"}],"type":"messages.Messages"},{"id":"-1120369398","method":"messages.sendScheduledMessages","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"}],"type":"Updates"},{"id":"1504586518","method":"messages.deleteScheduledMessages","params":[{"name":"peer","type":"InputPeer"},{"name":"id","type":"Vector<int>"}],"type":"Updates"},{"id":"473805619","method":"account.uploadTheme","params":[{"name":"flags","type":"#"},{"name":"file","type":"InputFile"},{"name":"thumb","type":"flags.0?InputFile"},{"name":"file_name","type":"string"},{"name":"mime_type","type":"string"}],"type":"Document"},{"id":"-2077048289","method":"account.createTheme","params":[{"name":"flags","type":"#"},{"name":"slug","type":"string"},{"name":"title","type":"string"},{"name":"document","type":"flags.2?InputDocument"},{"name":"settings","type":"flags.3?InputThemeSettings"}],"type":"Theme"},{"id":"1555261397","method":"account.updateTheme","params":[{"name":"flags","type":"#"},{"name":"format","type":"string"},{"name":"theme","type":"InputTheme"},{"name":"slug","type":"flags.0?string"},{"name":"title","type":"flags.1?string"},{"name":"document","type":"flags.2?InputDocument"},{"name":"settings","type":"flags.3?InputThemeSettings"}],"type":"Theme"},{"id":"-229175188","method":"account.saveTheme","params":[{"name":"theme","type":"InputTheme"},{"name":"unsave","type":"Bool"}],"type":"Bool"},{"id":"2061776695","method":"account.installTheme","params":[{"name":"flags","type":"#"},{"name":"dark","type":"flags.0?true"},{"name":"format","type":"flags.1?string"},{"name":"theme","type":"flags.1?InputTheme"}],"type":"Bool"},{"id":"-1919060949","method":"account.getTheme","params":[{"name":"format","type":"string"},{"name":"theme","type":"InputTheme"},{"name":"document_id","type":"long"}],"type":"Theme"},{"id":"1913054296","method":"account.getThemes","params":[{"name":"format","type":"string"},{"name":"hash","type":"long"}],"type":"account.Themes"},{"id":"-1210022402","method":"auth.exportLoginToken","params":[{"name":"api_id","type":"int"},{"name":"api_hash","type":"string"},{"name":"except_ids","type":"Vector<long>"}],"type":"auth.LoginToken"},{"id":"-1783866140","method":"auth.importLoginToken","params":[{"name":"token","type":"bytes"}],"type":"auth.LoginToken"},{"id":"-392909491","method":"auth.acceptLoginToken","params":[{"name":"token","type":"bytes"}],"type":"Authorization"},{"id":"-1250643605","method":"account.setContentSettings","params":[{"name":"flags","type":"#"},{"name":"sensitive_enabled","type":"flags.0?true"}],"type":"Bool"},{"id":"-1952756306","method":"account.getContentSettings","params":[],"type":"account.ContentSettings"},{"id":"300429806","method":"channels.getInactiveChannels","params":[],"type":"messages.InactiveChats"},{"id":"1705865692","method":"account.getMultiWallPapers","params":[{"name":"wallpapers","type":"Vector<InputWallPaper>"}],"type":"Vector<WallPaper>"},{"id":"-1200736242","method":"messages.getPollVotes","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"id","type":"int"},{"name":"option","type":"flags.0?bytes"},{"name":"offset","type":"flags.1?string"},{"name":"limit","type":"int"}],"type":"messages.VotesList"},{"id":"-1257951254","method":"messages.toggleStickerSets","params":[{"name":"flags","type":"#"},{"name":"uninstall","type":"flags.0?true"},{"name":"archive","type":"flags.1?true"},{"name":"unarchive","type":"flags.2?true"},{"name":"stickersets","type":"Vector<InputStickerSet>"}],"type":"Bool"},{"id":"779736953","method":"payments.getBankCardData","params":[{"name":"number","type":"string"}],"type":"payments.BankCardData"},{"id":"-241247891","method":"messages.getDialogFilters","params":[],"type":"Vector<DialogFilter>"},{"id":"-1566780372","method":"messages.getSuggestedDialogFilters","params":[],"type":"Vector<DialogFilterSuggested>"},{"id":"450142282","method":"messages.updateDialogFilter","params":[{"name":"flags","type":"#"},{"name":"id","type":"int"},{"name":"filter","type":"flags.0?DialogFilter"}],"type":"Bool"},{"id":"-983318044","method":"messages.updateDialogFiltersOrder","params":[{"name":"order","type":"Vector<int>"}],"type":"Bool"},{"id":"-1421720550","method":"stats.getBroadcastStats","params":[{"name":"flags","type":"#"},{"name":"dark","type":"flags.0?true"},{"name":"channel","type":"InputChannel"}],"type":"stats.BroadcastStats"},{"id":"1646092192","method":"stats.loadAsyncGraph","params":[{"name":"flags","type":"#"},{"name":"token","type":"string"},{"name":"x","type":"flags.0?long"}],"type":"StatsGraph"},{"id":"-1707717072","method":"stickers.setStickerSetThumb","params":[{"name":"stickerset","type":"InputStickerSet"},{"name":"thumb","type":"InputDocument"}],"type":"messages.StickerSet"},{"id":"85399130","method":"bots.setBotCommands","params":[{"name":"scope","type":"BotCommandScope"},{"name":"lang_code","type":"string"},{"name":"commands","type":"Vector<BotCommand>"}],"type":"Bool"},{"id":"2127598753","method":"messages.getOldFeaturedStickers","params":[{"name":"offset","type":"int"},{"name":"limit","type":"int"},{"name":"hash","type":"long"}],"type":"messages.FeaturedStickers"},{"id":"-1063816159","method":"help.getPromoData","params":[],"type":"help.PromoData"},{"id":"505748629","method":"help.hidePromoData","params":[{"name":"peer","type":"InputPeer"}],"type":"Bool"},{"id":"-8744061","method":"phone.sendSignalingData","params":[{"name":"peer","type":"InputPhoneCall"},{"name":"data","type":"bytes"}],"type":"Bool"},{"id":"-589330937","method":"stats.getMegagroupStats","params":[{"name":"flags","type":"#"},{"name":"dark","type":"flags.0?true"},{"name":"channel","type":"InputChannel"}],"type":"stats.MegagroupStats"},{"id":"-349483786","method":"account.getGlobalPrivacySettings","params":[],"type":"GlobalPrivacySettings"},{"id":"517647042","method":"account.setGlobalPrivacySettings","params":[{"name":"settings","type":"GlobalPrivacySettings"}],"type":"GlobalPrivacySettings"},{"id":"-183649631","method":"help.dismissSuggestion","params":[{"name":"peer","type":"InputPeer"},{"name":"suggestion","type":"string"}],"type":"Bool"},{"id":"1935116200","method":"help.getCountriesList","params":[{"name":"lang_code","type":"string"},{"name":"hash","type":"int"}],"type":"help.CountriesList"},{"id":"584962828","method":"messages.getReplies","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"offset_id","type":"int"},{"name":"offset_date","type":"int"},{"name":"add_offset","type":"int"},{"name":"limit","type":"int"},{"name":"max_id","type":"int"},{"name":"min_id","type":"int"},{"name":"hash","type":"long"}],"type":"messages.Messages"},{"id":"1147761405","method":"messages.getDiscussionMessage","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"}],"type":"messages.DiscussionMessage"},{"id":"-147740172","method":"messages.readDiscussion","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"},{"name":"read_max_id","type":"int"}],"type":"Bool"},{"id":"698914348","method":"contacts.blockFromReplies","params":[{"name":"flags","type":"#"},{"name":"delete_message","type":"flags.0?true"},{"name":"delete_history","type":"flags.1?true"},{"name":"report_spam","type":"flags.2?true"},{"name":"msg_id","type":"int"}],"type":"Updates"},{"id":"1445996571","method":"stats.getMessagePublicForwards","params":[{"name":"channel","type":"InputChannel"},{"name":"msg_id","type":"int"},{"name":"offset_rate","type":"int"},{"name":"offset_peer","type":"InputPeer"},{"name":"offset_id","type":"int"},{"name":"limit","type":"int"}],"type":"messages.Messages"},{"id":"-1226791947","method":"stats.getMessageStats","params":[{"name":"flags","type":"#"},{"name":"dark","type":"flags.0?true"},{"name":"channel","type":"InputChannel"},{"name":"msg_id","type":"int"}],"type":"stats.MessageStats"},{"id":"-265962357","method":"messages.unpinAllMessages","params":[{"name":"peer","type":"InputPeer"}],"type":"messages.AffectedHistory"},{"id":"1221445336","method":"phone.createGroupCall","params":[{"name":"flags","type":"#"},{"name":"peer","type":"InputPeer"},{"name":"random_id","type":"int"},{"name":"title","type":"flags.0?string"},{"name":"schedule_date","type":"flags.1?int"}],"type":"Updates"},{"id":"-1322057861","method":"phone.joinGroupCall","params":[{"name":"flags","type":"#"},{"name":"muted","type":"flags.0?true"},{"name":"video_stopped","type":"flags.2?true"},{"name":"call","type":"InputGroupCall"},{"name":"join_as","type":"InputPeer"},{"name":"invite_hash","type":"flags.1?string"},{"name":"params","type":"DataJSON"}],"type":"Updates"},{"id":"1342404601","method":"phone.leaveGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"source","type":"int"}],"type":"Updates"},{"id":"2067345760","method":"phone.inviteToGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"users","type":"Vector<InputUser>"}],"type":"Updates"},{"id":"2054648117","method":"phone.discardGroupCall","params":[{"name":"call","type":"InputGroupCall"}],"type":"Updates"},{"id":"1958458429","method":"phone.toggleGroupCallSettings","params":[{"name":"flags","type":"#"},{"name":"reset_invite_hash","type":"flags.1?true"},{"name":"call","type":"InputGroupCall"},{"name":"join_muted","type":"flags.0?Bool"}],"type":"Updates"},{"id":"68699611","method":"phone.getGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"limit","type":"int"}],"type":"phone.GroupCall"},{"id":"-984033109","method":"phone.getGroupParticipants","params":[{"name":"call","type":"InputGroupCall"},{"name":"ids","type":"Vector<InputPeer>"},{"name":"sources","type":"Vector<int>"},{"name":"offset","type":"string"},{"name":"limit","type":"int"}],"type":"phone.GroupParticipants"},{"id":"-1248003721","method":"phone.checkGroupCall","params":[{"name":"call","type":"InputGroupCall"},{"name":"sources","type":"Vector<int>"}],"type":"Vector<int>"},{"id":"1540419152","method":"messages.deleteChat","params":[{"name":"chat_id","type":"long"}],"type":"Bool"},{"id":"-104078327","method":"messages.deletePhoneCallHistory","params":[{"name":"flags","type":"#"},{"name":"revoke","type":"flags.0?true"}],"type":"messages.AffectedFoundMessages"},{"id":"1140726259","method":"messages.checkHistoryImport","params":[{"name":"import_head","type":"string"}],"type":"messages.HistoryImportParsed"},{"id":"873008187","method":"messages.initHistoryImport","params":[{"name":"peer","type":"InputPeer"},{"name":"file","type":"InputFile"},{"name":"media_count","type":"int"}],"type":"messages.HistoryImport"},{"id":"713433234","method":"messages.uploadImportedMedia","params":[{"name":"peer","type":"InputPeer"},{"name":"import_id","type":"long"},{"name":"file_name","type":"string"},{"name":"media","type":"InputMedia"}],"type":"MessageMedia"},{"id":"-1271008444","method":"messages.startHistoryImport","params":[{"name":"peer","type":"InputPeer"},{"name":"import_id","type":"long"}],"type":"Bool"},{"id":"-1565154314","method":"messages.getExportedChatInvites","params":[{"name":"flags","type":"#"},{"name":"revoked","type":"flags.3?true"},{"name":"peer","type":"InputPeer"},{"name":"admin_id","type":"InputUser"},{"name":"offset_date","type":"flags.2?int"},{"name":"offset_link","type":"flags.2?string"},{"name":"limit","type":"int"}],"type":"messages.ExportedChatInvites"},{"id":"1937010524","method":"messages.getExportedChatInvite","params":[{"name":"peer","type":"InputPeer"},{"name":"link","type":"string"}],"type":"messages.ExportedChatInvite"},{"id":"48562110","method":"messages.editExportedChatInvite","params":[{"name":"flags","type":"#"},{"name":"revoked","type":"flags.2?true"},{"name":"peer","type":"InputPeer"},{"name":"link","type":"string"},{"name":"expire_date","type":"flags.0?int"},{"name":"usage_limit","type":"flags.1?int"}],"type":"messages.ExportedChatInvite"},{"id":"1452833749","method":"messages.deleteRevokedExportedChatInvites","params":[{"name":"peer","type":"InputPeer"},{"name":"admin_id","type":"InputUser"}],"type":"Bool"},{"id":"-731601877","method":"messages.deleteExportedChatInvite","params":[{"name":"peer","type":"InputPeer"},{"name":"link","type":"string"}],"type":"Bool"},{"id":"958457583","method":"messages.getAdminsWithInvites","params":[{"name":"peer","type":"InputPeer"}],"type":"messages.ChatAdminsWithInvites"},{"id":"654013065","method":"messages.getChatInviteImporters","params":[{"name":"peer","type":"InputPeer"},{"name":"link","type":"string"},{"name":"offset_date","type":"int"},{"name":"offset_user","type":"InputUser"},{"name":"limit","type":"int"}],"type":"messages.ChatInviteImporters"},{"id":"-1207017500","method":"messages.setHistoryTTL","params":[{"name":"peer","type":"InputPeer"},{"name":"period","type":"int"}],"type":"Updates"},{"id":"-91437323","method":"account.reportProfilePhoto","params":[{"name":"peer","type":"InputPeer"},{"name":"photo_id","type":"InputPhoto"},{"name":"reason","type":"ReportReason"},{"name":"message","type":"string"}],"type":"Bool"},{"id":"187239529","method":"channels.convertToGigagroup","params":[{"name":"channel","type":"InputChannel"}],"type":"Updates"},{"id":"1573261059","method":"messages.checkHistoryImportPeer","params":[{"name":"peer","type":"InputPeer"}],"type":"messages.CheckedHistoryImportPeer"},{"id":"-248985848","method":"phone.toggleGroupCallRecord","params":[{"name":"flags","type":"#"},{"name":"start","type":"flags.0?true"},{"name":"video","type":"flags.2?true"},{"name":"call","type":"InputGroupCall"},{"name":"title","type":"flags.1?string"},{"name":"video_portrait","type":"flags.2?Bool"}],"type":"Updates"},{"id":"-1524155713","method":"phone.editGroupCallParticipant","params":[{"name":"flags","type":"#"},{"name":"call","type":"InputGroupCall"},{"name":"participant","type":"InputPeer"},{"name":"muted","type":"flags.0?Bool"},{"name":"volume","type":"flags.1?int"},{"name":"raise_hand","type":"flags.2?Bool"},{"name":"video_stopped","type":"flags.3?Bool"},{"name":"video_paused","type":"flags.4?Bool"},{"name":"presentation_paused","type":"flags.5?Bool"}],"type":"Updates"},{"id":"480685066","method":"phone.editGroupCallTitle","params":[{"name":"call","type":"InputGroupCall"},{"name":"title","type":"string"}],"type":"Updates"},{"id":"-277077702","method":"phone.getGroupCallJoinAs","params":[{"name":"peer","type":"InputPeer"}],"type":"phone.JoinAsPeers"},{"id":"-425040769","method":"phone.exportGroupCallInvite","params":[{"name":"flags","type":"#"},{"name":"can_self_unmute","type":"flags.0?true"},{"name":"call","type":"InputGroupCall"}],"type":"phone.ExportedGroupCallInvite"},{"id":"563885286","method":"phone.toggleGroupCallStartSubscription","params":[{"name":"call","type":"InputGroupCall"},{"name":"subscribed","type":"Bool"}],"type":"Updates"},{"id":"1451287362","method":"phone.startScheduledGroupCall","params":[{"name":"call","type":"InputGroupCall"}],"type":"Updates"},{"id":"1465786252","method":"phone.saveDefaultGroupCallJoinAs","params":[{"name":"peer","type":"InputPeer"},{"name":"join_as","type":"InputPeer"}],"type":"Bool"},{"id":"-873829436","method":"phone.joinGroupCallPresentation","params":[{"name":"call","type":"InputGroupCall"},{"name":"params","type":"DataJSON"}],"type":"Updates"},{"id":"475058500","method":"phone.leaveGroupCallPresentation","params":[{"name":"call","type":"InputGroupCall"}],"type":"Updates"},{"id":"676017721","method":"stickers.checkShortName","params":[{"name":"short_name","type":"string"}],"type":"Bool"},{"id":"1303364867","method":"stickers.suggestShortName","params":[{"name":"title","type":"string"}],"type":"stickers.SuggestedShortName"},{"id":"1032708345","method":"bots.resetBotCommands","params":[{"name":"scope","type":"BotCommandScope"},{"name":"lang_code","type":"string"}],"type":"Bool"},{"id":"-481554986","method":"bots.getBotCommands","params":[{"name":"scope","type":"BotCommandScope"},{"name":"lang_code","type":"string"}],"type":"Vector<BotCommand>"},{"id":"-1828139493","method":"account.resetPassword","params":[],"type":"account.ResetPasswordResult"},{"id":"1284770294","method":"account.declinePasswordReset","params":[],"type":"Bool"},{"id":"221691769","method":"auth.checkRecoveryPassword","params":[{"name":"code","type":"string"}],"type":"Bool"},{"id":"-690545285","method":"account.getChatThemes","params":[{"name":"hash","type":"int"}],"type":"account.ChatThemes"},{"id":"-432283329","method":"messages.setChatTheme","params":[{"name":"peer","type":"InputPeer"},{"name":"emoticon","type":"string"}],"type":"Updates"},{"id":"-1095836780","method":"channels.viewSponsoredMessage","params":[{"name":"channel","type":"InputChannel"},{"name":"random_id","type":"bytes"}],"type":"Bool"},{"id":"-333377601","method":"channels.getSponsoredMessages","params":[{"name":"channel","type":"InputChannel"}],"type":"messages.SponsoredMessages"},{"id":"745510839","method":"messages.getMessageReadParticipants","params":[{"name":"peer","type":"InputPeer"},{"name":"msg_id","type":"int"}],"type":"Vector<long>"}]} \ No newline at end of file diff --git a/data/corefork.telegram.org/schema/mtproto.html b/data/corefork.telegram.org/schema/mtproto.html new file mode 100644 index 0000000000..4da64ba771 --- /dev/null +++ b/data/corefork.telegram.org/schema/mtproto.html @@ -0,0 +1,204 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Current MTProto TL-schema</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Below you will find the current MTProto TL-schema. More details on TL » +See also the detailed schema in JSON » +int ? = Int;…"> + <meta property="og:title" content="Current MTProto TL-schema"> + <meta property="og:image" content=""> + <meta property="og:description" content="Below you will find the current MTProto TL-schema. More details on TL » +See also the detailed schema in JSON » +int ? = Int;…"> + <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?215" 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="/mtproto" >Mobile Protocol</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema/mtproto" >Current MTProto TL-schema</a></li></ul></div> + <h1 id="dev_page_title">Current MTProto TL-schema</h1> + + <div id="dev_page_content"><p>Below you will find the current MTProto TL-schema. <a href="/mtproto/TL">More details on TL »</a> </p> +<p>See also the <a href="/schema/mtproto-json">detailed schema in JSON »</a> </p> +<p><br></p> +<pre><code>int ? = Int; +long ? = Long; +double ? = Double; +string ? = String; + +vector {t:Type} # [ t ] = Vector t; + +int128 4*[ int ] = Int128; +int256 8*[ int ] = Int256; + +resPQ#05162463 nonce:int128 server_nonce:int128 pq:bytes server_public_key_fingerprints:Vector<long> = ResPQ; + +p_q_inner_data_dc#a9f55f95 pq:bytes p:bytes q:bytes nonce:int128 server_nonce:int128 new_nonce:int256 dc:int = P_Q_inner_data; +p_q_inner_data_temp_dc#56fddf88 pq:bytes p:bytes q:bytes nonce:int128 server_nonce:int128 new_nonce:int256 dc:int expires_in:int = P_Q_inner_data; + +server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:bytes = Server_DH_Params; + +server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:bytes g_a:bytes server_time:int = Server_DH_inner_data; + +client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:bytes = Client_DH_Inner_Data; + +dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer; +dh_gen_retry#46dc1fb9 nonce:int128 server_nonce:int128 new_nonce_hash2:int128 = Set_client_DH_params_answer; +dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = Set_client_DH_params_answer; + +bind_auth_key_inner#75a3f765 nonce:long temp_auth_key_id:long perm_auth_key_id:long temp_session_id:long expires_at:int = BindAuthKeyInner; + +rpc_result#f35c6d01 req_msg_id:long result:Object = RpcResult; +rpc_error#2144ca19 error_code:int error_message:string = RpcError; + +rpc_answer_unknown#5e2ad36e = RpcDropAnswer; +rpc_answer_dropped_running#cd78e586 = RpcDropAnswer; +rpc_answer_dropped#a43ad8b7 msg_id:long seq_no:int bytes:int = RpcDropAnswer; + +future_salt#0949d9dc valid_since:int valid_until:int salt:long = FutureSalt; +future_salts#ae500895 req_msg_id:long now:int salts:vector<future_salt> = FutureSalts; + +pong#347773c5 msg_id:long ping_id:long = Pong; + +destroy_session_ok#e22045fc session_id:long = DestroySessionRes; +destroy_session_none#62d350c9 session_id:long = DestroySessionRes; + +new_session_created#9ec20908 first_msg_id:long unique_id:long server_salt:long = NewSession; + +msg_container#73f1f8dc messages:vector<%Message> = MessageContainer; +message msg_id:long seqno:int bytes:int body:Object = Message; +msg_copy#e06046b2 orig_message:Message = MessageCopy; + +gzip_packed#3072cfa1 packed_data:bytes = Object; + +msgs_ack#62d6b459 msg_ids:Vector<long> = MsgsAck; + +bad_msg_notification#a7eff811 bad_msg_id:long bad_msg_seqno:int error_code:int = BadMsgNotification; +bad_server_salt#edab447b bad_msg_id:long bad_msg_seqno:int error_code:int new_server_salt:long = BadMsgNotification; + +msg_resend_req#7d861a08 msg_ids:Vector<long> = MsgResendReq; +msgs_state_req#da69fb52 msg_ids:Vector<long> = MsgsStateReq; +msgs_state_info#04deb57d req_msg_id:long info:bytes = MsgsStateInfo; +msgs_all_info#8cc0d131 msg_ids:Vector<long> info:bytes = MsgsAllInfo; +msg_detailed_info#276d3ec6 msg_id:long answer_msg_id:long bytes:int status:int = MsgDetailedInfo; +msg_new_detailed_info#809db6df answer_msg_id:long bytes:int status:int = MsgDetailedInfo; + +destroy_auth_key_ok#f660e1d4 = DestroyAuthKeyRes; +destroy_auth_key_none#0a9f2259 = DestroyAuthKeyRes; +destroy_auth_key_fail#ea109b13 = DestroyAuthKeyRes; + +---functions--- + +req_pq_multi#be7e8ef1 nonce:int128 = ResPQ; + +req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:bytes q:bytes public_key_fingerprint:long encrypted_data:bytes = Server_DH_Params; + +set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:bytes = Set_client_DH_params_answer; + +rpc_drop_answer#58e4a740 req_msg_id:long = RpcDropAnswer; +get_future_salts#b921bd04 num:int = FutureSalts; +ping#7abe77ec ping_id:long = Pong; +ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong; +destroy_session#e7512126 session_id:long = DestroySessionRes; + +http_wait#9299359f max_delay:int wait_after:int max_wait:int = HttpWait; + +destroy_auth_key#d1435160 = DestroyAuthKeyRes;</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/constructor/auth.sentAppCode b/data/corefork.telegram.org/type/DecryptedMessage.html similarity index 70% rename from data/corefork.telegram.org/constructor/auth.sentAppCode rename to data/corefork.telegram.org/type/DecryptedMessage.html index 1286ea89c1..3d50a1bebe 100644 --- a/data/corefork.telegram.org/constructor/auth.sentAppCode +++ b/data/corefork.telegram.org/type/DecryptedMessage.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>auth.sentAppCode</title> + <title>DecryptedMessage</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Contains info on a confirmation code message sent via Telegram."> - <meta property="og:title" content="auth.sentAppCode"> + <meta property="description" content="Object describes the contents of an encrypted message."> + <meta property="og:title" content="DecryptedMessage"> <meta property="og:image" content=""> - <meta property="og:description" content="Contains info on a confirmation code message sent via Telegram."> + <meta property="og:description" content="Object describes the contents of an encrypted message."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,11 +36,10 @@ <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/auth.sentAppCode" >auth.sentAppCode</a></li></ul></div> - <h1 id="dev_page_title">auth.sentAppCode</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/DecryptedMessage" >DecryptedMessage</a></li></ul></div> + <h1 id="dev_page_title">DecryptedMessage</h1> - <div id="dev_page_content"><p>Contains info on a confirmation code message sent via Telegram.</p> -<p>You can force resending the message via SMS by invoking the method <a href="/method/auth.sendSms">auth.sendSms</a>.</p> + <div id="dev_page_content"><p>Object describes the contents of an encrypted message.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -53,41 +52,19 @@ </li> </ul> </div> -<pre class="page_scheme"><code>Constructor schema is available as of layer 50. <a href="?layer=50">Switch »</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>phone_registered</strong></td> -<td style="text-align: center;"><a href="/type/Bool">Bool</a></td> -<td>The given number corresponds to a registered Telegram user</td> -</tr> -<tr> -<td><strong>phone_code_hash</strong></td> -<td style="text-align: center;"><a href="/type/string">string</a></td> -<td>Message identifier</td> -</tr> -<tr> -<td><strong>send_call_timeout</strong></td> -<td style="text-align: center;"><a href="/type/int">int</a></td> -<td>Delay in seconds before calling <a href="/method/auth.sendCall">auth.sendCall</a></td> -</tr> -<tr> -<td><strong>is_password</strong></td> -<td style="text-align: center;"><a href="/type/Bool">Bool</a></td> -<td>The sent code is a text password</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/auth.SentCode">auth.SentCode</a></p></div> +<pre class="page_scheme"><code>===8=== +<a href="/constructor/decryptedMessage" >decryptedMessage</a>#1f814f1f random_id:<a href="/type/long" >long</a> random_bytes:<a href="/type/bytes" >bytes</a> message:<a href="/type/string" >string</a> media:<a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a> = <a href="/type/DecryptedMessage" class="current_page_link" >DecryptedMessage</a>; +<a href="/constructor/decryptedMessageService" >decryptedMessageService</a>#aa48327d random_id:<a href="/type/long" >long</a> random_bytes:<a href="/type/bytes" >bytes</a> action:<a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a> = <a href="/type/DecryptedMessage" class="current_page_link" >DecryptedMessage</a>; + +===17=== +<a href="/constructor/decryptedMessage" >decryptedMessage</a>#204d3878 random_id:<a href="/type/long" >long</a> ttl:<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> media:<a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a> = <a href="/type/DecryptedMessage" class="current_page_link" >DecryptedMessage</a>; +<a href="/constructor/decryptedMessageService" >decryptedMessageService</a>#73164160 random_id:<a href="/type/long" >long</a> action:<a href="/type/DecryptedMessageAction" >DecryptedMessageAction</a> = <a href="/type/DecryptedMessage" class="current_page_link" >DecryptedMessage</a>; + +===45=== +<a href="/constructor/decryptedMessage" >decryptedMessage</a>#36b091de flags:<a href="/type/%23" >#</a> random_id:<a href="/type/long" >long</a> ttl:<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> media:flags.9?<a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> via_bot_name:flags.11?<a href="/type/string" >string</a> reply_to_random_id:flags.3?<a href="/type/long" >long</a> = <a href="/type/DecryptedMessage" class="current_page_link" >DecryptedMessage</a>; + +===73=== +<a href="/constructor/decryptedMessage" >decryptedMessage</a>#91cc4674 flags:<a href="/type/%23" >#</a> no_webpage:flags.1?true silent:flags.5?true random_id:<a href="/type/long" >long</a> ttl:<a href="/type/int" >int</a> message:<a href="/type/string" >string</a> media:flags.9?<a href="/type/DecryptedMessageMedia" >DecryptedMessageMedia</a> entities:flags.7?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> via_bot_name:flags.11?<a href="/type/string" >string</a> reply_to_random_id:flags.3?<a href="/type/long" >long</a> grouped_id:flags.17?<a href="/type/long" >long</a> = <a href="/type/DecryptedMessage" class="current_page_link" >DecryptedMessage</a>;</code></pre></p></div> </div> diff --git a/data/corefork.telegram.org/type/FileHash.html b/data/corefork.telegram.org/type/FileHash.html deleted file mode 100644 index 5c55165dee..0000000000 --- a/data/corefork.telegram.org/type/FileHash.html +++ /dev/null @@ -1,143 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>FileHash</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Hash of an uploaded file, to be checked for validity after download"> - <meta property="og:title" content="FileHash"> - <meta property="og:image" content=""> - <meta property="og:description" content="Hash of an uploaded file, to be checked for validity after download"> - <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?215" 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="/type/FileHash" >FileHash</a></li></ul></div> - <h1 id="dev_page_title">FileHash</h1> - - <div id="dev_page_content"><p>Hash of an uploaded file, to be checked for validity after download</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/fileHash" >fileHash</a>#6242c773 offset:<a href="/type/int" >int</a> limit:<a href="/type/int" >int</a> hash:<a href="/type/bytes" >bytes</a> = <a href="/type/FileHash" class="current_page_link" >FileHash</a>;</code></pre></p> -<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> -<table class="table"> -<thead> -<tr> -<th>Constructor</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/constructor/fileHash">fileHash</a></td> -<td>SHA256 Hash of an uploaded file, to be checked for validity after download</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/type/InputCheckPasswordSRP.html b/data/corefork.telegram.org/type/InputCheckPasswordSRP.html new file mode 100644 index 0000000000..28b8dde02b --- /dev/null +++ b/data/corefork.telegram.org/type/InputCheckPasswordSRP.html @@ -0,0 +1,151 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>InputCheckPasswordSRP</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Constructors for checking the validity of a 2FA SRP password"> + <meta property="og:title" content="InputCheckPasswordSRP"> + <meta property="og:image" content=""> + <meta property="og:description" content="Constructors for checking the validity of a 2FA SRP 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?215" 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="/type/InputCheckPasswordSRP" >InputCheckPasswordSRP</a></li></ul></div> + <h1 id="dev_page_title">InputCheckPasswordSRP</h1> + + <div id="dev_page_content"><p>Constructors for checking the validity of a <a href="/api/srp">2FA SRP password</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/inputCheckPasswordEmpty" >inputCheckPasswordEmpty</a>#9880f658 = <a href="/type/InputCheckPasswordSRP" class="current_page_link" >InputCheckPasswordSRP</a>; +<a href="/constructor/inputCheckPasswordSRP" >inputCheckPasswordSRP</a>#d27ff082 srp_id:<a href="/type/long" >long</a> A:<a href="/type/bytes" >bytes</a> M1:<a href="/type/bytes" >bytes</a> = <a href="/type/InputCheckPasswordSRP" class="current_page_link" >InputCheckPasswordSRP</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/inputCheckPasswordEmpty">inputCheckPasswordEmpty</a></td> +<td>There is no password</td> +</tr> +<tr> +<td><a href="/constructor/inputCheckPasswordSRP">inputCheckPasswordSRP</a></td> +<td>Constructor for checking the validity of a 2FA SRP password (see <a href="/api/srp">SRP</a>)</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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> + +</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/type/auth.SentCodeType b/data/corefork.telegram.org/type/InputPeer.html similarity index 73% rename from data/corefork.telegram.org/type/auth.SentCodeType rename to data/corefork.telegram.org/type/InputPeer.html index af0789d0d4..b4d03a4a8d 100644 --- a/data/corefork.telegram.org/type/auth.SentCodeType +++ b/data/corefork.telegram.org/type/InputPeer.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>auth.SentCodeType</title> + <title>InputPeer</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Type of the verification code that was sent"> - <meta property="og:title" content="auth.SentCodeType"> + <meta property="description" content="Peer"> + <meta property="og:title" content="InputPeer"> <meta property="og:image" content=""> - <meta property="og:description" content="Type of the verification code that was sent"> + <meta property="og:description" content="Peer"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/auth.SentCodeType" >auth.SentCodeType</a></li></ul></div> - <h1 id="dev_page_title">auth.SentCodeType</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/InputPeer" >InputPeer</a></li></ul></div> + <h1 id="dev_page_title">InputPeer</h1> - <div id="dev_page_content"><p>Type of the verification code that was sent</p> + <div id="dev_page_content"><p>Peer</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,10 +52,13 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/auth.sentCodeTypeApp" >auth.sentCodeTypeApp</a>#3dbb5986 length:<a href="/type/int" >int</a> = <a href="/type/auth.SentCodeType" class="current_page_link" >auth.SentCodeType</a>; -<a href="/constructor/auth.sentCodeTypeSms" >auth.sentCodeTypeSms</a>#c000bba2 length:<a href="/type/int" >int</a> = <a href="/type/auth.SentCodeType" class="current_page_link" >auth.SentCodeType</a>; -<a href="/constructor/auth.sentCodeTypeCall" >auth.sentCodeTypeCall</a>#5353e5a7 length:<a href="/type/int" >int</a> = <a href="/type/auth.SentCodeType" class="current_page_link" >auth.SentCodeType</a>; -<a href="/constructor/auth.sentCodeTypeFlashCall" >auth.sentCodeTypeFlashCall</a>#ab03c6d9 pattern:<a href="/type/string" >string</a> = <a href="/type/auth.SentCodeType" class="current_page_link" >auth.SentCodeType</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/inputPeerEmpty" >inputPeerEmpty</a>#7f3b18ea = <a href="/type/InputPeer" class="current_page_link" >InputPeer</a>; +<a href="/constructor/inputPeerSelf" >inputPeerSelf</a>#7da07ec9 = <a href="/type/InputPeer" class="current_page_link" >InputPeer</a>; +<a href="/constructor/inputPeerChat" >inputPeerChat</a>#35a95cb9 chat_id:<a href="/type/long" >long</a> = <a href="/type/InputPeer" class="current_page_link" >InputPeer</a>; +<a href="/constructor/inputPeerUser" >inputPeerUser</a>#dde8a54c user_id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputPeer" class="current_page_link" >InputPeer</a>; +<a href="/constructor/inputPeerChannel" >inputPeerChannel</a>#27bcbbfc channel_id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> = <a href="/type/InputPeer" class="current_page_link" >InputPeer</a>; +<a href="/constructor/inputPeerUserFromMessage" >inputPeerUserFromMessage</a>#a87b0a1c peer:<a href="/type/InputPeer" class="current_page_link" >InputPeer</a> msg_id:<a href="/type/int" >int</a> user_id:<a href="/type/long" >long</a> = <a href="/type/InputPeer" class="current_page_link" >InputPeer</a>; +<a href="/constructor/inputPeerChannelFromMessage" >inputPeerChannelFromMessage</a>#bd2a0840 peer:<a href="/type/InputPeer" class="current_page_link" >InputPeer</a> msg_id:<a href="/type/int" >int</a> channel_id:<a href="/type/long" >long</a> = <a href="/type/InputPeer" class="current_page_link" >InputPeer</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -66,20 +69,32 @@ </thead> <tbody> <tr> -<td><a href="/constructor/auth.sentCodeTypeApp">auth.sentCodeTypeApp</a></td> -<td>The code was sent through the telegram app</td> +<td><a href="/constructor/inputPeerEmpty">inputPeerEmpty</a></td> +<td>An empty constructor, no user or chat is defined.</td> </tr> <tr> -<td><a href="/constructor/auth.sentCodeTypeSms">auth.sentCodeTypeSms</a></td> -<td>The code was sent via SMS</td> +<td><a href="/constructor/inputPeerSelf">inputPeerSelf</a></td> +<td>Defines the current user.</td> </tr> <tr> -<td><a href="/constructor/auth.sentCodeTypeCall">auth.sentCodeTypeCall</a></td> -<td>The code will be sent via a phone call: a synthesized voice will tell the user which verification code to input.</td> +<td><a href="/constructor/inputPeerChat">inputPeerChat</a></td> +<td>Defines a chat for further interaction.</td> </tr> <tr> -<td><a href="/constructor/auth.sentCodeTypeFlashCall">auth.sentCodeTypeFlashCall</a></td> -<td>The code will be sent via a flash phone call, that will be closed immediately. The phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern.</td> +<td><a href="/constructor/inputPeerUser">inputPeerUser</a></td> +<td>Defines a user for further interaction.</td> +</tr> +<tr> +<td><a href="/constructor/inputPeerChannel">inputPeerChannel</a></td> +<td>Defines a channel for further interaction.</td> +</tr> +<tr> +<td><a href="/constructor/inputPeerUserFromMessage">inputPeerUserFromMessage</a></td> +<td>Defines a <a href="/api/min">min</a> user that was seen in a certain message of a certain chat.</td> +</tr> +<tr> +<td><a href="/constructor/inputPeerChannelFromMessage">inputPeerChannelFromMessage</a></td> +<td>Defines a <a href="/api/min">min</a> channel that was seen in a certain message of a certain chat.</td> </tr> </tbody> </table></div> diff --git a/data/corefork.telegram.org/type/MessageMedia.html b/data/corefork.telegram.org/type/MessageMedia.html deleted file mode 100644 index 6eb8d1e530..0000000000 --- a/data/corefork.telegram.org/type/MessageMedia.html +++ /dev/null @@ -1,232 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>MessageMedia</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Media"> - <meta property="og:title" content="MessageMedia"> - <meta property="og:image" content=""> - <meta property="og:description" content="Media"> - <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?215" 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="/type/MessageMedia" >MessageMedia</a></li></ul></div> - <h1 id="dev_page_title">MessageMedia</h1> - - <div id="dev_page_content"><p>Media</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/messageMediaEmpty" >messageMediaEmpty</a>#3ded6320 = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaPhoto" >messageMediaPhoto</a>#695150d7 flags:<a href="/type/%23" >#</a> photo:flags.0?<a href="/type/Photo" >Photo</a> ttl_seconds:flags.2?<a href="/type/int" >int</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaGeo" >messageMediaGeo</a>#56e0d474 geo:<a href="/type/GeoPoint" >GeoPoint</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaContact" >messageMediaContact</a>#70322949 phone_number:<a href="/type/string" >string</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> vcard:<a href="/type/string" >string</a> user_id:<a href="/type/long" >long</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaUnsupported" >messageMediaUnsupported</a>#9f84f49e = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaDocument" >messageMediaDocument</a>#9cb070d7 flags:<a href="/type/%23" >#</a> document:flags.0?<a href="/type/Document" >Document</a> ttl_seconds:flags.2?<a href="/type/int" >int</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaWebPage" >messageMediaWebPage</a>#a32dd600 webpage:<a href="/type/WebPage" >WebPage</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaVenue" >messageMediaVenue</a>#2ec0533f geo:<a href="/type/GeoPoint" >GeoPoint</a> title:<a href="/type/string" >string</a> address:<a href="/type/string" >string</a> provider:<a href="/type/string" >string</a> venue_id:<a href="/type/string" >string</a> venue_type:<a href="/type/string" >string</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaGame" >messageMediaGame</a>#fdb19008 game:<a href="/type/Game" >Game</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaInvoice" >messageMediaInvoice</a>#84551347 flags:<a href="/type/%23" >#</a> shipping_address_requested:flags.1?true test:flags.3?true title:<a href="/type/string" >string</a> description:<a href="/type/string" >string</a> photo:flags.0?<a href="/type/WebDocument" >WebDocument</a> receipt_msg_id:flags.2?<a href="/type/int" >int</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> start_param:<a href="/type/string" >string</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaGeoLive" >messageMediaGeoLive</a>#b940c666 flags:<a href="/type/%23" >#</a> geo:<a href="/type/GeoPoint" >GeoPoint</a> heading:flags.0?<a href="/type/int" >int</a> period:<a href="/type/int" >int</a> proximity_notification_radius:flags.1?<a href="/type/int" >int</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaPoll" >messageMediaPoll</a>#4bd6e798 poll:<a href="/type/Poll" >Poll</a> results:<a href="/type/PollResults" >PollResults</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/constructor/messageMediaDice" >messageMediaDice</a>#3f7ee58b value:<a href="/type/int" >int</a> emoticon:<a href="/type/string" >string</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; - ----functions--- - -<a href="/method/messages.getWebPagePreview" >messages.getWebPagePreview</a>#8b68b0cc flags:<a href="/type/%23" >#</a> message:<a href="/type/string" >string</a> entities:flags.3?<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/method/messages.uploadMedia" >messages.uploadMedia</a>#519bc2b1 peer:<a href="/type/InputPeer" >InputPeer</a> media:<a href="/type/InputMedia" >InputMedia</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>; -<a href="/method/messages.uploadImportedMedia" >messages.uploadImportedMedia</a>#2a862092 peer:<a href="/type/InputPeer" >InputPeer</a> import_id:<a href="/type/long" >long</a> file_name:<a href="/type/string" >string</a> media:<a href="/type/InputMedia" >InputMedia</a> = <a href="/type/MessageMedia" class="current_page_link" >MessageMedia</a>;</code></pre></p> -<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> -<table class="table"> -<thead> -<tr> -<th>Constructor</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/constructor/messageMediaEmpty">messageMediaEmpty</a></td> -<td>Empty constructor.</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaPhoto">messageMediaPhoto</a></td> -<td>Attached photo.</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaGeo">messageMediaGeo</a></td> -<td>Attached map.</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaContact">messageMediaContact</a></td> -<td>Attached contact.</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaUnsupported">messageMediaUnsupported</a></td> -<td>Current version of the client does not support this media type.</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaDocument">messageMediaDocument</a></td> -<td>Document (video, audio, voice, sticker, any media type except photo)</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaWebPage">messageMediaWebPage</a></td> -<td>Preview of webpage</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaVenue">messageMediaVenue</a></td> -<td>Venue</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaGame">messageMediaGame</a></td> -<td>Telegram game</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaInvoice">messageMediaInvoice</a></td> -<td>Invoice</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaGeoLive">messageMediaGeoLive</a></td> -<td>Indicates a live geolocation</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaPoll">messageMediaPoll</a></td> -<td>Poll</td> -</tr> -<tr> -<td><a href="/constructor/messageMediaDice">messageMediaDice</a></td> -<td>Dice</td> -</tr> -</tbody> -</table> -<h3><a class="anchor" href="#methods" id="methods" name="methods"><i class="anchor-icon"></i></a>Methods</h3> -<table class="table"> -<thead> -<tr> -<th>Method</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/method/messages.getWebPagePreview">messages.getWebPagePreview</a></td> -<td>Get preview of webpage</td> -</tr> -<tr> -<td><a href="/method/messages.uploadMedia">messages.uploadMedia</a></td> -<td>Upload a file and associate it to a chat (without actually sending it to the chat)</td> -</tr> -<tr> -<td><a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a></td> -<td>Upload a media file associated with an <a href="/api/import">imported chat</a>.</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/type/InputGeoPoint.html b/data/corefork.telegram.org/type/Peer.html similarity index 87% rename from data/corefork.telegram.org/type/InputGeoPoint.html rename to data/corefork.telegram.org/type/Peer.html index 78e0491df7..06198d93cb 100644 --- a/data/corefork.telegram.org/type/InputGeoPoint.html +++ b/data/corefork.telegram.org/type/Peer.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>InputGeoPoint</title> + <title>Peer</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Defines a GeoPoint."> - <meta property="og:title" content="InputGeoPoint"> + <meta property="description" content="Chat partner or group."> + <meta property="og:title" content="Peer"> <meta property="og:image" content=""> - <meta property="og:description" content="Defines a GeoPoint."> + <meta property="og:description" content="Chat partner or group."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/InputGeoPoint" >InputGeoPoint</a></li></ul></div> - <h1 id="dev_page_title">InputGeoPoint</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/Peer" >Peer</a></li></ul></div> + <h1 id="dev_page_title">Peer</h1> - <div id="dev_page_content"><p>Defines a GeoPoint.</p> + <div id="dev_page_content"><p>Chat partner or group.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,8 +52,9 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/inputGeoPointEmpty" >inputGeoPointEmpty</a>#e4c123d6 = <a href="/type/InputGeoPoint" class="current_page_link" >InputGeoPoint</a>; -<a href="/constructor/inputGeoPoint" >inputGeoPoint</a>#48222faf flags:<a href="/type/%23" >#</a> lat:<a href="/type/double" >double</a> long:<a href="/type/double" >double</a> accuracy_radius:flags.0?<a href="/type/int" >int</a> = <a href="/type/InputGeoPoint" class="current_page_link" >InputGeoPoint</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/peerUser" >peerUser</a>#59511722 user_id:<a href="/type/long" >long</a> = <a href="/type/Peer" class="current_page_link" >Peer</a>; +<a href="/constructor/peerChat" >peerChat</a>#36c6019a chat_id:<a href="/type/long" >long</a> = <a href="/type/Peer" class="current_page_link" >Peer</a>; +<a href="/constructor/peerChannel" >peerChannel</a>#a2a5371e channel_id:<a href="/type/long" >long</a> = <a href="/type/Peer" class="current_page_link" >Peer</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -64,12 +65,16 @@ </thead> <tbody> <tr> -<td><a href="/constructor/inputGeoPointEmpty">inputGeoPointEmpty</a></td> -<td>Empty GeoPoint constructor.</td> +<td><a href="/constructor/peerUser">peerUser</a></td> +<td>Chat partner</td> </tr> <tr> -<td><a href="/constructor/inputGeoPoint">inputGeoPoint</a></td> -<td>Defines a GeoPoint by its coordinates.</td> +<td><a href="/constructor/peerChat">peerChat</a></td> +<td>Group.</td> +</tr> +<tr> +<td><a href="/constructor/peerChannel">peerChannel</a></td> +<td>Channel/supergroup</td> </tr> </tbody> </table></div> diff --git a/data/corefork.telegram.org/type/PhoneConnection.html b/data/corefork.telegram.org/type/PhoneConnection.html deleted file mode 100644 index 53d56afd6d..0000000000 --- a/data/corefork.telegram.org/type/PhoneConnection.html +++ /dev/null @@ -1,148 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>PhoneConnection</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Phone call connection"> - <meta property="og:title" content="PhoneConnection"> - <meta property="og:image" content=""> - <meta property="og:description" content="Phone call connection"> - <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?215" 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="/type/PhoneConnection" >PhoneConnection</a></li></ul></div> - <h1 id="dev_page_title">PhoneConnection</h1> - - <div id="dev_page_content"><p>Phone call connection</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/phoneConnection" >phoneConnection</a>#9d4c17c0 id:<a href="/type/long" >long</a> ip:<a href="/type/string" >string</a> ipv6:<a href="/type/string" >string</a> port:<a href="/type/int" >int</a> peer_tag:<a href="/type/bytes" >bytes</a> = <a href="/type/PhoneConnection" class="current_page_link" >PhoneConnection</a>; -<a href="/constructor/phoneConnectionWebrtc" >phoneConnectionWebrtc</a>#635fe375 flags:<a href="/type/%23" >#</a> turn:flags.0?true stun:flags.1?true id:<a href="/type/long" >long</a> ip:<a href="/type/string" >string</a> ipv6:<a href="/type/string" >string</a> port:<a href="/type/int" >int</a> username:<a href="/type/string" >string</a> password:<a href="/type/string" >string</a> = <a href="/type/PhoneConnection" class="current_page_link" >PhoneConnection</a>;</code></pre></p> -<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> -<table class="table"> -<thead> -<tr> -<th>Constructor</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/constructor/phoneConnection">phoneConnection</a></td> -<td>Identifies an endpoint that can be used to connect to the other user in a phone call</td> -</tr> -<tr> -<td><a href="/constructor/phoneConnectionWebrtc">phoneConnectionWebrtc</a></td> -<td>WebRTC connection parameters</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/type/ChatAdminRights.html b/data/corefork.telegram.org/type/SecureData.html similarity index 84% rename from data/corefork.telegram.org/type/ChatAdminRights.html rename to data/corefork.telegram.org/type/SecureData.html index 480f8b3318..56f6cebe55 100644 --- a/data/corefork.telegram.org/type/ChatAdminRights.html +++ b/data/corefork.telegram.org/type/SecureData.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>ChatAdminRights</title> + <title>SecureData</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Represents the rights of an admin in a channel/supergroup."> - <meta property="og:title" content="ChatAdminRights"> + <meta property="description" content="Secure passport data, for more info see the passport docs »"> + <meta property="og:title" content="SecureData"> <meta property="og:image" content=""> - <meta property="og:description" content="Represents the rights of an admin in a channel/supergroup."> + <meta property="og:description" content="Secure passport data, for more info see the passport docs »"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/ChatAdminRights" >ChatAdminRights</a></li></ul></div> - <h1 id="dev_page_title">ChatAdminRights</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/SecureData" >SecureData</a></li></ul></div> + <h1 id="dev_page_title">SecureData</h1> - <div id="dev_page_content"><p>Represents the rights of an admin in a <a href="/api/channel">channel/supergroup</a>.</p> + <div id="dev_page_content"><p>Secure <a href="/passport">passport</a> data, for more info <a href="/passport/encryption#securedata">see the passport docs »</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/chatAdminRights" >chatAdminRights</a>#5fb224d5 flags:<a href="/type/%23" >#</a> change_info:flags.0?true post_messages:flags.1?true edit_messages:flags.2?true delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true manage_call:flags.11?true other:flags.12?true = <a href="/type/ChatAdminRights" class="current_page_link" >ChatAdminRights</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/secureData" >secureData</a>#8aeabec3 data:<a href="/type/bytes" >bytes</a> data_hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureData" class="current_page_link" >SecureData</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -63,14 +63,14 @@ </thead> <tbody> <tr> -<td><a href="/constructor/chatAdminRights">chatAdminRights</a></td> -<td>Represents the rights of an admin in a <a href="/api/channel">channel/supergroup</a>.</td> +<td><a href="/constructor/secureData">secureData</a></td> +<td>Secure data</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="#channels" id="channels" name="channels"><i class="anchor-icon"></i></a><a href="/api/channel">Channels</a></h4> -<p>How to handle channels, supergroups, groups, and what's the difference between them.</p></div> +<h4><a class="anchor" href="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4> +<h4><a class="anchor" href="#telegram-passport-encryption-details" id="telegram-passport-encryption-details" name="telegram-passport-encryption-details"><i class="anchor-icon"></i></a><a href="/passport/encryption">Telegram Passport Encryption Details</a></h4></div> </div> diff --git a/data/corefork.telegram.org/type/SecureFile.html b/data/corefork.telegram.org/type/SecureFile.html new file mode 100644 index 0000000000..c156384c43 --- /dev/null +++ b/data/corefork.telegram.org/type/SecureFile.html @@ -0,0 +1,151 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>SecureFile</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Secure passport file, for more info see the passport docs »"> + <meta property="og:title" content="SecureFile"> + <meta property="og:image" content=""> + <meta property="og:description" content="Secure passport file, for more info see the passport docs »"> + <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?215" 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="/type/SecureFile" >SecureFile</a></li></ul></div> + <h1 id="dev_page_title">SecureFile</h1> + + <div id="dev_page_content"><p>Secure <a href="/passport">passport</a> file, for more info <a href="/passport/encryption#inputsecurefile">see the passport docs »</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/secureFileEmpty" >secureFileEmpty</a>#64199744 = <a href="/type/SecureFile" class="current_page_link" >SecureFile</a>; +<a href="/constructor/secureFile" >secureFile</a>#e0277a62 id:<a href="/type/long" >long</a> access_hash:<a href="/type/long" >long</a> size:<a href="/type/int" >int</a> dc_id:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> file_hash:<a href="/type/bytes" >bytes</a> secret:<a href="/type/bytes" >bytes</a> = <a href="/type/SecureFile" class="current_page_link" >SecureFile</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/secureFileEmpty">secureFileEmpty</a></td> +<td>Empty constructor</td> +</tr> +<tr> +<td><a href="/constructor/secureFile">secureFile</a></td> +<td>Secure file</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="#telegram-passport-manual" id="telegram-passport-manual" name="telegram-passport-manual"><i class="anchor-icon"></i></a><a href="/passport">Telegram Passport Manual</a></h4> +<h4><a class="anchor" href="#telegram-passport-encryption-details" id="telegram-passport-encryption-details" name="telegram-passport-encryption-details"><i class="anchor-icon"></i></a><a href="/passport/encryption">Telegram Passport Encryption Details</a></h4></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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/type/auth.CodeType b/data/corefork.telegram.org/type/SecurePlainData.html similarity index 81% rename from data/corefork.telegram.org/type/auth.CodeType rename to data/corefork.telegram.org/type/SecurePlainData.html index 3b7bee7a4c..f2b6b5295e 100644 --- a/data/corefork.telegram.org/type/auth.CodeType +++ b/data/corefork.telegram.org/type/SecurePlainData.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>auth.CodeType</title> + <title>SecurePlainData</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Type of verification code that will be sent next if you call the resendCode method"> - <meta property="og:title" content="auth.CodeType"> + <meta property="description" content="Plaintext verified passport data."> + <meta property="og:title" content="SecurePlainData"> <meta property="og:image" content=""> - <meta property="og:description" content="Type of verification code that will be sent next if you call the resendCode method"> + <meta property="og:description" content="Plaintext verified passport data."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/auth.CodeType" >auth.CodeType</a></li></ul></div> - <h1 id="dev_page_title">auth.CodeType</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/SecurePlainData" >SecurePlainData</a></li></ul></div> + <h1 id="dev_page_title">SecurePlainData</h1> - <div id="dev_page_content"><p>Type of verification code that will be sent next if you call the resendCode method</p> + <div id="dev_page_content"><p>Plaintext verified <a href="/passport/encryption#secureplaindata">passport data</a>.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,9 +52,8 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/auth.codeTypeSms" >auth.codeTypeSms</a>#72a3158c = <a href="/type/auth.CodeType" class="current_page_link" >auth.CodeType</a>; -<a href="/constructor/auth.codeTypeCall" >auth.codeTypeCall</a>#741cd3e3 = <a href="/type/auth.CodeType" class="current_page_link" >auth.CodeType</a>; -<a href="/constructor/auth.codeTypeFlashCall" >auth.codeTypeFlashCall</a>#226ccefb = <a href="/type/auth.CodeType" class="current_page_link" >auth.CodeType</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/securePlainPhone" >securePlainPhone</a>#7d6099dd phone:<a href="/type/string" >string</a> = <a href="/type/SecurePlainData" class="current_page_link" >SecurePlainData</a>; +<a href="/constructor/securePlainEmail" >securePlainEmail</a>#21ec5a5f email:<a href="/type/string" >string</a> = <a href="/type/SecurePlainData" class="current_page_link" >SecurePlainData</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -65,19 +64,17 @@ </thead> <tbody> <tr> -<td><a href="/constructor/auth.codeTypeSms">auth.codeTypeSms</a></td> -<td>Type of verification code that will be sent next if you call the resendCode method: SMS code</td> +<td><a href="/constructor/securePlainPhone">securePlainPhone</a></td> +<td>Phone number to use in <a href="/passport">telegram passport</a>: <a href="/passport/encryption#secureplaindata">it must be verified, first »</a>.</td> </tr> <tr> -<td><a href="/constructor/auth.codeTypeCall">auth.codeTypeCall</a></td> -<td>Type of verification code that will be sent next if you call the resendCode method: SMS code</td> -</tr> -<tr> -<td><a href="/constructor/auth.codeTypeFlashCall">auth.codeTypeFlashCall</a></td> -<td>Type of verification code that will be sent next if you call the resendCode method: SMS code</td> +<td><a href="/constructor/securePlainEmail">securePlainEmail</a></td> +<td>Email address to use in <a href="/passport">telegram passport</a>: <a href="/passport/encryption#secureplaindata">it must be verified, first »</a>.</td> </tr> </tbody> -</table></div> +</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="#telegram-passport-encryption-details" id="telegram-passport-encryption-details" name="telegram-passport-encryption-details"><i class="anchor-icon"></i></a><a href="/passport/encryption">Telegram Passport Encryption Details</a></h4></div> </div> diff --git a/data/corefork.telegram.org/type/WebPage.html b/data/corefork.telegram.org/type/SecureValueType.html similarity index 64% rename from data/corefork.telegram.org/type/WebPage.html rename to data/corefork.telegram.org/type/SecureValueType.html index 4189e75ff0..ffdd92d03c 100644 --- a/data/corefork.telegram.org/type/WebPage.html +++ b/data/corefork.telegram.org/type/SecureValueType.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>WebPage</title> + <title>SecureValueType</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Instant View webpage preview"> - <meta property="og:title" content="WebPage"> + <meta property="description" content="Secure value type"> + <meta property="og:title" content="SecureValueType"> <meta property="og:image" content=""> - <meta property="og:description" content="Instant View webpage preview"> + <meta property="og:description" content="Secure value type"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/WebPage" >WebPage</a></li></ul></div> - <h1 id="dev_page_title">WebPage</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/SecureValueType" >SecureValueType</a></li></ul></div> + <h1 id="dev_page_title">SecureValueType</h1> - <div id="dev_page_content"><p><a href="https://instantview.telegram.org">Instant View</a> webpage preview</p> + <div id="dev_page_content"><p>Secure value type</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,14 +52,19 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/webPageEmpty" >webPageEmpty</a>#eb1477e8 id:<a href="/type/long" >long</a> = <a href="/type/WebPage" class="current_page_link" >WebPage</a>; -<a href="/constructor/webPagePending" >webPagePending</a>#c586da1c id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> = <a href="/type/WebPage" class="current_page_link" >WebPage</a>; -<a href="/constructor/webPage" >webPage</a>#e89c45b2 flags:<a href="/type/%23" >#</a> id:<a href="/type/long" >long</a> url:<a href="/type/string" >string</a> display_url:<a href="/type/string" >string</a> hash:<a href="/type/int" >int</a> type:flags.0?<a href="/type/string" >string</a> site_name:flags.1?<a href="/type/string" >string</a> title:flags.2?<a href="/type/string" >string</a> description:flags.3?<a href="/type/string" >string</a> photo:flags.4?<a href="/type/Photo" >Photo</a> embed_url:flags.5?<a href="/type/string" >string</a> embed_type:flags.5?<a href="/type/string" >string</a> embed_width:flags.6?<a href="/type/int" >int</a> embed_height:flags.6?<a href="/type/int" >int</a> duration:flags.7?<a href="/type/int" >int</a> author:flags.8?<a href="/type/string" >string</a> document:flags.9?<a href="/type/Document" >Document</a> cached_page:flags.10?<a href="/type/Page" >Page</a> attributes:flags.12?<a href="/type/Vector%20t" >Vector</a><<a href="/type/WebPageAttribute" >WebPageAttribute</a>> = <a href="/type/WebPage" class="current_page_link" >WebPage</a>; -<a href="/constructor/webPageNotModified" >webPageNotModified</a>#7311ca11 flags:<a href="/type/%23" >#</a> cached_page_views:flags.0?<a href="/type/int" >int</a> = <a href="/type/WebPage" class="current_page_link" >WebPage</a>; - ----functions--- - -<a href="/method/messages.getWebPage" >messages.getWebPage</a>#32ca8f91 url:<a href="/type/string" >string</a> hash:<a href="/type/int" >int</a> = <a href="/type/WebPage" class="current_page_link" >WebPage</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/secureValueTypePersonalDetails" >secureValueTypePersonalDetails</a>#9d2a81e3 = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypePassport" >secureValueTypePassport</a>#3dac6a00 = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypeDriverLicense" >secureValueTypeDriverLicense</a>#6e425c4 = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypeIdentityCard" >secureValueTypeIdentityCard</a>#a0d0744b = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypeInternalPassport" >secureValueTypeInternalPassport</a>#99a48f23 = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypeAddress" >secureValueTypeAddress</a>#cbe31e26 = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypeUtilityBill" >secureValueTypeUtilityBill</a>#fc36954e = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypeBankStatement" >secureValueTypeBankStatement</a>#89137c0d = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypeRentalAgreement" >secureValueTypeRentalAgreement</a>#8b883488 = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypePassportRegistration" >secureValueTypePassportRegistration</a>#99e3806a = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypeTemporaryRegistration" >secureValueTypeTemporaryRegistration</a>#ea02ec33 = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypePhone" >secureValueTypePhone</a>#b320aadb = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>; +<a href="/constructor/secureValueTypeEmail" >secureValueTypeEmail</a>#8e3ca7ee = <a href="/type/SecureValueType" class="current_page_link" >SecureValueType</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -70,35 +75,56 @@ </thead> <tbody> <tr> -<td><a href="/constructor/webPageEmpty">webPageEmpty</a></td> -<td>No preview is available for the webpage</td> +<td><a href="/constructor/secureValueTypePersonalDetails">secureValueTypePersonalDetails</a></td> +<td>Personal details</td> </tr> <tr> -<td><a href="/constructor/webPagePending">webPagePending</a></td> -<td>A preview of the webpage is currently being generated</td> +<td><a href="/constructor/secureValueTypePassport">secureValueTypePassport</a></td> +<td>Passport</td> </tr> <tr> -<td><a href="/constructor/webPage">webPage</a></td> -<td>Webpage preview</td> +<td><a href="/constructor/secureValueTypeDriverLicense">secureValueTypeDriverLicense</a></td> +<td>Driver's license</td> </tr> <tr> -<td><a href="/constructor/webPageNotModified">webPageNotModified</a></td> -<td>The preview of the webpage hasn't changed</td> +<td><a href="/constructor/secureValueTypeIdentityCard">secureValueTypeIdentityCard</a></td> +<td>Identity card</td> </tr> -</tbody> -</table> -<h3><a class="anchor" href="#methods" id="methods" name="methods"><i class="anchor-icon"></i></a>Methods</h3> -<table class="table"> -<thead> <tr> -<th>Method</th> -<th>Description</th> +<td><a href="/constructor/secureValueTypeInternalPassport">secureValueTypeInternalPassport</a></td> +<td>Internal <a href="/passport">passport</a></td> </tr> -</thead> -<tbody> <tr> -<td><a href="/method/messages.getWebPage">messages.getWebPage</a></td> -<td>Get <a href="https://instantview.telegram.org">instant view</a> page</td> +<td><a href="/constructor/secureValueTypeAddress">secureValueTypeAddress</a></td> +<td>Address</td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeUtilityBill">secureValueTypeUtilityBill</a></td> +<td>Utility bill</td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeBankStatement">secureValueTypeBankStatement</a></td> +<td>Bank statement</td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeRentalAgreement">secureValueTypeRentalAgreement</a></td> +<td>Rental agreement</td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePassportRegistration">secureValueTypePassportRegistration</a></td> +<td>Internal registration <a href="/passport">passport</a></td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeTemporaryRegistration">secureValueTypeTemporaryRegistration</a></td> +<td>Temporary registration</td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypePhone">secureValueTypePhone</a></td> +<td>Phone</td> +</tr> +<tr> +<td><a href="/constructor/secureValueTypeEmail">secureValueTypeEmail</a></td> +<td>Email</td> </tr> </tbody> </table></div> diff --git a/data/corefork.telegram.org/type/TopPeerCategory.html b/data/corefork.telegram.org/type/TopPeerCategory.html new file mode 100644 index 0000000000..f55654cd57 --- /dev/null +++ b/data/corefork.telegram.org/type/TopPeerCategory.html @@ -0,0 +1,178 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>TopPeerCategory</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Top peer category"> + <meta property="og:title" content="TopPeerCategory"> + <meta property="og:image" content=""> + <meta property="og:description" content="Top peer category"> + <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?215" 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="/type/TopPeerCategory" >TopPeerCategory</a></li></ul></div> + <h1 id="dev_page_title">TopPeerCategory</h1> + + <div id="dev_page_content"><p>Top peer category</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/topPeerCategoryBotsPM" >topPeerCategoryBotsPM</a>#ab661b5b = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryBotsInline" >topPeerCategoryBotsInline</a>#148677e2 = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryCorrespondents" >topPeerCategoryCorrespondents</a>#637b7ed = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryGroups" >topPeerCategoryGroups</a>#bd17a14a = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryChannels" >topPeerCategoryChannels</a>#161d9628 = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryPhoneCalls" >topPeerCategoryPhoneCalls</a>#1e76a78c = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryForwardUsers" >topPeerCategoryForwardUsers</a>#a8406ca9 = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>; +<a href="/constructor/topPeerCategoryForwardChats" >topPeerCategoryForwardChats</a>#fbeec0f0 = <a href="/type/TopPeerCategory" class="current_page_link" >TopPeerCategory</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/topPeerCategoryBotsPM">topPeerCategoryBotsPM</a></td> +<td>Most used bots</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryBotsInline">topPeerCategoryBotsInline</a></td> +<td>Most used inline bots</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryCorrespondents">topPeerCategoryCorrespondents</a></td> +<td>Users we've chatted most frequently with</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryGroups">topPeerCategoryGroups</a></td> +<td>Often-opened groups and supergroups</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryChannels">topPeerCategoryChannels</a></td> +<td>Most frequently visited channels</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryPhoneCalls">topPeerCategoryPhoneCalls</a></td> +<td>Most frequently called users</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryForwardUsers">topPeerCategoryForwardUsers</a></td> +<td>Users to which the users often forwards messages to</td> +</tr> +<tr> +<td><a href="/constructor/topPeerCategoryForwardChats">topPeerCategoryForwardChats</a></td> +<td>Chats to which the users often forwards messages to</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/type/Update.html b/data/corefork.telegram.org/type/Update.html new file mode 100644 index 0000000000..710cf89e79 --- /dev/null +++ b/data/corefork.telegram.org/type/Update.html @@ -0,0 +1,603 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Update</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Object contains info on events occured."> + <meta property="og:title" content="Update"> + <meta property="og:image" content=""> + <meta property="og:description" content="Object contains info on events occured."> + <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?215" 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="/type/Update" >Update</a></li></ul></div> + <h1 id="dev_page_title">Update</h1> + + <div id="dev_page_content"><p>Object contains info on events occured.</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> + <li class="divider"></li> + <li><a href="/api/layers">More...</a></li> + </ul> + </li> + </ul> +</div> +<pre class="page_scheme"><code><a href="/constructor/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" class="current_page_link" >Update</a>; +<a href="/constructor/updateMessageID" >updateMessageID</a>#4e90bfd6 id:<a href="/type/int" >int</a> random_id:<a href="/type/long" >long</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDeleteMessages" >updateDeleteMessages</a>#a20db0e5 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserTyping" >updateUserTyping</a>#c01e857f user_id:<a href="/type/long" >long</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatUserTyping" >updateChatUserTyping</a>#83487af0 chat_id:<a href="/type/long" >long</a> from_id:<a href="/type/Peer" >Peer</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipants" >updateChatParticipants</a>#7761198 participants:<a href="/type/ChatParticipants" >ChatParticipants</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserStatus" >updateUserStatus</a>#e5bdf8de user_id:<a href="/type/long" >long</a> status:<a href="/type/UserStatus" >UserStatus</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserName" >updateUserName</a>#c3f202e0 user_id:<a href="/type/long" >long</a> first_name:<a href="/type/string" >string</a> last_name:<a href="/type/string" >string</a> username:<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserPhoto" >updateUserPhoto</a>#f227868c user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> photo:<a href="/type/UserProfilePhoto" >UserProfilePhoto</a> previous:<a href="/type/Bool" >Bool</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateNewEncryptedMessage" >updateNewEncryptedMessage</a>#12bcbd9a message:<a href="/type/EncryptedMessage" >EncryptedMessage</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEncryptedChatTyping" >updateEncryptedChatTyping</a>#1710f156 chat_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEncryption" >updateEncryption</a>#b4a2e88d chat:<a href="/type/EncryptedChat" >EncryptedChat</a> date:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEncryptedMessagesRead" >updateEncryptedMessagesRead</a>#38fe25b7 chat_id:<a href="/type/int" >int</a> max_date:<a href="/type/int" >int</a> date:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipantAdd" >updateChatParticipantAdd</a>#3dda5451 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> inviter_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipantDelete" >updateChatParticipantDelete</a>#e32f3d77 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDcOptions" >updateDcOptions</a>#8e5e9873 dc_options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/DcOption" >DcOption</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateNotifySettings" >updateNotifySettings</a>#bec268ef peer:<a href="/type/NotifyPeer" >NotifyPeer</a> notify_settings:<a href="/type/PeerNotifySettings" >PeerNotifySettings</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateServiceNotification" >updateServiceNotification</a>#ebe46819 flags:<a href="/type/%23" >#</a> popup:flags.0?true inbox_date:flags.1?<a href="/type/int" >int</a> type:<a href="/type/string" >string</a> message:<a href="/type/string" >string</a> media:<a href="/type/MessageMedia" >MessageMedia</a> entities:<a href="/type/Vector%20t" >Vector</a><<a href="/type/MessageEntity" >MessageEntity</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePrivacy" >updatePrivacy</a>#ee3b272a key:<a href="/type/PrivacyKey" >PrivacyKey</a> rules:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PrivacyRule" >PrivacyRule</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateUserPhone" >updateUserPhone</a>#5492a13 user_id:<a href="/type/long" >long</a> phone:<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadHistoryInbox" >updateReadHistoryInbox</a>#9c974fdf flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> peer:<a href="/type/Peer" >Peer</a> max_id:<a href="/type/int" >int</a> still_unread_count:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadHistoryOutbox" >updateReadHistoryOutbox</a>#2f2f21bf peer:<a href="/type/Peer" >Peer</a> max_id:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateWebPage" >updateWebPage</a>#7f891213 webpage:<a href="/type/WebPage" >WebPage</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadMessagesContents" >updateReadMessagesContents</a>#68c13933 messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelTooLong" >updateChannelTooLong</a>#108d941f flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> pts:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannel" >updateChannel</a>#635b4c09 channel_id:<a href="/type/long" >long</a> = <a href="/type/Update" class="current_page_link" >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" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadChannelInbox" >updateReadChannelInbox</a>#922e6e10 flags:<a href="/type/%23" >#</a> folder_id:flags.0?<a href="/type/int" >int</a> channel_id:<a href="/type/long" >long</a> max_id:<a href="/type/int" >int</a> still_unread_count:<a href="/type/int" >int</a> pts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDeleteChannelMessages" >updateDeleteChannelMessages</a>#c32d5b12 channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelMessageViews" >updateChannelMessageViews</a>#f226ac08 channel_id:<a href="/type/long" >long</a> id:<a href="/type/int" >int</a> views:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipantAdmin" >updateChatParticipantAdmin</a>#d7ca61a2 chat_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> is_admin:<a href="/type/Bool" >Bool</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateNewStickerSet" >updateNewStickerSet</a>#688a30aa stickerset:<a href="/type/messages.StickerSet" >messages.StickerSet</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateStickerSetsOrder" >updateStickerSetsOrder</a>#bb2d201 flags:<a href="/type/%23" >#</a> masks:flags.0?true order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/long" >long</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateStickerSets" >updateStickerSets</a>#43ae3dec = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateSavedGifs" >updateSavedGifs</a>#9375341e = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotInlineQuery" >updateBotInlineQuery</a>#496f379c flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> query:<a href="/type/string" >string</a> geo:flags.0?<a href="/type/GeoPoint" >GeoPoint</a> peer_type:flags.1?<a href="/type/InlineQueryPeerType" >InlineQueryPeerType</a> offset:<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotInlineSend" >updateBotInlineSend</a>#12f12a07 flags:<a href="/type/%23" >#</a> user_id:<a href="/type/long" >long</a> query:<a href="/type/string" >string</a> geo:flags.0?<a href="/type/GeoPoint" >GeoPoint</a> id:<a href="/type/string" >string</a> msg_id:flags.1?<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEditChannelMessage" >updateEditChannelMessage</a>#1b3f4df7 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" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotCallbackQuery" >updateBotCallbackQuery</a>#b9cfc48d flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> peer:<a href="/type/Peer" >Peer</a> msg_id:<a href="/type/int" >int</a> chat_instance:<a href="/type/long" >long</a> data:flags.0?<a href="/type/bytes" >bytes</a> game_short_name:flags.1?<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateEditMessage" >updateEditMessage</a>#e40370a3 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" class="current_page_link" >Update</a>; +<a href="/constructor/updateInlineBotCallbackQuery" >updateInlineBotCallbackQuery</a>#691e9052 flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> msg_id:<a href="/type/InputBotInlineMessageID" >InputBotInlineMessageID</a> chat_instance:<a href="/type/long" >long</a> data:flags.0?<a href="/type/bytes" >bytes</a> game_short_name:flags.1?<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadChannelOutbox" >updateReadChannelOutbox</a>#b75f99a9 channel_id:<a href="/type/long" >long</a> max_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDraftMessage" >updateDraftMessage</a>#ee2bb969 peer:<a href="/type/Peer" >Peer</a> draft:<a href="/type/DraftMessage" >DraftMessage</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadFeaturedStickers" >updateReadFeaturedStickers</a>#571d2742 = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateRecentStickers" >updateRecentStickers</a>#9a422c20 = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateConfig" >updateConfig</a>#a229dd06 = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePtsChanged" >updatePtsChanged</a>#3354678f = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelWebPage" >updateChannelWebPage</a>#2f2ba99f channel_id:<a href="/type/long" >long</a> webpage:<a href="/type/WebPage" >WebPage</a> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogPinned" >updateDialogPinned</a>#6e6fe51c flags:<a href="/type/%23" >#</a> pinned:flags.0?true folder_id:flags.1?<a href="/type/int" >int</a> peer:<a href="/type/DialogPeer" >DialogPeer</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePinnedDialogs" >updatePinnedDialogs</a>#fa0f3ca2 flags:<a href="/type/%23" >#</a> folder_id:flags.1?<a href="/type/int" >int</a> order:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/DialogPeer" >DialogPeer</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotWebhookJSON" >updateBotWebhookJSON</a>#8317c0c3 data:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotWebhookJSONQuery" >updateBotWebhookJSONQuery</a>#9b9240a6 query_id:<a href="/type/long" >long</a> data:<a href="/type/DataJSON" >DataJSON</a> timeout:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotShippingQuery" >updateBotShippingQuery</a>#b5aefd7d query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> shipping_address:<a href="/type/PostAddress" >PostAddress</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotPrecheckoutQuery" >updateBotPrecheckoutQuery</a>#8caa9a96 flags:<a href="/type/%23" >#</a> query_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> payload:<a href="/type/bytes" >bytes</a> info:flags.0?<a href="/type/PaymentRequestedInfo" >PaymentRequestedInfo</a> shipping_option_id:flags.1?<a href="/type/string" >string</a> currency:<a href="/type/string" >string</a> total_amount:<a href="/type/long" >long</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePhoneCall" >updatePhoneCall</a>#ab0f6b1e phone_call:<a href="/type/PhoneCall" >PhoneCall</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateLangPackTooLong" >updateLangPackTooLong</a>#46560264 lang_code:<a href="/type/string" >string</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateLangPack" >updateLangPack</a>#56022f4d difference:<a href="/type/LangPackDifference" >LangPackDifference</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateFavedStickers" >updateFavedStickers</a>#e511996d = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelReadMessagesContents" >updateChannelReadMessagesContents</a>#44bdd535 channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateContactsReset" >updateContactsReset</a>#7084a7be = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelAvailableMessages" >updateChannelAvailableMessages</a>#b23fc698 channel_id:<a href="/type/long" >long</a> available_min_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogUnreadMark" >updateDialogUnreadMark</a>#e16459c3 flags:<a href="/type/%23" >#</a> unread:flags.0?true peer:<a href="/type/DialogPeer" >DialogPeer</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateMessagePoll" >updateMessagePoll</a>#aca1657b flags:<a href="/type/%23" >#</a> poll_id:<a href="/type/long" >long</a> poll:flags.0?<a href="/type/Poll" >Poll</a> results:<a href="/type/PollResults" >PollResults</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatDefaultBannedRights" >updateChatDefaultBannedRights</a>#54c01850 peer:<a href="/type/Peer" >Peer</a> default_banned_rights:<a href="/type/ChatBannedRights" >ChatBannedRights</a> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateFolderPeers" >updateFolderPeers</a>#19360dc0 folder_peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/FolderPeer" >FolderPeer</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePeerSettings" >updatePeerSettings</a>#6a7e7366 peer:<a href="/type/Peer" >Peer</a> settings:<a href="/type/PeerSettings" >PeerSettings</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePeerLocated" >updatePeerLocated</a>#b4afcfb0 peers:<a href="/type/Vector%20t" >Vector</a><<a href="/type/PeerLocated" >PeerLocated</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateNewScheduledMessage" >updateNewScheduledMessage</a>#39a51dfb message:<a href="/type/Message" >Message</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDeleteScheduledMessages" >updateDeleteScheduledMessages</a>#90866cee peer:<a href="/type/Peer" >Peer</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateTheme" >updateTheme</a>#8216fba3 theme:<a href="/type/Theme" >Theme</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateGeoLiveViewed" >updateGeoLiveViewed</a>#871fb939 peer:<a href="/type/Peer" >Peer</a> msg_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateLoginToken" >updateLoginToken</a>#564fe691 = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateMessagePollVote" >updateMessagePollVote</a>#106395c9 poll_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> options:<a href="/type/Vector%20t" >Vector</a><<a href="/type/bytes" >bytes</a>> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogFilter" >updateDialogFilter</a>#26ffde7d flags:<a href="/type/%23" >#</a> id:<a href="/type/int" >int</a> filter:flags.0?<a href="/type/DialogFilter" >DialogFilter</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogFilterOrder" >updateDialogFilterOrder</a>#a5d72105 order:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateDialogFilters" >updateDialogFilters</a>#3504914f = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePhoneCallSignalingData" >updatePhoneCallSignalingData</a>#2661bf09 phone_call_id:<a href="/type/long" >long</a> data:<a href="/type/bytes" >bytes</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelMessageForwards" >updateChannelMessageForwards</a>#d29a27f4 channel_id:<a href="/type/long" >long</a> id:<a href="/type/int" >int</a> forwards:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadChannelDiscussionInbox" >updateReadChannelDiscussionInbox</a>#d6b19546 flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> top_msg_id:<a href="/type/int" >int</a> read_max_id:<a href="/type/int" >int</a> broadcast_id:flags.0?<a href="/type/long" >long</a> broadcast_post:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateReadChannelDiscussionOutbox" >updateReadChannelDiscussionOutbox</a>#695c9e7c channel_id:<a href="/type/long" >long</a> top_msg_id:<a href="/type/int" >int</a> read_max_id:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePeerBlocked" >updatePeerBlocked</a>#246a4b22 peer_id:<a href="/type/Peer" >Peer</a> blocked:<a href="/type/Bool" >Bool</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelUserTyping" >updateChannelUserTyping</a>#8c88c923 flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> top_msg_id:flags.0?<a href="/type/int" >int</a> from_id:<a href="/type/Peer" >Peer</a> action:<a href="/type/SendMessageAction" >SendMessageAction</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePinnedMessages" >updatePinnedMessages</a>#ed85eab5 flags:<a href="/type/%23" >#</a> pinned:flags.0?true peer:<a href="/type/Peer" >Peer</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePinnedChannelMessages" >updatePinnedChannelMessages</a>#5bb98608 flags:<a href="/type/%23" >#</a> pinned:flags.0?true channel_id:<a href="/type/long" >long</a> messages:<a href="/type/Vector%20t" >Vector</a><<a href="/type/int" >int</a>> pts:<a href="/type/int" >int</a> pts_count:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChat" >updateChat</a>#f89a6a4e chat_id:<a href="/type/long" >long</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateGroupCallParticipants" >updateGroupCallParticipants</a>#f2ebdb4e call:<a href="/type/InputGroupCall" >InputGroupCall</a> participants:<a href="/type/Vector%20t" >Vector</a><<a href="/type/GroupCallParticipant" >GroupCallParticipant</a>> version:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateGroupCall" >updateGroupCall</a>#14b24500 chat_id:<a href="/type/long" >long</a> call:<a href="/type/GroupCall" >GroupCall</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updatePeerHistoryTTL" >updatePeerHistoryTTL</a>#bb9bb9a5 flags:<a href="/type/%23" >#</a> peer:<a href="/type/Peer" >Peer</a> ttl_period:flags.0?<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChatParticipant" >updateChatParticipant</a>#d087663a flags:<a href="/type/%23" >#</a> chat_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> actor_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> prev_participant:flags.0?<a href="/type/ChatParticipant" >ChatParticipant</a> new_participant:flags.1?<a href="/type/ChatParticipant" >ChatParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateChannelParticipant" >updateChannelParticipant</a>#985d3abb flags:<a href="/type/%23" >#</a> channel_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> actor_id:<a href="/type/long" >long</a> user_id:<a href="/type/long" >long</a> prev_participant:flags.0?<a href="/type/ChannelParticipant" >ChannelParticipant</a> new_participant:flags.1?<a href="/type/ChannelParticipant" >ChannelParticipant</a> invite:flags.2?<a href="/type/ExportedChatInvite" >ExportedChatInvite</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotStopped" >updateBotStopped</a>#c4870a49 user_id:<a href="/type/long" >long</a> date:<a href="/type/int" >int</a> stopped:<a href="/type/Bool" >Bool</a> qts:<a href="/type/int" >int</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateGroupCallConnection" >updateGroupCallConnection</a>#b783982 flags:<a href="/type/%23" >#</a> presentation:flags.0?true params:<a href="/type/DataJSON" >DataJSON</a> = <a href="/type/Update" class="current_page_link" >Update</a>; +<a href="/constructor/updateBotCommands" >updateBotCommands</a>#4d712f2e peer:<a href="/type/Peer" >Peer</a> bot_id:<a href="/type/long" >long</a> commands:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BotCommand" >BotCommand</a>> = <a href="/type/Update" class="current_page_link" >Update</a>;</code></pre></p> +<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> +<table class="table"> +<thead> +<tr> +<th>Constructor</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="/constructor/updateNewMessage">updateNewMessage</a></td> +<td>New message.</td> +</tr> +<tr> +<td><a href="/constructor/updateMessageID">updateMessageID</a></td> +<td>Sent message with <strong>random_id</strong> client identifier was assigned an identifier.</td> +</tr> +<tr> +<td><a href="/constructor/updateDeleteMessages">updateDeleteMessages</a></td> +<td>Messages were deleted.</td> +</tr> +<tr> +<td><a href="/constructor/updateUserTyping">updateUserTyping</a></td> +<td>The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no repeated update received after 6 seconds, it should be considered that the user stopped doing whatever he's been doing.</td> +</tr> +<tr> +<td><a href="/constructor/updateChatUserTyping">updateChatUserTyping</a></td> +<td>The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no repeated update received after 6 seconds, it should be considered that the user stopped doing whatever he's been doing.</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipants">updateChatParticipants</a></td> +<td>Composition of chat participants changed.</td> +</tr> +<tr> +<td><a href="/constructor/updateUserStatus">updateUserStatus</a></td> +<td>Contact status update.</td> +</tr> +<tr> +<td><a href="/constructor/updateUserName">updateUserName</a></td> +<td>Changes the user's first name, last name and username.</td> +</tr> +<tr> +<td><a href="/constructor/updateUserPhoto">updateUserPhoto</a></td> +<td>Change of contact's profile photo.</td> +</tr> +<tr> +<td><a href="/constructor/updateNewEncryptedMessage">updateNewEncryptedMessage</a></td> +<td>New encrypted message.</td> +</tr> +<tr> +<td><a href="/constructor/updateEncryptedChatTyping">updateEncryptedChatTyping</a></td> +<td>Interlocutor is typing a message in an encrypted chat. Update period is 6 second. If upon this time there is no repeated update, it shall be considered that the interlocutor stopped typing.</td> +</tr> +<tr> +<td><a href="/constructor/updateEncryption">updateEncryption</a></td> +<td>Change of state in an encrypted chat.</td> +</tr> +<tr> +<td><a href="/constructor/updateEncryptedMessagesRead">updateEncryptedMessagesRead</a></td> +<td>Communication history in an encrypted chat was marked as read.</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipantAdd">updateChatParticipantAdd</a></td> +<td>New group member.</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipantDelete">updateChatParticipantDelete</a></td> +<td>A member has left the group.</td> +</tr> +<tr> +<td><a href="/constructor/updateDcOptions">updateDcOptions</a></td> +<td>Changes in the data center configuration options.</td> +</tr> +<tr> +<td><a href="/constructor/updateNotifySettings">updateNotifySettings</a></td> +<td>Changes in notification settings.</td> +</tr> +<tr> +<td><a href="/constructor/updateServiceNotification">updateServiceNotification</a></td> +<td>A service message for the user.<br><br>The app must show the message to the user upon receiving this update. In case the <strong>popup</strong> parameter was passed, the text message must be displayed in a popup alert immediately upon receipt. It is recommended to handle the text as you would an ordinary message in terms of highlighting links, etc. The message must also be stored locally as part of the message history with the user id <code>777000</code> (Telegram Notifications).</td> +</tr> +<tr> +<td><a href="/constructor/updatePrivacy">updatePrivacy</a></td> +<td>Privacy rules were changed</td> +</tr> +<tr> +<td><a href="/constructor/updateUserPhone">updateUserPhone</a></td> +<td>A user's phone number was changed</td> +</tr> +<tr> +<td><a href="/constructor/updateReadHistoryInbox">updateReadHistoryInbox</a></td> +<td>Incoming messages were read</td> +</tr> +<tr> +<td><a href="/constructor/updateReadHistoryOutbox">updateReadHistoryOutbox</a></td> +<td>Outgoing messages were read</td> +</tr> +<tr> +<td><a href="/constructor/updateWebPage">updateWebPage</a></td> +<td>An (<a href="https://instantview.telegram.org">IV</a>) webpage preview was generated</td> +</tr> +<tr> +<td><a href="/constructor/updateReadMessagesContents">updateReadMessagesContents</a></td> +<td>Contents of messages in the common <a href="/api/updates">message box</a> were read</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelTooLong">updateChannelTooLong</a></td> +<td>There are new updates in the specified channel, the client must fetch them, eventually starting the specified pts if the difference is too long or if the channel isn't currently in the states.</td> +</tr> +<tr> +<td><a href="/constructor/updateChannel">updateChannel</a></td> +<td>A new channel is available</td> +</tr> +<tr> +<td><a href="/constructor/updateNewChannelMessage">updateNewChannelMessage</a></td> +<td>A new message was sent in a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/constructor/updateReadChannelInbox">updateReadChannelInbox</a></td> +<td>Incoming messages in a <a href="/api/channel">channel/supergroup</a> were read</td> +</tr> +<tr> +<td><a href="/constructor/updateDeleteChannelMessages">updateDeleteChannelMessages</a></td> +<td>Some messages in a <a href="/api/channel">supergroup/channel</a> were deleted</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelMessageViews">updateChannelMessageViews</a></td> +<td>The view counter of a message in a channel has changed</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipantAdmin">updateChatParticipantAdmin</a></td> +<td>Admin permissions of a user in a <a href="/api/channel">legacy group</a> were changed</td> +</tr> +<tr> +<td><a href="/constructor/updateNewStickerSet">updateNewStickerSet</a></td> +<td>A new stickerset was installed</td> +</tr> +<tr> +<td><a href="/constructor/updateStickerSetsOrder">updateStickerSetsOrder</a></td> +<td>The order of stickersets was changed</td> +</tr> +<tr> +<td><a href="/constructor/updateStickerSets">updateStickerSets</a></td> +<td>Installed stickersets have changed, the client should refetch them using <a href="https://core.telegram.org/method/messages.getAllStickers">messages.getAllStickers</a></td> +</tr> +<tr> +<td><a href="/constructor/updateSavedGifs">updateSavedGifs</a></td> +<td>The saved gif list has changed, the client should refetch it using <a href="https://core.telegram.org/method/messages.getSavedGifs">messages.getSavedGifs</a></td> +</tr> +<tr> +<td><a href="/constructor/updateBotInlineQuery">updateBotInlineQuery</a></td> +<td>An incoming inline query</td> +</tr> +<tr> +<td><a href="/constructor/updateBotInlineSend">updateBotInlineSend</a></td> +<td>The result of an inline query that was chosen by a user and sent to their chat partner. Please see our documentation on the <a href="https://core.telegram.org/bots/inline#collecting-feedback">feedback collecting</a> for details on how to enable these updates for your bot.</td> +</tr> +<tr> +<td><a href="/constructor/updateEditChannelMessage">updateEditChannelMessage</a></td> +<td>A message was edited in a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/constructor/updateBotCallbackQuery">updateBotCallbackQuery</a></td> +<td>A callback button was pressed, and the button data was sent to the bot that created the button</td> +</tr> +<tr> +<td><a href="/constructor/updateEditMessage">updateEditMessage</a></td> +<td>A message was edited</td> +</tr> +<tr> +<td><a href="/constructor/updateInlineBotCallbackQuery">updateInlineBotCallbackQuery</a></td> +<td>This notification is received by bots when a button is pressed</td> +</tr> +<tr> +<td><a href="/constructor/updateReadChannelOutbox">updateReadChannelOutbox</a></td> +<td>Outgoing messages in a <a href="/api/channel">channel/supergroup</a> were read</td> +</tr> +<tr> +<td><a href="/constructor/updateDraftMessage">updateDraftMessage</a></td> +<td>Notifies a change of a message <a href="/api/drafts">draft</a>.</td> +</tr> +<tr> +<td><a href="/constructor/updateReadFeaturedStickers">updateReadFeaturedStickers</a></td> +<td>Some featured stickers were marked as read</td> +</tr> +<tr> +<td><a href="/constructor/updateRecentStickers">updateRecentStickers</a></td> +<td>The recent sticker list was updated</td> +</tr> +<tr> +<td><a href="/constructor/updateConfig">updateConfig</a></td> +<td>The server-side configuration has changed; the client should re-fetch the config using <a href="/method/help.getConfig">help.getConfig</a></td> +</tr> +<tr> +<td><a href="/constructor/updatePtsChanged">updatePtsChanged</a></td> +<td><a href="/api/updates">Common message box sequence PTS</a> has changed, <a href="/api/updates#fetching-state">state has to be refetched using updates.getState</a></td> +</tr> +<tr> +<td><a href="/constructor/updateChannelWebPage">updateChannelWebPage</a></td> +<td>A webpage preview of a link in a <a href="/api/channel">channel/supergroup</a> message was generated</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogPinned">updateDialogPinned</a></td> +<td>A dialog was pinned/unpinned</td> +</tr> +<tr> +<td><a href="/constructor/updatePinnedDialogs">updatePinnedDialogs</a></td> +<td>Pinned dialogs were updated</td> +</tr> +<tr> +<td><a href="/constructor/updateBotWebhookJSON">updateBotWebhookJSON</a></td> +<td>A new incoming event; for bots only</td> +</tr> +<tr> +<td><a href="/constructor/updateBotWebhookJSONQuery">updateBotWebhookJSONQuery</a></td> +<td>A new incoming query; for bots only</td> +</tr> +<tr> +<td><a href="/constructor/updateBotShippingQuery">updateBotShippingQuery</a></td> +<td>This object contains information about an incoming shipping query.</td> +</tr> +<tr> +<td><a href="/constructor/updateBotPrecheckoutQuery">updateBotPrecheckoutQuery</a></td> +<td>This object contains information about an incoming pre-checkout query.</td> +</tr> +<tr> +<td><a href="/constructor/updatePhoneCall">updatePhoneCall</a></td> +<td>An incoming phone call</td> +</tr> +<tr> +<td><a href="/constructor/updateLangPackTooLong">updateLangPackTooLong</a></td> +<td>A language pack has changed, the client should manually fetch the changed strings using <a href="/method/langpack.getDifference">langpack.getDifference</a></td> +</tr> +<tr> +<td><a href="/constructor/updateLangPack">updateLangPack</a></td> +<td>Language pack updated</td> +</tr> +<tr> +<td><a href="/constructor/updateFavedStickers">updateFavedStickers</a></td> +<td>The list of favorited stickers was changed, the client should call <a href="/method/messages.getFavedStickers">messages.getFavedStickers</a> to refetch the new list</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelReadMessagesContents">updateChannelReadMessagesContents</a></td> +<td>The specified <a href="/api/channel">channel/supergroup</a> messages were read</td> +</tr> +<tr> +<td><a href="/constructor/updateContactsReset">updateContactsReset</a></td> +<td>All contacts were deleted</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelAvailableMessages">updateChannelAvailableMessages</a></td> +<td>The history of a <a href="/api/channel">channel/supergroup</a> was hidden.</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogUnreadMark">updateDialogUnreadMark</a></td> +<td>The manual unread mark of a chat was changed</td> +</tr> +<tr> +<td><a href="/constructor/updateMessagePoll">updateMessagePoll</a></td> +<td>The results of a poll have changed</td> +</tr> +<tr> +<td><a href="/constructor/updateChatDefaultBannedRights">updateChatDefaultBannedRights</a></td> +<td>Default banned rights in a <a href="/api/channel">normal chat</a> were updated</td> +</tr> +<tr> +<td><a href="/constructor/updateFolderPeers">updateFolderPeers</a></td> +<td>The dialog list of a folder was changed</td> +</tr> +<tr> +<td><a href="/constructor/updatePeerSettings">updatePeerSettings</a></td> +<td>Settings of a certain peer have changed</td> +</tr> +<tr> +<td><a href="/constructor/updatePeerLocated">updatePeerLocated</a></td> +<td>List of peers near you was updated</td> +</tr> +<tr> +<td><a href="/constructor/updateNewScheduledMessage">updateNewScheduledMessage</a></td> +<td>New incoming scheduled message</td> +</tr> +<tr> +<td><a href="/constructor/updateDeleteScheduledMessages">updateDeleteScheduledMessages</a></td> +<td>Some scheduled messages were deleted</td> +</tr> +<tr> +<td><a href="/constructor/updateTheme">updateTheme</a></td> +<td>A new cloud theme was installed</td> +</tr> +<tr> +<td><a href="/constructor/updateGeoLiveViewed">updateGeoLiveViewed</a></td> +<td>Live geoposition message was viewed</td> +</tr> +<tr> +<td><a href="/constructor/updateLoginToken">updateLoginToken</a></td> +<td>A login token (for login via QR code) was generated</td> +</tr> +<tr> +<td><a href="/constructor/updateMessagePollVote">updateMessagePollVote</a></td> +<td>A specific user has voted in a poll</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogFilter">updateDialogFilter</a></td> +<td>A new folder was added</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogFilterOrder">updateDialogFilterOrder</a></td> +<td>New chat folders order</td> +</tr> +<tr> +<td><a href="/constructor/updateDialogFilters">updateDialogFilters</a></td> +<td>Update folder list</td> +</tr> +<tr> +<td><a href="/constructor/updatePhoneCallSignalingData">updatePhoneCallSignalingData</a></td> +<td>Incoming phone call signaling payload</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelMessageForwards">updateChannelMessageForwards</a></td> +<td>The forward counter of a message in a channel has changed</td> +</tr> +<tr> +<td><a href="/constructor/updateReadChannelDiscussionInbox">updateReadChannelDiscussionInbox</a></td> +<td>Incoming messages were marked as read</td> +</tr> +<tr> +<td><a href="/constructor/updateReadChannelDiscussionOutbox">updateReadChannelDiscussionOutbox</a></td> +<td>Outgoing comments in a <a href="/api/threads">discussion thread</a> were marked as read</td> +</tr> +<tr> +<td><a href="/constructor/updatePeerBlocked">updatePeerBlocked</a></td> +<td>A peer was blocked</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a></td> +<td>user is typing in a <a href="/api/channel">supergroup, channel</a> or <a href="/api/threads">message thread</a></td> +</tr> +<tr> +<td><a href="/constructor/updatePinnedMessages">updatePinnedMessages</a></td> +<td>Some messages were pinned in a chat</td> +</tr> +<tr> +<td><a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a></td> +<td>Messages were pinned/unpinned in a <a href="/api/channel">channel/supergroup</a></td> +</tr> +<tr> +<td><a href="/constructor/updateChat">updateChat</a></td> +<td>A new chat is available</td> +</tr> +<tr> +<td><a href="/constructor/updateGroupCallParticipants">updateGroupCallParticipants</a></td> +<td>The participant list of a certain group call has changed</td> +</tr> +<tr> +<td><a href="/constructor/updateGroupCall">updateGroupCall</a></td> +<td>A new groupcall was started</td> +</tr> +<tr> +<td><a href="/constructor/updatePeerHistoryTTL">updatePeerHistoryTTL</a></td> +<td>The Time-To-Live for messages sent by the current user in a specific chat has changed</td> +</tr> +<tr> +<td><a href="/constructor/updateChatParticipant">updateChatParticipant</a></td> +<td>A user has joined or left a specific chat</td> +</tr> +<tr> +<td><a href="/constructor/updateChannelParticipant">updateChannelParticipant</a></td> +<td>A participant has left/joined a <a href="/api/channel">channel or supergroup</a>.</td> +</tr> +<tr> +<td><a href="/constructor/updateBotStopped">updateBotStopped</a></td> +<td>A bot was stopped or re-started.</td> +</tr> +<tr> +<td><a href="/constructor/updateGroupCallConnection">updateGroupCallConnection</a></td> +<td>New WebRTC parameters</td> +</tr> +<tr> +<td><a href="/constructor/updateBotCommands">updateBotCommands</a></td> +<td>The <a href="/bots/api#june-25-2021">command set</a> of a certain bot in a certain chat has changed.</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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/type/ContactStatus.html b/data/corefork.telegram.org/type/Vector t.html similarity index 90% rename from data/corefork.telegram.org/type/ContactStatus.html rename to data/corefork.telegram.org/type/Vector t.html index 4e9df8a5b2..5a1965db3e 100644 --- a/data/corefork.telegram.org/type/ContactStatus.html +++ b/data/corefork.telegram.org/type/Vector t.html @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>ContactStatus</title> + <title>Vector t</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Contact status: online / offline."> - <meta property="og:title" content="ContactStatus"> + <meta property="description" content="Universal vector."> + <meta property="og:title" content="Vector t"> <meta property="og:image" content=""> - <meta property="og:description" content="Contact status: online / offline."> + <meta property="og:description" content="Universal vector."> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/ContactStatus" >ContactStatus</a></li></ul></div> - <h1 id="dev_page_title">ContactStatus</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/Vector%20t" >Vector t</a></li></ul></div> + <h1 id="dev_page_title">Vector t</h1> - <div id="dev_page_content"><p>Contact status: online / offline.</p> + <div id="dev_page_content"><p>Universal vector.</p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,7 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/contactStatus" >contactStatus</a>#16d9703b user_id:<a href="/type/long" >long</a> status:<a href="/type/UserStatus" >UserStatus</a> = <a href="/type/ContactStatus" class="current_page_link" >ContactStatus</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/vector" >vector</a>#1cb5c415 {t:Type} # [ t ] = <a href="/type/Vector%20t" class="current_page_link" >Vector t</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -63,8 +63,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/contactStatus">contactStatus</a></td> -<td>Contact status: online / offline.</td> +<td><a href="/constructor/vector">vector</a></td> +<td>A universal vector constructor.</td> </tr> </tbody> </table></div> diff --git a/data/corefork.telegram.org/type/WallPaperSettings.html b/data/corefork.telegram.org/type/WallPaperSettings.html deleted file mode 100644 index 6038e2a974..0000000000 --- a/data/corefork.telegram.org/type/WallPaperSettings.html +++ /dev/null @@ -1,143 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>WallPaperSettings</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Wallpaper settings"> - <meta property="og:title" content="WallPaperSettings"> - <meta property="og:image" content=""> - <meta property="og:description" content="Wallpaper settings"> - <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?215" 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="/type/WallPaperSettings" >WallPaperSettings</a></li></ul></div> - <h1 id="dev_page_title">WallPaperSettings</h1> - - <div id="dev_page_content"><p>Wallpaper settings</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/wallPaperSettings" >wallPaperSettings</a>#1dc1bca4 flags:<a href="/type/%23" >#</a> blur:flags.1?true motion:flags.2?true background_color:flags.0?<a href="/type/int" >int</a> second_background_color:flags.4?<a href="/type/int" >int</a> third_background_color:flags.5?<a href="/type/int" >int</a> fourth_background_color:flags.6?<a href="/type/int" >int</a> intensity:flags.3?<a href="/type/int" >int</a> rotation:flags.4?<a href="/type/int" >int</a> = <a href="/type/WallPaperSettings" class="current_page_link" >WallPaperSettings</a>;</code></pre></p> -<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> -<table class="table"> -<thead> -<tr> -<th>Constructor</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/constructor/wallPaperSettings">wallPaperSettings</a></td> -<td>Wallpaper settings</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/type/WebPageAttribute.html b/data/corefork.telegram.org/type/WebPageAttribute.html deleted file mode 100644 index 26fd78130c..0000000000 --- a/data/corefork.telegram.org/type/WebPageAttribute.html +++ /dev/null @@ -1,143 +0,0 @@ -<!DOCTYPE html> -<html class=""> - <head> - <meta charset="utf-8"> - <title>WebPageAttribute</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Webpage attributes"> - <meta property="og:title" content="WebPageAttribute"> - <meta property="og:image" content=""> - <meta property="og:description" content="Webpage attributes"> - <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?215" 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="/type/WebPageAttribute" >WebPageAttribute</a></li></ul></div> - <h1 id="dev_page_title">WebPageAttribute</h1> - - <div id="dev_page_content"><p>Webpage attributes</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 – Base layer</a></li><li><a href="?layer=2">2 – New userpic notifications</a></li><li><a href="?layer=3">3 – Send message can trigger link change</a></li><li><a href="?layer=4">4 – Check-in chats</a></li><li><a href="?layer=5">5 – Localized SMS, localized notifications</a></li><li><a href="?layer=6">6 – Foursquare integration</a></li><li><a href="?layer=7">7 – Added wallPaperSolid</a></li><li><a href="?layer=8">8 – Added end-to-end encryption</a></li><li><a href="?layer=9">9 – Improved big files upload perfomance</a></li><li><a href="?layer=10">10 – Improved chat participants updates</a></li><li><a href="?layer=11">11 – Improved secret chats</a></li><li><a href="?layer=12">12 – New dynamic support</a></li><li><a href="?layer=13">13 – Audio, video MIME; contacts import retry; new secret actions</a></li><li><a href="?layer=14">14 – Notify settings sync, blacklist sync</a></li><li><a href="?layer=15">15 – Modified getHistory offset behaviour</a></li><li><a href="?layer=16">16 – Split sendCode into 2 parts</a></li><li><a href="?layer=17">17 – Added custom typing, introduced message flags</a></li><li><a href="?layer=18">18 – Added usernames</a></li><li><a href="?layer=23">23 – Stickers for secret chats</a></li><li><a href="?layer=105">105 – Scheduled messages, Cloud themes</a></li><li><a href="?layer=108">108 – Login with QR code</a></li><li><a href="?layer=109">109 – Polls v2</a></li><li><a href="?layer=110">110 – People Nearby 2.0, Bank card entity</a></li><li><a href="?layer=111">111 – Folders, Broadcast Stats</a></li><li><a href="?layer=112">112 – Old featured stickers, generic dice, poll timer, poll solution</a></li><li><a href="?layer=113">113 – PSA</a></li><li><a href="?layer=114">114 – Video thumbs for GIFs</a></li><li><a href="?layer=115">115 – Peek Channel Invite</a></li><li><a href="?layer=116">116 – Group Stats, Profile Videos</a></li><li><a href="?layer=117">117 – WebRTC Phone Calls</a></li><li><a href="?layer=118">118 – Callback with 2FA, Countries list</a></li><li><a href="?layer=119">119 – Comments in channels, Threads, Anonymous Admins</a></li><li><a href="?layer=120">120 – Multipins, Message Stats, GeoLive v2</a></li><li><a href="?layer=121">121 – SVG-based Outlines for Stickers</a></li><li><a href="?layer=122">122 – Voice Chats</a></li><li><a href="?layer=123">123 – Voice Chat improvements</a></li><li><a href="?layer=124">124 – Expiring Invite links</a></li><li><a href="?layer=125">125 – Voice Chats in Broadcasts</a></li><li><a href="?layer=126">126 – Ban channels in channels</a></li><li><a href="?layer=127">127 – Payments in channels</a></li><li><a href="?layer=128">128 – Microthumbs for User/Chat profile photos</a></li><li><a href="?layer=129">129 – Video Chats</a></li><li><a href="?layer=130">130 – Custom placeholder for bot reply keyboards</a></li><li><a href="?layer=131">131 – Reset 2FA Password after a week</a></li><li><a href="?layer=132">132 – Chat themes</a></li><li><a href="?layer=133"><strong>133 – 64-bit IDs for User/Chat</strong></a></li> - <li class="divider"></li> - <li><a href="/api/layers">More...</a></li> - </ul> - </li> - </ul> -</div> -<pre class="page_scheme"><code><a href="/constructor/webPageAttributeTheme" >webPageAttributeTheme</a>#54b56617 flags:<a href="/type/%23" >#</a> documents:flags.0?<a href="/type/Vector%20t" >Vector</a><<a href="/type/Document" >Document</a>> settings:flags.1?<a href="/type/ThemeSettings" >ThemeSettings</a> = <a href="/type/WebPageAttribute" class="current_page_link" >WebPageAttribute</a>;</code></pre></p> -<h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> -<table class="table"> -<thead> -<tr> -<th>Constructor</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/constructor/webPageAttributeTheme">webPageAttributeTheme</a></td> -<td>Page theme</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?43"></script> - - <script>backToTopInit("Go up"); -removePreloadInit(); -</script> - </body> -</html> - diff --git a/data/corefork.telegram.org/type/payments.BankCardData b/data/corefork.telegram.org/type/account.PasswordInputSettings similarity index 81% rename from data/corefork.telegram.org/type/payments.BankCardData rename to data/corefork.telegram.org/type/account.PasswordInputSettings index 5c92dc1f7d..e3306aa0fe 100644 --- a/data/corefork.telegram.org/type/payments.BankCardData +++ b/data/corefork.telegram.org/type/account.PasswordInputSettings @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>payments.BankCardData</title> + <title>account.PasswordInputSettings</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Credit card info, provided by the card's bank(s)"> - <meta property="og:title" content="payments.BankCardData"> + <meta property="description" content="Constructor for setting up a new 2FA SRP password"> + <meta property="og:title" content="account.PasswordInputSettings"> <meta property="og:image" content=""> - <meta property="og:description" content="Credit card info, provided by the card's bank(s)"> + <meta property="og:description" content="Constructor for setting up a new 2FA SRP password"> <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> @@ -36,10 +36,10 @@ <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="/type/payments.BankCardData" >payments.BankCardData</a></li></ul></div> - <h1 id="dev_page_title">payments.BankCardData</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/account.PasswordInputSettings" >account.PasswordInputSettings</a></li></ul></div> + <h1 id="dev_page_title">account.PasswordInputSettings</h1> - <div id="dev_page_content"><p>Credit card info, provided by the card's bank(s)</p> + <div id="dev_page_content"><p>Constructor for setting up a new <a href="/api/srp">2FA SRP password</a></p> <p><div class="clearfix"> <ul class="dev_layer_select slightly-pull-right nav nav-pills"> <li class="dropdown"> @@ -52,11 +52,7 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/payments.bankCardData" >payments.bankCardData</a>#3e24e573 title:<a href="/type/string" >string</a> open_urls:<a href="/type/Vector%20t" >Vector</a><<a href="/type/BankCardOpenUrl" >BankCardOpenUrl</a>> = <a href="/type/payments.BankCardData" class="current_page_link" >payments.BankCardData</a>; - ----functions--- - -<a href="/method/payments.getBankCardData" >payments.getBankCardData</a>#2e79d779 number:<a href="/type/string" >string</a> = <a href="/type/payments.BankCardData" class="current_page_link" >payments.BankCardData</a>;</code></pre></p> +<pre class="page_scheme"><code><a href="/constructor/account.passwordInputSettings" >account.passwordInputSettings</a>#c23727c9 flags:<a href="/type/%23" >#</a> new_algo:flags.0?<a href="/type/PasswordKdfAlgo" >PasswordKdfAlgo</a> new_password_hash:flags.0?<a href="/type/bytes" >bytes</a> hint:flags.0?<a href="/type/string" >string</a> email:flags.1?<a href="/type/string" >string</a> new_secure_settings:flags.2?<a href="/type/SecureSecretSettings" >SecureSecretSettings</a> = <a href="/type/account.PasswordInputSettings" class="current_page_link" >account.PasswordInputSettings</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -67,26 +63,14 @@ </thead> <tbody> <tr> -<td><a href="/constructor/payments.bankCardData">payments.bankCardData</a></td> -<td>Credit card info, provided by the card's bank(s)</td> +<td><a href="/constructor/account.passwordInputSettings">account.passwordInputSettings</a></td> +<td>Settings for setting up a new password</td> </tr> </tbody> </table> -<h3><a class="anchor" href="#methods" id="methods" name="methods"><i class="anchor-icon"></i></a>Methods</h3> -<table class="table"> -<thead> -<tr> -<th>Method</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td><a href="/method/payments.getBankCardData">payments.getBankCardData</a></td> -<td>Get info about a credit card</td> -</tr> -</tbody> -</table></div> +<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="#two-factor-authentication" id="two-factor-authentication" name="two-factor-authentication"><i class="anchor-icon"></i></a><a href="/api/srp">Two-factor authentication</a></h4> +<p>How to login to a user's account if they have enabled 2FA, how to change password.</p></div> </div> diff --git a/data/corefork.telegram.org/type/bytes.html b/data/corefork.telegram.org/type/bytes.html new file mode 100644 index 0000000000..ab59a32b8c --- /dev/null +++ b/data/corefork.telegram.org/type/bytes.html @@ -0,0 +1,125 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>bytes</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="Basic bare type. It is an alias of the string type, with the difference that the value may contain arbitrary byte sequences, including invalid UTF-8 sequences."> + <meta property="og:title" content="bytes"> + <meta property="og:image" content=""> + <meta property="og:description" content="Basic bare type. It is an alias of the string type, with the difference that the value may contain arbitrary byte sequences, including invalid UTF-8 sequences."> + <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?215" 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="/type/bytes" >bytes</a></li></ul></div> + <h1 id="dev_page_title">bytes</h1> + + <div id="dev_page_content"><p>Basic bare type. It is an alias of the <strong><a href="/type/string">string</a></strong> type, with the difference that the value may contain arbitrary byte sequences, including invalid UTF-8 sequences.</p> +<p>When computing crc32 for a constructor or method it is necessary to replace all byte types with string types.</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="#string" id="string" name="string"><i class="anchor-icon"></i></a><a href="/type/string">string</a></h4> +<p>A basic bare type. Values of type <code>string</code> look differently depending on the length <code>L</code> of the string being serialized:</p> +<ul> +<li>If <code>L <= 253</code>, the serialization contains one byte with the value of <code>L</code>, then <code>L</code> bytes of the string followed by 0 to 3 characters containing 0, such that the overall length of the value be divisible by 4, whereupon all of this is interpreted as a sequence of <code>int(L/4)+1</code> 32-bit little-endian integers.</li> +<li>If <code>L >= 254</code>, the serialization contains byte 254, followed by 3 bytes with the string length <code>L</code> in little-endian order, followed by <code>L</code> bytes of the string, further followed by 0 to 3 null padding bytes.</li> +</ul> +<p>All strings passed to the API must be encoded in UTF-8. When arbitrary byte sequences have to be serialized, <a href="/type/bytes">bytes</a> alias is to be used.</p> +<p><a href="/mtproto/serialize">Further details on basic types»</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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/type/StatsGraph.html b/data/corefork.telegram.org/type/messages.CheckedHistoryImportPeer similarity index 77% rename from data/corefork.telegram.org/type/StatsGraph.html rename to data/corefork.telegram.org/type/messages.CheckedHistoryImportPeer index fad19cb008..84ce7b8c61 100644 --- a/data/corefork.telegram.org/type/StatsGraph.html +++ b/data/corefork.telegram.org/type/messages.CheckedHistoryImportPeer @@ -2,12 +2,12 @@ <html class=""> <head> <meta charset="utf-8"> - <title>StatsGraph</title> + <title>messages.CheckedHistoryImportPeer</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="description" content="Channel statistics graph"> - <meta property="og:title" content="StatsGraph"> + <meta property="description" content="Contains a confirmation text to be shown to the user, upon importing chat history, click here for more info »."> + <meta property="og:title" content="messages.CheckedHistoryImportPeer"> <meta property="og:image" content=""> - <meta property="og:description" content="Channel statistics graph"> + <meta property="og:description" content="Contains a confirmation text to be shown to the user, upon importing chat history, 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"> @@ -36,10 +36,10 @@ <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="/type/StatsGraph" >StatsGraph</a></li></ul></div> - <h1 id="dev_page_title">StatsGraph</h1> + <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/schema" >TL-schema</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/type/messages.CheckedHistoryImportPeer" >messages.CheckedHistoryImportPeer</a></li></ul></div> + <h1 id="dev_page_title">messages.CheckedHistoryImportPeer</h1> - <div id="dev_page_content"><p>Channel statistics graph</p> + <div id="dev_page_content"><p>Contains a confirmation text to be shown to the user, upon <a href="/api/import">importing chat history, 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"> @@ -52,13 +52,11 @@ </li> </ul> </div> -<pre class="page_scheme"><code><a href="/constructor/statsGraphAsync" >statsGraphAsync</a>#4a27eb2d token:<a href="/type/string" >string</a> = <a href="/type/StatsGraph" class="current_page_link" >StatsGraph</a>; -<a href="/constructor/statsGraphError" >statsGraphError</a>#bedc9822 error:<a href="/type/string" >string</a> = <a href="/type/StatsGraph" class="current_page_link" >StatsGraph</a>; -<a href="/constructor/statsGraph" >statsGraph</a>#8ea464b6 flags:<a href="/type/%23" >#</a> json:<a href="/type/DataJSON" >DataJSON</a> zoom_token:flags.0?<a href="/type/string" >string</a> = <a href="/type/StatsGraph" class="current_page_link" >StatsGraph</a>; +<pre class="page_scheme"><code><a href="/constructor/messages.checkedHistoryImportPeer" >messages.checkedHistoryImportPeer</a>#a24de717 confirm_text:<a href="/type/string" >string</a> = <a href="/type/messages.CheckedHistoryImportPeer" class="current_page_link" >messages.CheckedHistoryImportPeer</a>; ---functions--- -<a href="/method/stats.loadAsyncGraph" >stats.loadAsyncGraph</a>#621d5fa0 flags:<a href="/type/%23" >#</a> token:<a href="/type/string" >string</a> x:flags.0?<a href="/type/long" >long</a> = <a href="/type/StatsGraph" class="current_page_link" >StatsGraph</a>;</code></pre></p> +<a href="/method/messages.checkHistoryImportPeer" >messages.checkHistoryImportPeer</a>#5dc60f03 peer:<a href="/type/InputPeer" >InputPeer</a> = <a href="/type/messages.CheckedHistoryImportPeer" class="current_page_link" >messages.CheckedHistoryImportPeer</a>;</code></pre></p> <h3><a class="anchor" href="#constructors" id="constructors" name="constructors"><i class="anchor-icon"></i></a>Constructors</h3> <table class="table"> <thead> @@ -69,16 +67,8 @@ </thead> <tbody> <tr> -<td><a href="/constructor/statsGraphAsync">statsGraphAsync</a></td> -<td>This graph must be generated asynchronously using <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a> to reduce server load</td> -</tr> -<tr> -<td><a href="/constructor/statsGraphError">statsGraphError</a></td> -<td>An error occurred while generating the statistics graph</td> -</tr> -<tr> -<td><a href="/constructor/statsGraph">statsGraph</a></td> -<td>Channel statistics graph</td> +<td><a href="/constructor/messages.checkedHistoryImportPeer">messages.checkedHistoryImportPeer</a></td> +<td>Contains a confirmation text to be shown to the user, upon importing chat history.</td> </tr> </tbody> </table> @@ -92,11 +82,14 @@ </thead> <tbody> <tr> -<td><a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a></td> -<td>Load channel statistics graph asynchronously</td> +<td><a href="/method/messages.checkHistoryImportPeer">messages.checkHistoryImportPeer</a></td> +<td>Check whether chat history exported from another chat app can be imported into a specific Telegram chat.<br><br>If the check succeeds, and no RPC errors are returned, a <a href="/type/messages.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</a> constructor will be returned, with a confirmation text to be shown to the user, before actually initializing the import.</td> </tr> </tbody> -</table></div> +</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="#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> diff --git a/data/corefork.telegram.org/widgets.html b/data/corefork.telegram.org/widgets.html new file mode 100644 index 0000000000..d39effe6f6 --- /dev/null +++ b/data/corefork.telegram.org/widgets.html @@ -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?215" 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="//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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/widgets/discussion.html b/data/corefork.telegram.org/widgets/discussion.html new file mode 100644 index 0000000000..4a057af876 --- /dev/null +++ b/data/corefork.telegram.org/widgets/discussion.html @@ -0,0 +1,226 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Discussion Widget</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="You can embed discussions from any public channel on your website. You only need a link to a post with comments to embed…"> + <meta property="og:title" content="Discussion Widget"> + <meta property="og:image" content=""> + <meta property="og:description" content="You can embed discussions from any public channel on your website. You only need a link to a post with comments to embed…"> + <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?215" 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/discussion" >Discussion Widget</a></li></ul></div> + <h1 id="dev_page_title">Discussion Widget</h1> + + <div id="dev_page_content"><p>You can <strong>embed discussions from any public channel</strong> on your website. You only need a link to a post with comments to embed it together with all discussion. </p> +<p>If you have a website with articles and a telegram channel where you post links to these articles, you can use this widget to show discussions from that channel on your website. In this case you only need a link to the channel. Discussions will be available on your website as soon as you post a link into the channel. For this to work, you should add the <code><link rel="canonical" href="%page_url%"></code> tag to the page header where <code>%page_url%</code> is the canonical URL of the current page.</p> +<h3><a class="anchor" name="configure-widget" href="#configure-widget"><i class="anchor-icon"></i></a>Configure widget</h3> +<p>You can choose options for your widget using the form below.</p> +<p><form class="form-horizontal form-telegram clearfix" id="discussion_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 or a channel"> + <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">Comments limit:</label> + <div class="col-md-2"> + <div class="textfield-item" style="width:100%"> + <input id="comments_limit" name="comments_limit" type="text" autocomplete="off" class="form-control" placeholder="5" maxlength="2"> + <div class="textfield-item-underline"></div> + </div> + </div> + <label class="col-md-2 control-label">Height:</label> + <div class="col-md-2"> + <div class="textfield-item" style="width:100%"> + <input id="height" name="height" type="text" autocomplete="off" class="form-control" placeholder="auto" maxlength="4"> + <div class="textfield-item-underline"></div> + </div> + </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="colorful" 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">Use different colors for names</span> + </label> + <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 class="help-block canonical-helper hide">Make sure you have a <code><link rel="canonical" href="%page_url%"></code> tag in the page header with the canonical url of the current page.</div> + </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> +<h3><a class="anchor" name="basic-comments" href="#basic-comments"><i class="anchor-icon"></i></a>Basic comments</h3> +<p>If you're looking to simply add Telegram comments to <strong>pages on your website</strong>, without linking them with a channel, you can use our <a href="https://comments.app/">basic comments</a> solution.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/jquery-ui.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> +<script src="/js/core-widgets.js?1"></script> + + <script>DiscussionWidget.init({"default_link":"https:\/\/t.me\/durov\/126","link_error":"Invalid post link","widget_script":"https:\/\/telegram.org\/js\/telegram-widget.js?15"}); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/widgets/login.html b/data/corefork.telegram.org/widgets/login.html new file mode 100644 index 0000000000..d8c245ae6f --- /dev/null +++ b/data/corefork.telegram.org/widgets/login.html @@ -0,0 +1,404 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Login Widget</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="The Telegram login widget is a simple way to authorize users on your website. +Check out this post for a general overview…"> + <meta property="og:title" content="Telegram Login Widget"> + <meta property="og:image" content="https://corefork.telegram.org/file/811140220/1a02/WFoFUXRl_C8.20012/170c02fae7a0c638aa"> + <meta property="og:description" content="The Telegram login widget is a simple way to authorize users on your website. +Check out this post for a general overview…"> + <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/telegram.css?215" 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/login" >Telegram Login Widget</a></li></ul></div> + <h1 id="dev_page_title">Telegram Login Widget</h1> + + <div id="dev_page_content"><blockquote> +<p>The Telegram <strong>login widget</strong> is a simple way to authorize users on your website.<br>Check out <a href="https://telegram.org/blog/login">this post</a> for a general overview of the widget.</p> +</blockquote> +<h3><a class="anchor" name="setting-up-a-bot" href="#setting-up-a-bot"><i class="anchor-icon"></i></a>Setting up a bot</h3> +<p>To use the login widget, you'll need a <a href="/bots#3-how-do-i-create-a-bot"><strong>Telegram bot</strong></a>.</p> +<p>We strongly recommend that the <strong>profile picture</strong> of the bot you use for authorization corresponds with your website‘s logo, and that the bot’s <strong>name</strong> reflects that connection.</p> +<p>Users will see this message when they log into your website:</p> +<div class="blog_image_wrap"> + <a href="/file/811140314/17c1/xf4ULBL5tmE.58438/07ff5b2958ed0e7e36" target="_blank"><img src="/file/811140220/1a02/WFoFUXRl_C8.20012/170c02fae7a0c638aa" title="Login confirmation box" /></a> +</div> + +<p>It is more likely that users will log in if your bot has a name and logo they expect to see.</p> +<h3><a class="anchor" name="linking-your-domain-to-the-bot" href="#linking-your-domain-to-the-bot"><i class="anchor-icon"></i></a>Linking your domain to the bot</h3> +<p>Once you have chosen a bot, send the <strong>/setdomain</strong> command to <a href="https://t.me/botfather">@Botfather</a> to link your website's domain to the bot. Then configure your widget below and embed the code on your website.</p> +<h3><a class="anchor" name="widget-configuration" href="#widget-configuration"><i class="anchor-icon"></i></a>Widget configuration</h3> +<p><form class="form-horizontal form-telegram clearfix" id="login_widget_config"> + <div class="form-group"> + <label class="col-md-3 control-label">Bot Username:</label> + <div class="col-md-6"> + <div class="form-control-dropdown" id="bot_username_dropdown"> + <div class="textfield-item"> + <input id="bot_username" name="bot_username" type="text" class="form-control" placeholder="enter username, e.g. samplebot" value="" onchange="updateWidget()" onblur="updateWidget()"> + <div class="textfield-item-underline"></div> + <span class="textfield-item-error" id="username_error"></span> + </div> + <button type="button" class="btn btn-default form-control-dropdown-button dropdown-toggle" data-toggle="dropdown"></button> + <div class="dropdown-menu form-control-dropdown-list" id="bot_username_dropdown_list"></div> + </div> + <span id="bot_username_help" class="help-block">Log in below to load your bots with linked domains</span> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Button Style:</label> + <div class="col-md-6"> + <label class="radio-item radio-item-block"> + <input type="radio" class="radio" name="widget_size" value="large" onchange="sizeChange(this)" 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">Large</span> + </label> + <label class="radio-item radio-item-block"> + <input type="radio" class="radio" name="widget_size" value="medium" onchange="sizeChange(this)" /> + <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">Medium</span> + </label> + <label class="radio-item radio-item-block"> + <input type="radio" class="radio" name="widget_size" value="small" onchange="sizeChange(this)" /> + <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">Small</span> + </label> + </div> + <div class="col-md-6 col-md-offset-3"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="userpic" value="1" onchange="updateWidget(true)" checked /> + <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">Show User Photo</span> + </label> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Corner Radius:</label> + <div class="col-md-6"> + <label class="radio-item radio-item-block"> + <input type="radio" class="radio" name="radius" value="default" onchange="radiusChange(this)" 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">Default</span> + </label> + <label class="radio-item radio-item-block radio-item-justified"> + <input type="radio" class="radio" name="radius" value="custom" onchange="radiusChange(this)" /> + <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">Custom</span> + <span class="justified-wrap"> + <span class="textfield-item" style="width: 36px;"> + <input id="radius_value" name="radius_value" type="text" class="form-control" value="20" onchange="radiusValueChange(this)" onfocus="radiusValueFocus(this)" maxlength="3" style="text-align: center;"> + <span class="textfield-item-underline"></span> + </span> + </span> + </label> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Authorization Type:</label> + <div class="col-md-6"> + <label class="radio-item radio-item-block"> + <input type="radio" class="radio" name="auth_type" value="callback" onchange="authTypeChange(this)" 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">Callback</span> + </label> + <label class="radio-item radio-item-block radio-item-justified"> + <input type="radio" class="radio" name="auth_type" value="redirect" onchange="authTypeChange(this)" /> + <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">Redirect to URL</span> + <span class="justified-wrap"> + <span class="textfield-item"> + <input id="redirect_url" name="redirect_url" type="text" class="form-control" value="" onchange="updateWidget()" onfocus="redirectUrlFocus(this)"> + <span class="textfield-item-underline"></span> + </span> + </span> + </label> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Request Access:</label> + <div class="col-md-6"> + <label class="checkbox-item checkbox-item-block"> + <input type="checkbox" class="checkbox" name="request_write" value="1" onchange="updateWidget(true)" checked /> + <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">to send messages from your bot</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="embedSelect(this)"></textarea> + </div> + </div> + + <div class="form-group"> + <div class="col-md-6 col-md-offset-3"> + <div class="widget_container" id="widget_container"></div> + </div> + </div> +</form></p> +<h3><a class="anchor" name="receiving-authorization-data" href="#receiving-authorization-data"><i class="anchor-icon"></i></a>Receiving authorization data</h3> +<p>After a successful authorization, the widget can return data in two ways:</p> +<ul> +<li>by redirecting the user to the URL specified in the <code>data-auth-url</code> attribute with the following parameters: <em>id</em>, <em>first_name</em>, <em>last_name</em>, <em>username</em>, <em>photo_url</em>, <em>auth_date</em> and <em>hash</em>;</li> +<li>by calling the callback function <code>data-onauth</code> with the JSON-object containing <em>id</em>, <em>first_name</em>, <em>last_name</em>, <em>username</em>, <em>photo_url</em>, <em>auth_date</em> and <em>hash</em> fields.</li> +</ul> +<h3><a class="anchor" name="checking-authorization" href="#checking-authorization"><i class="anchor-icon"></i></a>Checking authorization</h3> +<p>You can verify the authentication and the integrity of the data received by comparing the received <em>hash</em> parameter with the hexadecimal representation of the <a href="https://en.wikipedia.org/wiki/Hash-based_message_authentication_code">HMAC-SHA-256</a> signature of the <strong>data-check-string</strong> with the <a href="https://en.wikipedia.org/wiki/SHA-2">SHA256</a> hash of the <a href="/bots#creating-a-new-bot">bot's token</a> used as a secret key.</p> +<p><strong>Data-check-string</strong> is a concatenation of all received fields, sorted in alphabetical order, in the format <code>key=<value></code> with a <a href="https://en.wikipedia.org/wiki/Newline">line feed</a> character ('\n', 0x0A) used as separator – e.g., <code>'auth_date=<auth_date>\nfirst_name=<first_name>\nid=<id>\nusername=<username>'</code>.</p> +<p>The full check might look like:</p> +<pre><code>data_check_string = ... +secret_key = SHA256(<bot_token>) +if (hex(HMAC_SHA256(data_check_string, secret_key)) == hash) { + // data is from Telegram +}</code></pre> +<p>To prevent the use of outdated data, you can additionally check the <em>auth_date</em> field, which contains a Unix timestamp when the authentication was received.</p> +<h3><a class="anchor" name="sample-implementation" href="#sample-implementation"><i class="anchor-icon"></i></a>Sample implementation</h3> +<p>You can find <strong>sample PHP code</strong> for checking authorization and receiving data about a logged in user <a href="https://gist.github.com/anonymous/6516521b1fb3b464534fbc30ea3573c2">on this page</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="//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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/jquery-ui.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>function onTelegramAuth(user) { + var user_fullname = user.first_name + (user.last_name ? ' ' + user.last_name : ''); + if (window.botsLoaded) { + return alert('You are already logged in as ' + user_fullname + '.'); + } + $.ajax({ + url: '/loadbots', + type: 'POST', + data: user, + dataType: 'json', + success: function (data) { + window.botsLoaded = true; + if (data.dd) { + $('#bot_username_dropdown').addClass('has-items'); + $('#bot_username_dropdown_list').html(data.dd); + $('#bot_username_dropdown_list .form-control-dropdown-list-item').click(function() { + $('#bot_username').val($(this).data('text')).select(); + updateWidget(); + }); + $('#bot_username_help').html("Select one of your bots".replace('{full_name}', escapeHTML(user_fullname))); + } else { + $('#bot_username_help').html("Create a <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/t.me\/botfather\">new bot<\/a> or link your domain to an existing one"); + } + var scrollTop = $('#login_widget_config').offset().top - 70; + $('html').animate({scrollTop: scrollTop}, 200, data.dd ? function() { + $('#bot_username_dropdown .form-control-dropdown-button').dropdown('toggle'); + } : null); + }, + error: function (xhr) { + alert(xhr.responseText || 'Unknown error'); + } + }); +} +function updateWidget(widget_update, init) { + var form = $('#login_widget_config').get(0); + var tfi = $('#bot_username').parents('.textfield-item'); + var size = form.widget_size.value; + var userpic = form.userpic.checked; + var bot_username = init ? 'samplebot' : ($('#bot_username').val() || ''), + match, has_username; + if (match = bot_username.match(/^(?:(?:(?:https?):\/\/)?(?:t\.me|telegram\.me|telegram\.dog)\/|@)?([a-zA-Z0-9_]+)$/i)) { + var username = match[1]; + if (bot_username != match[1]) { + bot_username = match[1]; + $('#bot_username').val(bot_username); + } + tfi.removeClass('is-invalid'); + has_username = true; + } else { + if (!bot_username) { + $('#username_error').html("Bot username required"); + } else { + $('#username_error').html("Bot username invalid"); + } + $('#bot_username').one('input', function() { + tfi.removeClass('is-invalid'); + }); + tfi.addClass('is-invalid'); + has_username = false; + } + var attrs = '', html = ''; + var radius = form.radius.value; + if (radius == 'custom') { + var radius_value = $('#radius_value').val(); + attrs += ' data-radius="' + escapeHTML(radius_value) + '"'; + } + if (widget_update) { + var code = '<script async src="https://telegram.org/js/telegram-widget.js?15" data-telegram-login="samplebot" data-size="' + escapeHTML(size) + '"' + (!userpic ? ' data-userpic="false"' : '') + ' data-onauth="onTelegramAuth(user)"' + attrs + (form.request_write.checked ? ' data-request-access="write"' : '') + '><\/script>'; + $('#widget_container').html(code); + } + var post_link = $('#post_link').val() || 'https://t.me/telegram/83', + match; + var auth_type = form.auth_type.value; + if (auth_type == 'redirect') { + var redirect_url = $('#redirect_url').val(); + attrs += ' data-auth-url="' + escapeHTML(redirect_url) + '"'; + } else if (auth_type == 'callback') { + attrs += ' data-onauth="onTelegramAuth(user)"'; + html += "\n<script type=\"text/javascript\">\n function onTelegramAuth(user) {\n alert('Logged in as ' + user.first_name + ' ' + user.last_name + ' (' + user.id + (user.username ? ', @' + user.username : '') + ')');\n }\n<\/script>"; + } + var code = '<script async src="https://telegram.org/js/telegram-widget.js?15" data-telegram-login="' + escapeHTML(bot_username || 'samplebot') + '" data-size="' + escapeHTML(size) + '"' + (!userpic ? ' data-userpic="false"' : '') + attrs + (form.request_write.checked ? ' data-request-access="write"' : '') + '><\/script>' + html; + $('#embed_code').val(code); + $('#embed_code').height(0); + $('#embed_code').height($('#embed_code').get(0).scrollHeight); + return has_username; +} +function fixRadiusValue(update_real) { + var form = $('#login_widget_config').get(0); + if (update_real) { + var radius_value = form.radius_value.value.replace(/[^0-9]+/g, ''); + form.radius_value.realValue = radius_value; + } else { + var radius_value = (form.radius_value.realValue || form.radius_value.defaultValue).replace(/[^0-9]+/g, ''); + form.radius_value.value = radius_value; + } + radius_value = parseInt(radius_value); + if (radius_value <= 0) { + form.radius_value.value = 0; + } else if (form.widget_size.value == 'small' && radius_value > 10) { + form.radius_value.value = 10; + } else if (form.widget_size.value == 'medium' && radius_value > 14) { + form.radius_value.value = 14; + } else if (form.widget_size.value == 'large' && radius_value > 20) { + form.radius_value.value = 20; + } else if (form.radius_value.value != radius_value.toString()) { + form.radius_value.value = radius_value; + } +} +function sizeChange(el) { + fixRadiusValue(); + updateWidget(true); +} +function radiusChange(el) { + if (el.value == 'custom') { + $('#radius_value').select(); + } + updateWidget(true); +} +function radiusValueFocus(el) { + fixRadiusValue(); + el.form.radius.value = 'custom'; + updateWidget(true); +} +function radiusValueChange(el) { + fixRadiusValue(true); + updateWidget(true); +} +function authTypeChange(el) { + if (el.value == 'redirect') { + $('#redirect_url').select(); + } + updateWidget(); +} +function redirectUrlFocus(el) { + el.form.auth_type.value = 'redirect'; + updateWidget(); +} +function embedSelect(el) { + if (updateWidget()) { + el.select(); + } else { + $('#bot_username').select(); + } +} +updateWidget(true, true); +initRipple(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/corefork.telegram.org/widgets/post.html b/data/corefork.telegram.org/widgets/post.html new file mode 100644 index 0000000000..383e14184f --- /dev/null +++ b/data/corefork.telegram.org/widgets/post.html @@ -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. Here’s what an embed of a Telegram message looks like when…"> + <meta property="og:title" content="Post Widget"> + <meta property="og:image" content="https://corefork.telegram.org/file/811140747/166d/MNEJA3BlETo.107862/6fe98d36f382b03091"> + <meta property="og:description" content="You can embed messages from public groups and channels anywhere. Here’s 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?215" 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. Here’s 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>< > 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="//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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/jquery-ui.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></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> + diff --git a/data/corefork.telegram.org/widgets/share.html b/data/corefork.telegram.org/widgets/share.html new file mode 100644 index 0000000000..18ec61fb75 --- /dev/null +++ b/data/corefork.telegram.org/widgets/share.html @@ -0,0 +1,250 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Sharing Button</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="description" content="A Telegram Sharing Button is an easy way to let users forward content from your website or app to their friends, Channels…"> + <meta property="og:title" content="Sharing Button"> + <meta property="og:image" content="https://corefork.telegram.org/file/464001511/3/yrhjSo2FPDw.14020/b040084e8ad9951a4b"> + <meta property="og:description" content="A Telegram Sharing Button is an easy way to let users forward content from your website or app to their friends, Channels…"> + <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/telegram.css?215" 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/share" >Sharing Button</a></li></ul></div> + <h1 id="dev_page_title">Sharing Button</h1> + + <div id="dev_page_content"><p>A Telegram <strong>Sharing Button</strong> is an easy way to let users forward content from your website or app to their <strong>friends</strong>, <a href="https://telegram.org/tour/channels"><strong>Channels</strong></a> or <a href="https://telegram.org/blog/albums-saved-messages#saved-messages"><strong>Saved Messages</strong></a> on Telegram.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001548/2/Ug-7BpYHOGI.51801/f0095722cd99a34a46" target="_blank"><img src="/file/464001511/3/yrhjSo2FPDw.14020/b040084e8ad9951a4b" title="TITLE" alt="TITLE" srcset="/file/464001548/2/Ug-7BpYHOGI.51801/f0095722cd99a34a46 , 2x" /></a> +</div> + +<p>When a user presses the button, Telegram asks them to choose a chat, group or channel where your link will be shared. You can also add some text that describes the link – the user will be able to edit it before sending the message. </p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001274/2/e1tzJ2HkJOk.156878/ca3fda3984e764eee4" target="_blank"><img src="/file/464001467/1/aAY6bzDmuCI.37875/076ad2c2586eca3c06" title="TITLE" alt="TITLE" srcset="/file/464001274/2/e1tzJ2HkJOk.156878/ca3fda3984e764eee4 , 2x" /></a> +</div> + +<blockquote> +<p>Check out posts on the <a href="https://telegram.org/blog">Telegram Blog</a> for working examples of sharing buttons.</p> +</blockquote> +<h3><a class="anchor" name="adding-telegram-sharing-buttons-to-your-website" href="#adding-telegram-sharing-buttons-to-your-website"><i class="anchor-icon"></i></a>Adding Telegram sharing buttons to your website</h3> +<h4><a class="anchor" name="widget-constructor" href="#widget-constructor"><i class="anchor-icon"></i></a>Widget Constructor</h4> +<p>Use this constructor to get embeddable code for your website.</p> +<p><br/></p> + +<p><form class="form-horizontal form-telegram clearfix" id="share_widget_config"> + <div class="form-group"> + <label class="col-md-3 control-label">URL to Share:</label> + <div class="col-md-6"> + <div class="textfield-item"> + <input id="share_url" name="share_url" type="text" class="form-control" placeholder="Page link, e.g. https://telegram.org/" onchange="updateWidget()" onblur="updateWidget()"> + <div class="textfield-item-underline"></div> + <span class="textfield-item-error" id="share_url_error"></span> + </div> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Optional Comment:</label> + <div class="col-md-6"> + <div class="textfield-item"> + <input id="share_comment" name="share_comment" type="text" class="form-control" placeholder="Check this out!" onchange="updateWidget()" onblur="updateWidget()"> + <div class="textfield-item-underline"></div> + </div> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Button Size:</label> + <div class="col-md-6"> + <label class="radio-item radio-item-block"> + <input type="radio" class="radio" name="button_size" value="" onchange="updateWidget()" 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">Medium</span> + </label> + <label class="radio-item radio-item-block"> + <input type="radio" class="radio" name="button_size" value="large" onchange="updateWidget()" /> + <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">Large</span> + </label> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">Button Text:</label> + <div class="col-md-6"> + <label class="radio-item radio-item-block"> + <input type="radio" class="radio" name="button_text" value="" onchange="updateWidget()" 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">Share</span> + </label> + <label class="radio-item radio-item-block"> + <input type="radio" class="radio" name="button_text" value="notext" onchange="updateWidget()" /> + <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">No Text</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-6 col-md-offset-3"> + <div class="widget_container" id="widget_container"></div> + </div> + </div> +</form></p> +<h4><a class="anchor" name="custom-buttons" href="#custom-buttons"><i class="anchor-icon"></i></a>Custom buttons</h4> +<p>Feel free to create your own custom UI for the button. The only thing you need to make it work is to point the user to this URL on click:</p> +<pre><code>https://t.me/share/url?url={url}&text={text}</code></pre> +<p>where <code>{url}</code> is the URL the user will be sharing and <code>{text}</code> is an optional description that will be included with the link. Both values should be <a href="https://en.wikipedia.org/wiki/Percent-encoding">URL-encoded</a>.</p> +<p>Here is a sample code for PHP:</p> +<pre><code>/** + * @param string $url Absolute URL to share, e.g. "https://example.com/path/to/article?with=params" + * @param string $text Optional comment to share URL with, e.g. "Check out this article!" + * @return string Button HTML markup, feel free to modify to your taste + */ +function telegramForwardButton($url, $text = '') { + $share_url = 'https://t.me/share/url?url='.rawurlencode($url).'&text='.rawurlencode($text); + return "<a href=\"{$share_url}\">Share</a>"; +}</code></pre> +<p>You are welcome to use the <a href="https://telegram.org/press#telegram-logos">Telegram Logos</a> in your custom button design.</p> +<h4><a class="anchor" name="integrations-and-libraries" href="#integrations-and-libraries"><i class="anchor-icon"></i></a>Integrations and libraries</h4> +<ul> +<li><a href="https://en.blog.wordpress.com/2016/04/13/new-on-wordpress-com-sharing-buttons-for-whatsapp-telegram-and-skype/">Sharing buttons on WordPress.com blogs</a></li> +<li><a href="https://www.addtoany.com/blog/new-share-buttons-and-icons-sms-telegram-google-classroom-github/">AddToAny share buttons</a></li> +</ul> +<p>If you have a library, plugin or integration script for Telegram sharing buttons, please contact <a href="https://t.me/botsupport">@BotSupport</a> and we'll add you to this list.</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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/jquery-ui.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>function updateWidget() { + var form = $('#share_widget_config').get(0); + var tfi = $('#share_url').parents('.textfield-item'); + var share_url = $('#share_url').val() || 'https://core.telegram.org/widgets/share', + match; + var share_comment = $('#share_comment').val() || ''; + if (!share_url.match(/^(?:(?:https?):\/\/)?.+\//i)) { + tfi.addClass('is-invalid'); + $('#share_url_error').html("URL is invalid"); + $('#share_url').one('input', function() { + tfi.removeClass('is-invalid'); + }); + return; + } + + var button_size = form.button_size.value; + var button_text = form.button_text.value; + tfi.removeClass('is-invalid'); + var code = '<script async src="https://telegram.org/js/telegram-widget.js?15" data-telegram-share-url="' + escapeHTML(share_url) + '"' + (share_comment ? ' data-comment="' + escapeHTML(share_comment) + '"' : '') + (button_size ? ' data-size="' + escapeHTML(button_size) + '"' : '') + (button_text ? ' data-text="' + escapeHTML(button_text) + '"' : '') + '><\/script>'; + $('#embed_code').val(code); + $('#embed_code').height(0); + $('#embed_code').height($('#embed_code').get(0).scrollHeight); + if (window.lastWidgetCode != code) { + window.lastWidgetCode = code; + $('#widget_container').html(code); + } +} +updateWidget(); +initRipple(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org.html b/data/telegram.org.html new file mode 100644 index 0000000000..c8aca89b2d --- /dev/null +++ b/data/telegram.org.html @@ -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?215" 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">O‘zbek</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="active"><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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management 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 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 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 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?43"></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> + diff --git a/data/telegram.org/android.html b/data/telegram.org/android.html new file mode 100644 index 0000000000..b3446fa6dc --- /dev/null +++ b/data/telegram.org/android.html @@ -0,0 +1,79 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram for Android</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Telegram for Android"> + <meta property="og:image" content=""> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Download Telegram for your Android device here. This version has fewer restrictions and is updated more frequently than the Google Play version."> + + <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?215" 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">O‘zbek</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="active"><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="td_content_wrap clearfix"> + + <div class="td_screenshot_tdirect"></div> + + <a href="" class="tl_content_title_link"> + <h1 class="td_content_tdirect_title">Telegram for Android</h1> + </a> + <div class="td_about_tdirect">You can download Telegram for your <b>Android</b> device here. This version has fewer restrictions and receives <b>automatic updates</b> directly from <a href="https://telegram.org/">telegram.org</a></div> + + <div class="td_download_wrap"><a href="/dl/android/apk" class="td_download_btn td_tdirect" >Download Telegram</a></div> + + <div class="td_howto_install_wrap" id="android_howto_install_wrap"> + <h1 class="td_content_tdirect_title">How to Install Telegram?</h1> + <div class="td_about_tdirect td_about_tdirect_install">This video shows how to install Telegram on your <b>Android</b> device. See <a href="https://bugs.telegram.org/c/4006">this page</a> for detailed steps on various versions of Android.</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="/img/tdirect_install_cover.jpg?1" style="max-width: 400px;" title="" alt=""> + <source src="/img/tdirect_install.mp4?1" type="video/mp4"> + </video> + </div> + <div class="td_about_tdirect td_about_tdirect_store">More comfortable with installing apps<br/>from the Google Play Store?<br/><br/><a href="https://telegram.org/dl/android">Download Telegram from Google Play</a></div> + </div> +</div> + + </div> + </div> + </div> + + <script src="/js/main.js?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog.html b/data/telegram.org/blog.html new file mode 100644 index 0000000000..84769c8768 --- /dev/null +++ b/data/telegram.org/blog.html @@ -0,0 +1,268 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Blog</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Telegram Blog"> + <meta property="og:image" content=""> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content=""> + + <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/bootstrap-extra.css?2" rel="stylesheet"> + <link href="/css/telegram.css?215" 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="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_blog_list_page_wrap"> + <h2 class="tl_blog_list_header">Telegram News</h2> + <div class="tl_blog_list_cards_wrap"> + <a class="dev_blog_card_link_wrap" href="/blog/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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'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><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'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><a class="dev_blog_card_link_wrap" href="/blog/animated-backgrounds"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001689/5/LAdUj8JXG_c.61616/b196801953bc54ecd5" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title"> Animated Backgrounds</h4> + <div class="dev_blog_card_lead">In addition to Group Video Calls, this update adds animated backgrounds and message sending animations, as well as a new menu button for bots, new ways to import stickers, reminders…</div> + </div> + <div class="dev_blog_card_date">Jun 25, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/payments-2-0-scheduled-voice-chats"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001783/2/6Is-qGJkgX4.92603/d4d7fe3e0fc14ff3ba" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</h4> + <div class="dev_blog_card_lead">This update brings Payments 2.0 for all Telegram chats, Scheduling and Mini Profiles for Voice Chats, new versions of Telegram Web for…</div> + </div> + <div class="dev_blog_card_date">Apr 26, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/voice-chats-on-steroids"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001855/3/O31CcF_-a20.86962/cafa0c3d7dd2df1134" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Voice Chats 2.0: Channels, Millions of Listeners, Recorded Chats, Admin Tools</h4> + <div class="dev_blog_card_lead">Voice Chats first appeared in December, adding a new dimension of live talk to Telegram groups. Starting today, they become available in…</div> + </div> + <div class="dev_blog_card_date">Mar 19, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/autodelete-inv2"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001701/5/WvHD2TGPSzU.74913/648f3e17886f6c96f8" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Auto-Delete, Widgets and Expiring Invite Links</h4> + <div class="dev_blog_card_lead">This update brings an auto-delete timer for messages in any chat, as well as new flexible invite links and faster access to your chats…</div> + </div> + <div class="dev_blog_card_date">Feb 23, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/move-history"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001185/1/Z6LVvcYB03g.64305/e8ff8c87c4d656cbe1" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Moving Chat History from Other Apps</h4> + <div class="dev_blog_card_lead">Over 100 million new users joined Telegram this January, seeking more privacy and freedom. But what about the messages and memories that remain in older apps? Starting today, everyone…</div> + </div> + <div class="dev_blog_card_date">Jan 28, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/voice-chats"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001202/4/Mo4VjRb1ndM.81564/729451f158ff1f6267" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Voice Chats Done Right</h4> + <div class="dev_blog_card_lead">Today, Telegram groups get an entire new dimension with Voice Chats – persistent conference calls that members can join and leave as they please. Our 12th update in 2020 brings them…</div> + </div> + <div class="dev_blog_card_date">Dec 23, 2020</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/pinned-messages-locations-playlists"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001601/2/mt8BEZujINg.77182/a233ae72c9bc2b0483" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Pinned Messages 2.0, Improved Live Locations, Playlists and More</h4> + <div class="dev_blog_card_lead">Halloween is just around the corner and we've assembled choice tools to help organize your trick-or-treating. Practice your voodoo skills…</div> + </div> + <div class="dev_blog_card_date">Oct 30, 2020</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/filters-anonymous-admins-comments"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001393/1/LVWv3N21dXY.74168/8184cbaaa407526e35" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Search Filters, Anonymous Admins, Channel Comments and More</h4> + <div class="dev_blog_card_lead">Your personal Telegram Cloud is endless and full of spicy memes – to help you find your way around it, we're introducing Search Filters.…</div> + </div> + <div class="dev_blog_card_date">Sep 30, 2020</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-calls"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001762/1/BUEe0F1Jids.207454/49a4888d0ab7d62e2e" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Calls and Seven Years of Telegram</h4> + <div class="dev_blog_card_lead">Today marks seven years of Telegram. In 2013, we began as a small app focused on secure messaging and have since grown into a platform with over 400M users. Now this platform also…</div> + </div> + <div class="dev_blog_card_date">Aug 14, 2020</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/profile-videos-people-nearby-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001840/2/LFAUy_p-pXo.79318/d12a4155cb4fcb2735" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Profile Videos, 2 GB File Sharing, Group Stats, Improved People Nearby and More</h4> + <div class="dev_blog_card_lead">Today's update brings Profile Videos along with improved People Nearby features, unlimited file sharing with up to 2 Gigabytes per file…</div> + </div> + <div class="dev_blog_card_date">Jul 26, 2020</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/video-editor-gifs"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001939/1/ZKgqpwi8f0A.79759/da2910438344f80100" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Editor, Animated Photos, Better GIFs and More</h4> + <div class="dev_blog_card_lead">In 2015, Telegram released the most powerful photo editor to be implemented in a messaging app, letting you enhance image quality and add…</div> + </div> + <div class="dev_blog_card_date">Jun 4, 2020</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/400-million"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001203/2/XmPHuiOyJME.220492/57fb79cc8f9c73faa6" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">400 Million Users, 20,000 Stickers, Quizzes 2.0 and €400K for Creators of Educational Tests</h4> + <div class="dev_blog_card_lead">Telegram has reached 400,000,000 monthly users, up from 300 million a year ago. Every day…</div> + </div> + <div class="dev_blog_card_date">Apr 24, 2020</div> +</div></a> + </div> + <nav class="pager_wrap clearfix" aria-label="..."> + <ul class="pager"> + + <li class="next"><a href="?offset=20">Older <span aria-hidden="true">→</span></a></li> + </ul> + </nav> +</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?43"></script> + + <script>twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/400-million.html b/data/telegram.org/blog/400-million.html new file mode 100644 index 0000000000..2cfa223db0 --- /dev/null +++ b/data/telegram.org/blog/400-million.html @@ -0,0 +1,272 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>400 Million Users, 20,000 Stickers, Quizzes 2.0 and €400K for Creators of Educational Tests</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="400 Million Users, 20,000 Stickers, Quizzes 2.0 and €400K for Creators of Educational Tests"> + <meta property="og:image" content="https://telegram.org/file/464001203/2/XmPHuiOyJME.220492/57fb79cc8f9c73faa6"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Telegram has reached 400,000,000 monthly users, up from 300 million a year ago. Every day at least 1.5 million new users sign up for Telegram. Features like folders, cloud storage and desktop support make Telegram ideal for remote work and study during the quarantine. It's no wonder Telegram is the #1 most downloaded social media application in over 20 countries."> + <meta property="article:published_time" content="2020-04-24T07:34:22+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001203/2/XmPHuiOyJME.220492/57fb79cc8f9c73faa6" /> + <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/400-million" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">400 Million Users, 20,000 Stickers, Quizzes 2.0 and €400K for Creators of Educational Tests</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/464001811/1/c5KYBQDs3YM.26817.gif/0963a7ffe91b2ba684" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001411/1/bvDLVEKJAbw.304005/bbf341d1af8dc3f105" target="_blank"><img src="/file/464001958/2/zdXvbynuW4I.99063/f03c6966ebeacfc997" srcset="/file/464001411/1/bvDLVEKJAbw.304005/bbf341d1af8dc3f105, 1200w" title="Pictured: Wild animals, like this Telegram dog, have returned to empty cities during the lockdown." alt="400 Million Users, 20,000 stickers, Quizzes 2.0 and €400K for Quiz Creators"/></a> +</div> + +<p>Telegram has reached <strong>400,000,000</strong> monthly users, up from 300 million a year ago.</p> +<p>Every day at least <strong>1.5 million</strong> new users sign up for Telegram. Features like <a href="https://telegram.org/blog/folders"><strong>folders</strong></a>, <strong>cloud storage</strong> and <a href="https://desktop.telegram.org"><strong>desktop</strong></a> <a href="https://macos.telegram.org"><strong>support</strong></a> make Telegram ideal for remote work and study during the quarantine. It's no wonder Telegram is the <strong>#1</strong> most downloaded social media application in over <strong>20</strong> countries – people all over the world are switching to Telegram at an accelerating pace. </p> +<div class="blog_wide_image"> + <a href="/file/464001164/1/_jcqgDTVsoE.45519/c30b194e1e1e8e2306" target="_blank"><img src="/file/464001204/1/iztNwibNJuc.18005/15ac5c8fa76411e01e" title="Making exponential curves nice again." alt="Telegram's growth over the last 7 years." srcset="/file/464001164/1/_jcqgDTVsoE.45519/c30b194e1e1e8e2306 , 2x" /></a> +</div> + +<p>When we started Telegram <strong>7 years ago</strong>, we assumed that people will always choose <strong>freedom</strong> and <strong>quality</strong> over restrictions and mediocrity. As the gap in popularity between Telegram and its older competitors narrows, we find more and more validity in that original assumption. Thank you for being smart and free! </p> +<p>What's next, you might ask? The current <a href="https://telegram.org/blog/coronavirus">global lockdown</a> highlighted the need for a trusted video communication tool. Video calls in 2020 are much like messaging in 2013. There are apps that are either <strong>secure</strong> <em>or</em> <strong>usable</strong>, but not both. We'd like to fix that, and we will focus on bringing you <strong>secure group video calls</strong> in <strong>2020</strong>.</p> +<p>When will they be ready? You'll be the first to know when we're done, promise. So stop asking. <img class="emoji" src="//telegram.org/img/emoji/40/F09F9888.png" width="20" height="20" alt="😈" /></p> +<h3><a class="anchor" name="better-quizzes" href="#better-quizzes"><i class="anchor-icon"></i></a>Better Quizzes</h3> +<p>We added <a href="https://telegram.org/blog/polls-2-0-vmq"><strong>Quiz Mode</strong></a> to <a href="https://telegram.org/blog/polls">Telegram Polls</a> back in January, allowing users to flex their <a href="https://t.me/quizbot?start=GreatMinds">trivia</a> <a href="https://t.me/QuizBot?start=MemeQuiz">muscles</a>. In recent weeks, we witnessed a surge of more serious <strong>educational tests and quizzes</strong> created using <a href="https://t.me/quizbot">@QuizBot</a>. Today's update upgrades quizzes with <strong>educational features</strong>.</p> +<p>You can now add <strong>explanations</strong> that appear as users respond to quiz questions, helping them <strong>learn</strong> from their mistakes, or giving them more <strong>context</strong>. Explanations make Telegram quizzes suitable not only for <strong>testing knowledge</strong> — but also for <strong>spreading</strong> 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/464001536/1/LQ1UJO2IbsM.68177/84d690080d07d4cd41" style="max-width: 400px;" title="Fun fact: there's also a giant rubber duck that tours the world with a message of peace. It's the sweetest, scariest thing we've ever seen." alt="A timed quiz-style poll with an explanation"> + <source src="/file/464001461/2/UWujwvG4fbE.1041442.mp4/6aba5fd5242cc89002" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>For example, update the app and try this test on <a href="https://t.me/QuizBot?start=TelegramHistory"><em>Telegram History and Features</em></a>.</p> +</blockquote> +<p>When you create a quiz via <a href="https://t.me/quizbot">@QuizBot</a>, you can set a <strong>timer</strong> for questions. Timers add to the competitive element of Telegram quizzes, which are often used for exam preparation in student group chats. With the new <strong>countdown animation</strong>, everyone can see how much time they have left.</p> +<h3><a class="anchor" name="400k-for-creators-of-educational-tests" href="#400k-for-creators-of-educational-tests"><i class="anchor-icon"></i></a>€400K for Creators of Educational Tests</h3> +<p>With <strong>2 billion</strong> students currently away from schools, the world is in dire need of online educational tools. We’d like to contribute to solving this problem by creating a <strong>database of educational tests</strong> for all subjects and levels. To do that, today we’re announcing a crowd-sourcing initiative in which we will distribute <strong>EUR 400,000</strong> among creators of educational tests.</p> +<p>To take part, use <a href="https://t.me/quizbot">@QuizBot</a> to create and publish an <strong>original educational test</strong> on <strong>any subject</strong> at any difficulty level, in <strong>any language</strong>. Feel free to choose anything from basic <em>Medieval European History</em> in English to <em>Mikrobiologie für Experten</em> auf Deutsch – and add any media you require to your questions, but make sure all intellectual property rights are respected.</p> +<p>We will publish the quizzes you submit in a <strong>searchable directory</strong>. Based on their quality and popularity we will then announce the winners in several stages. Submissions for the first stage end on <strong>May 15</strong>.</p> +<blockquote> +<p>Subscribe to the <a href="https://t.me/contest">@contest</a> channel for updates on this and other competitions we run. Last year alone, we distributed <strong>2 Million Euro</strong> among the winners of our contests. <img class="emoji" src="//telegram.org/img/emoji/40/F09F92B0.png" width="20" height="20" alt="💰" /></p> +</blockquote> +<h3><a class="anchor" name="20-000-stickers" href="#20-000-stickers"><i class="anchor-icon"></i></a>20,000 Stickers</h3> +<p>While Telegram has been the go-to place for stickers since they <a href="https://telegram.org/blog/stickers-revolution">first came out</a>, until today there wasn’t an easy way to see all the best stickers all at once. Meet the new <strong>sticker directory</strong>, where you can browse and search the over <strong>20,000</strong> high-quality free Telegram stickers created in the last <strong>5 years</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/464001413/2/SH_cv9-6v1k.68382/85b687beccbfa9bf1c" style="max-width: 400px;" title="Remember when stickers were static? And when they were black and white?" alt="Telegram's new Sticker Directory."> + <source src="/file/464001083/1/WZSlX4pob3U.4595958.mp4/76856d659062b5b24f" type="video/mp4"> + </video> +</div> + +<p>If you have a particular set in mind, you can find it via <strong>search</strong>, or if you feel like taking a trip through the <em>Museum of Sticker History</em>, you can scroll through the list and go all the way from <a href="https://t.me/addstickers/PlagueDoctorHawk">today's trends</a> to the first <a href="https://t.me/addstickers/GreatMindsClassic">Sticker Sapiens</a> that walked the earth.</p> +<h3><a class="anchor" name="new-attachment-menu-on-android" href="#new-attachment-menu-on-android"><i class="anchor-icon"></i></a>New Attachment Menu on Android</h3> +<p>On Android, all sections of the attachment menu are now accessible as <strong>expandable layers</strong>, making the menu sleek, chic, and easier to use. Also, don't miss the cute <strong>animated icons</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/464001397/1/Dyso74BocyQ.117630/59fb217cb272794c7d" style="max-width: 400px;" title="The cutest one is the location sharing icon. And it's waiting patiently for the day you can come out again." alt="New attachment menu on Android."> + <source src="/file/464001778/2/3KG6W3ZEGFc.2571330.mp4/88b65ee9ebde49ede4" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="macos-improvements" href="#macos-improvements"><i class="anchor-icon"></i></a>macOS Improvements</h3> +<p>Users of <a href="https://macos.telegram.org">Telegram for macOS</a> can now access <strong>Shared Media</strong> straight from the redesigned profile pages. Those who have a lot of <a href="https://telegram.org/blog/folders">Folders</a> may like the new <strong>folder sidebar</strong> with icons in the style of <a href="https://telegram.org/blog/folders#desktop-sync">Telegram Desktop</a>.</p> +<p>By the way, this screenshot was created using the updated <strong>in-app photo editor</strong> which now allows you to <strong>draw on pictures</strong> when sending or editing:</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001816/1/uiw6QIlHBoM.174455/5e3d254b95e0c72a81" target="_blank"><img src="/file/464001136/2/y6xuulQI0V8.61466/721828baca0337e831" title="Proven by Telegram support: a quick red circle on a picture is MUCH better than a thousand words." alt="New macOS features." srcset="/file/464001816/1/uiw6QIlHBoM.174455/5e3d254b95e0c72a81 , 2x" /></a> +</div> + +<h3><a class="anchor" name="bullseye" href="#bullseye"><i class="anchor-icon"></i></a>Bullseye</h3> +<p>To accompany the animated <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" /> emoji from <a href="https://telegram.org/blog/folders#and-one-more-thing">last update</a>, you can now take a shot at throwing animated darts <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" /> in any chat to see who hits the bullseye first.</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/464001223/1/TBJ0lwTKV6s.42061/4777ec9685ed57611c" style="max-width: 400px;" title="A posh and suspenseful way to decide who's washing the dishes." alt="New darts minigame animated stickers."> + <source src="/file/464001397/2/Pv_Dwg1Ohu8.1009323.mp4/37ab611adf46a47b4a" type="video/mp4"> + </video> +</div> + +<p>We hope you like this update – all <strong>400,000,000</strong> of you.</p> +<div><br></div> + +<div class="blog_footer"> + April 24, 2020<br> + Pavel Durov +</div></div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2F400-million&text=Telegram%20reaches%20400%2C000%2C000%20monthly%20active%20users." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram reaches 400,000,000 monthly active users." data-url="https://telegram.org/blog/400-million"><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 reaches 400,000,000 monthly active users." data-url="https://telegram.org/blog/400-million" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/admin-revolution.html b/data/telegram.org/blog/admin-revolution.html new file mode 100644 index 0000000000..cfb3035f2f --- /dev/null +++ b/data/telegram.org/blog/admin-revolution.html @@ -0,0 +1,261 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Supergroups 10,000: Admin Tools & More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Supergroups 10,000: Admin Tools & More"> + <meta property="og:image" content="https://telegram.org/file/811140894/940/MolYiCMPhmI.152714/96e3af9cce690b0602"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Massive Supergroups with 10K members, member search, flexible admin rights, temporary bans, admin log, and more"> + <meta property="article:published_time" content="2017-06-30T12:03:54+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140894/940/MolYiCMPhmI.152714/96e3af9cce690b0602" /> + <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/admin-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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Supergroups 10,000: Admin Tools & More</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140509/b45/dQTLEwKZ9gs.22232.gif/4580677d940852f30e" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/811140865/8c4/3Wqa9drORys.845661/bcabd0e0ebd87e7256" target="_blank"><img src="/file/811140894/940/MolYiCMPhmI.152714/96e3af9cce690b0602" title="Group Admin Revolution. Click for hi-res image"/></a> +</div> + +<blockquote> +<p>This is an old blog post. In case you missed it, groups can already have up to <strong>200,000 members</strong> each.</p> +</blockquote> +<p>With Telegram 4.1, we're increasing the maximum size of supergroups to <strong>10,000 members</strong> each. That’s a <strong>lot</strong> of people packed into one group, and now users and admins can use search to find specific users among them:</p> +<div class="blog_image_wrap"> + <a href="/file/811140191/c20/V5LzBddCAoc.17118/2435c07941bf9e8925" target="_blank"><img src="/file/811140191/c20/V5LzBddCAoc.17118/2435c07941bf9e8925" title="Search for members" /></a> + <p>Search for members</p> +</div> + +<p>Admins can also search for members in their channels.</p> +<p>With groups as big as 10,000 people – the size of a decent small town – you may be looking for some more powerful management tools. And that’s exactly what Telegram 4.1 gives you.</p> +<!-- <div class="blog_image_wrap"> + <a href="/file/811140081/cb3/Ep4rTrv7LgY.58011/a944b8466f1719c1d7" target="_blank"><img src="/file/811140081/cb3/Ep4rTrv7LgY.58011/a944b8466f1719c1d7" title="New group profile" /></a> + <p>New group profile</p> +</div> --> + +<h3><a class="anchor" name="admin-rights" href="#admin-rights"><i class="anchor-icon"></i></a>Admin Rights</h3> +<p>You can now add admins with specific sets of privileges to help you run your community. Choose who among your trusted admins will be able to add new users, manage messages, block members, edit group info, or even add new admins.</p> +<div class="blog_image_wrap"> + <a href="/file/811140764/e03/uvWuZb0DCvI.50463/ecbdcc74dfc60116df" target="_blank"><img src="/file/811140764/e03/uvWuZb0DCvI.50463/ecbdcc74dfc60116df" title="Admin rights" /></a> + <p>Admin rights</p> +</div> + +<h3><a class="anchor" name="partial-bans" href="#partial-bans"><i class="anchor-icon"></i></a>Partial Bans</h3> +<p>Admins who don’t want to completely ban members from their supergroups can now partially restrict their rights in order to stop behavior that's causing problems. You can put nasty users into read-only mode or maybe stop them from sending stickers or media for a certain period of time. Now you can do all of this with absolute precision:</p> +<div class="blog_image_wrap"> + <a href="/file/811140001/d82/wX1p4uHYxqA.54788/200f54f1742288b0de" target="_blank"><img src="/file/811140001/d82/wX1p4uHYxqA.54788/200f54f1742288b0de" title="Partial bans" /></a> + <p>Partial bans</p> +</div> + +<p>Even robots can get in on the fun. With <a href="https://core.telegram.org/bots/api">Bot API version 3.1</a>, you can use admin bots to automatically impose temporary or permanent bans based on member actions. Check out <a href="https://core.telegram.org/bots/api">the docs here</a> to start building your robotic police force today.</p> +<h3><a class="anchor" name="recent-admin-actions" href="#recent-admin-actions"><i class="anchor-icon"></i></a>Recent Admin Actions</h3> +<p>When multiple admins are working with one group, it’s easy to get confused about which admin did what and when (or which admin bot has gone Skynet on your members). That’s why we've added a “Recent Actions” section to the admins page. This section stores a log of all service actions taken in the group in the last 48 hours and is visible to admins only.</p> +<div class="blog_2images_wrap"> + <div class="blog_image_wrap"> + <a href="/file/811140148/ce3/3jWuIcShQ2E.105963/7f819df55211e9a7e4" target="_blank"><img src="/file/811140148/ce3/3jWuIcShQ2E.105963/7f819df55211e9a7e4" title="Recent admin actions"/></a> + <p>Recent admin actions</p> + </div> + <div class="blog_image_wrap"> + <a href="/file/811140574/d50/AEmMJcBL9Lg.60674/3865d27122d173ad08" target="_blank"><img src="/file/811140574/d50/AEmMJcBL9Lg.60674/3865d27122d173ad08" title="Precise filters"/></a> + <p>Precise filters</p> </div> +</div> + +<p>Recent actions in supergroups also show messages that were deleted in the last 48 hours and the original versions of edited messages for the same period, so nasty behavior like self-deleted spam will no longer help anyone escape the admins’ wrath. </p> +<h3><a class="anchor" name="sharing-and-android-pay" href="#sharing-and-android-pay"><i class="anchor-icon"></i></a>Sharing and Android Pay</h3> +<p>In other news, <a href="https://telegram.org/dl/ios">Telegram 4.1 for iOS</a> brings you an <strong>improved sharing extension</strong>. When sharing stuff from other apps to Telegram you can add an optional comment and select multiple recipients easily. 3D Touch on the app icon to see some new actions, including taking a photo/video and sending it to multiple recipients.</p> +<div class="blog_image_wrap"> + <a href="/file/811140542/1089/jvlEbpqaOC4.256782/1020f32d91a313220d" target="_blank"><img src="/file/811140542/1089/jvlEbpqaOC4.256782/1020f32d91a313220d" title="New sharing extension" /></a> + <p>New sharing extension</p> +</div> + +<p>On <a href="https://telegram.org/dl/android">Android</a>, Telegram 4.1. gets you <strong>Android Pay</strong> support for Bot Payments and improved media selection – photos and videos are now shown together when sharing from the attachment menu or gallery. </p> +<h3><a class="anchor" name="free-speech" href="#free-speech"><i class="anchor-icon"></i></a>Free speech</h3> +<p>This update also features anti-censorship tools such as the ability to set up a Proxy server in the “Data and Storage” section of the Settings.</p> +<p>We believe in free and secure communication. It’s our responsibility to offer technology to defend our users’ right to privacy and freedom of speech around the world.</p> +<p><em>June 30, 2017<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%2Fadmin-revolution&text=Massive%20Supergroups%20with%2010K%20members%2C%20member%20search%2C%20flexible%20admin%20rights%2C%20temporary%20bans%2C%20admin%20log%2C%20and%20more" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Massive Supergroups with 10K members, member search, flexible admin rights, temporary bans, admin log, and more" data-url="https://telegram.org/blog/admin-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="Massive Supergroups with 10K members, member search, flexible admin rights, temporary bans, admin log, and more" data-url="https://telegram.org/blog/admin-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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/albums-saved-messages.html b/data/telegram.org/blog/albums-saved-messages.html new file mode 100644 index 0000000000..b61f9fc5fd --- /dev/null +++ b/data/telegram.org/blog/albums-saved-messages.html @@ -0,0 +1,268 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Albums, Saved Messages and Better Search</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Albums, Saved Messages and Better Search"> + <meta property="og:image" content="https://telegram.org/file/811140244/19cf/qI7FckVcwM0.164765/ee6f90d2bcba222fe4"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Telegram 4.5 brings grouped photos & videos, saved messages, better search, multiple profile pics and iPhone X support."> + <meta property="article:published_time" content="2017-11-15T11:27:29+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140244/19cf/qI7FckVcwM0.164765/ee6f90d2bcba222fe4" /> + <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/albums-saved-messages" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Albums, Saved Messages and Better Search</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140935/175c/FSf2aidnuaY.21715.gif/31dc2dbb6902dcef78" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/811140244/19cf/qI7FckVcwM0.164765/ee6f90d2bcba222fe4" target="_blank"><img src="/file/811140244/19cf/qI7FckVcwM0.164765/ee6f90d2bcba222fe4" title="Albums, Saved Messages and better search"/></a> +</div> + +<p>Starting with Telegram <strong>4.5</strong>, whenever you send multiple photos or videos they are grouped into <strong>albums</strong>. Each album can include up to <strong>10</strong> photos or videos, arranged in the chat as elegantly proportioned thumbnails. They will also result in one notification instead of ten on the recipient’s side.</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/811140414/185c/tyWWh-bVPGk.25140/c96ef6b09c0aac9705" autoplay loop controls muted> + <source src="/file/811140336/1558/05qbO6eQs6Y.1217232.mp4/c67391f87253f1a571" type="video/mp4"> + </video> + </div> +</div> + +<h3><a class="anchor" name="photo-order" href="#photo-order"><i class="anchor-icon"></i></a>Photo Order</h3> +<p>From now on, you can control the order in which photos are sent. Each photo you choose for sharing will show its sequence number. This makes it easy to double check that your “before-and-after” pics will be sent in the correct order.</p> +<h3><a class="anchor" name="multiple-profile-photos" href="#multiple-profile-photos"><i class="anchor-icon"></i></a>Multiple Profile Photos</h3> +<p>When viewing a photo from an album, you’ll see other pictures from the same group as thumbnails in the lower part of the screen. Profile photos are now also displayed this way, which makes them much easier to navigate.</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/811140110/1575/yMH_csMShfE.11646/7c006c13e9d60e7bb4" autoplay loop controls muted> + <source src="/file/811140579/1ab6/0xCue5uQTUs.390735.mp4/3835fd353792b59305" type="video/mp4"> + </video> + </div> +</div> + +<h3><a class="anchor" name="saved-messages" href="#saved-messages"><i class="anchor-icon"></i></a>Saved Messages</h3> +<p>You can now bookmark important messages by quickly forwarding them to <strong>Saved Messages</strong> – your personal cloud storage for any messages or media you may want to send or forward there. Each saved message has a <strong>“go to”</strong> button that takes you to the right place in the chat where it was originally posted.</p> +<div class="blog_image_wrap"> + <a href="/file/811140056/15c4/7jpm1K9rnfk.121864/55e0c568ec46278e04" target="_blank"><img src="/file/811140056/15c4/7jpm1K9rnfk.121864/55e0c568ec46278e04" title="The Saved Messages Chat" /></a> + <p>Saved Messages Chat</p> +</div> + +<p>The <strong>Saved Messages</strong> chat is always displayed at the top of the list in the <strong>sharing</strong> and <strong>forwarding</strong> menus. This makes it easy to save your favorites while keeping things as tidy as before.</p> +<div class="blog_image_wrap"> + <a href="/file/811140025/1527/CRijxykEGyg.55223/77bff99fdead482253" target="_blank"><img src="/file/811140025/1527/CRijxykEGyg.55223/77bff99fdead482253" title="Sharing menu" /></a> + <p>Number One in the Sharing Menu</p> +</div> + +<p><strong>Saved Messages</strong> are easy to find: they are accessible both from the <strong>Chats</strong> list and from the side panel on Android / Settings on iOS.</p> +<h3><a class="anchor" name="improved-search" href="#improved-search"><i class="anchor-icon"></i></a>Improved Search</h3> +<p>Speaking of finding things, we’ve upgraded the global search algorithm used for finding public channels, groups and bots. Now you can search for public channels and bots by their titles, and most popular items will always be displayed first.</p> +<h3><a class="anchor" name="pinned-messages-in-channels" href="#pinned-messages-in-channels"><i class="anchor-icon"></i></a>Pinned Messages in Channels</h3> +<p>Channel admins can now pin messages to focus their subscribers’ attention on important announcements. This tool can also come in handy if you want to help new subscribers navigate your channel.</p> +<div class="blog_image_wrap"> + <a href="/file/811140986/16cd/u2kFodKdZiI.26583/436a7abe1302e0eb5d" target="_blank"><img src="/file/811140986/16cd/u2kFodKdZiI.26583/436a7abe1302e0eb5d" title="Pinned messages in Channel" /></a> + <p>Pinned Message</p> +</div> + + +<h3><a class="anchor" name="ios-new-settings-iphone-x-support" href="#ios-new-settings-iphone-x-support"><i class="anchor-icon"></i></a>iOS: New Settings, iPhone X Support</h3> +<p>Telegram <strong>4.5</strong> comes packed with goodies for iOS users. The <strong>Settings</strong> screen and the context menu in chats got a makeover. Version <strong>4.5</strong> also works great on <strong>iPhone X</strong>.</p> +<div class="blog_2images_wrap"> + <div class="blog_image_wrap"> + <a href="/file/811140962/18b1/u3MpOgAEirI.72563/a25acabce3b1fb110b" target="_blank"><img src="/file/811140962/18b1/u3MpOgAEirI.72563/a25acabce3b1fb110b" title="Redesigned Settings"/></a> + <p>Redesigned Settings</p> + </div> + <div class="blog_image_wrap"> + <a href="/file/811140925/1a9e/xPqlnpFi83k.57384/aa2dab1940ffc4b58f" target="_blank"><img src="/file/811140925/1a9e/xPqlnpFi83k.57384/aa2dab1940ffc4b58f" title="YYY"/></a> + <p>Edit Settings</p> </div> +</div> + +<p>And that’s it for today. We hope you enjoy these new features while we’re working on the next update!</p> +<div> +<br><br> +</div> + +<p><em>November 15, 2017<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%2Falbums-saved-messages&text=Telegram%204.5%20brings%20grouped%20photos%20%26%20videos%2C%20saved%20messages%2C%20better%20search%2C%20multiple%20profile%20pics%20and%20iPhone%20X%20support." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram 4.5 brings grouped photos & videos, saved messages, better search, multiple profile pics and iPhone X support." data-url="https://telegram.org/blog/albums-saved-messages"><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 4.5 brings grouped photos & videos, saved messages, better search, multiple profile pics and iPhone X support." data-url="https://telegram.org/blog/albums-saved-messages" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/android-2-0.html b/data/telegram.org/blog/android-2-0.html new file mode 100644 index 0000000000..80f5a9fe0c --- /dev/null +++ b/data/telegram.org/blog/android-2-0.html @@ -0,0 +1,257 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram 2.0 for Android: Material Design</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Telegram 2.0 for Android: Material Design"> + <meta property="og:image" content="https://telegram.org/file/811140032/1/MMRJOzbKWQ8/33f76a48a3538d1244"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="#Telegram 2.0 for Android is out: material design, message search and more privacy settings"> + <meta property="article:published_time" content="2014-11-19T18:16:37+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140032/1/MMRJOzbKWQ8/33f76a48a3538d1244" /> + <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/android-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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Telegram 2.0 for Android: Material Design</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140032/1/MMRJOzbKWQ8/33f76a48a3538d1244" class="blog_side_image"/> +</div> + +<p><a href="/dl/android">Telegram for Android</a> received a massive update today, featuring a full redesign along Android 5.0 <strong>material</strong> guidelines and adding long awaited features such as instant full-text cloud search, new flexible privacy settings for last-seen timestamps and account self-destruction.</p> +<h4><a class="anchor" name="material-design" href="#material-design"><i class="anchor-icon"></i></a>Material Design</h4> +<p>Every screen was updated to make Telegram consistent with Android 5.0 design standards and animations. We've also added support for the new standards on Android 4.x and even on older 2.x devices. </p> +<center><div> + <a href="/file/811140117/1/U8DtuwqizBc/f31a8bb95bdf993cea" target="_blank"><img src="/file/811140117/1/U8DtuwqizBc/f31a8bb95bdf993cea" title="Telegram chats" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140309/2/5_Qep6f3_L0/c4ee12e1dfba593223" target="_blank"><img src="/file/811140309/2/5_Qep6f3_L0/c4ee12e1dfba593223" title="Photo picker" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140991/1/NdgNmg0Adbs/80921747d279d0d5c5" target="_blank"><img src="/file/811140991/1/NdgNmg0Adbs/80921747d279d0d5c5" title="Settings" style="width: 195px; padding: 10px 5px" /></a> +<br> +</div></center> + + +<h4><a class="anchor" name="demo" href="#demo"><i class="anchor-icon"></i></a>Demo</h4> +<p>Here‘s what Telegram’s new material design looks like in motion on a Google Nexus phone, just to give you a taste of the animations:</p> +<div class="smarphone_device_nexus"> + <div class="top-bar"></div> + <div class="sleep"></div> + <div class="volume"></div> + <div class="camera"></div> + <div class="screen"> + <video class="smartphone_video_player" onclick="videoTogglePlay(this)" autoplay loop controls> + <!--source src="/resources/video/Material.webm" type="video/webm"--> + <source src="/resources/video/Material.mp4" type="video/mp4"> + </video> + </div> +</div> + + +<h4><a class="anchor" name="instant-full-text-search" href="#instant-full-text-search"><i class="anchor-icon"></i></a>Instant Full-Text Search</h4> +<p>You can now find any message you sent or received in Telegram by using the universal search. Tapping a message in search results sends you to its place in your message history. This way you can find stuff even if you only vaguely remember the context.</p> +<div><center> + <a href="/file/811140235/1/kjcuZeDfRQk/a898fedd8d838bdf16" target="_blank"><img src="/file/811140235/1/kjcuZeDfRQk/a898fedd8d838bdf16" title="Search for messages" style="padding: 10px; width: 200px" /></a> + + <a href="/file/811140505/1/8oTsLroC9m8/d97d3f5d732b9e852f" target="_blank"><img src="/file/811140505/1/8oTsLroC9m8/d97d3f5d732b9e852f" title="Go to message" style="padding: 10px; width: 200px" /></a></center> +</div> + +<p>The search is <strong>much</strong> faster than what you have in GMail and other apps. Our technology guarantees that even if your inbox grows to several hundred thousands of messages, instant search will stay just as fast.</p> +<h4><a class="anchor" name="hiding-last-seen-time" href="#hiding-last-seen-time"><i class="anchor-icon"></i></a>Hiding Last Seen Time</h4> +<p>We take privacy very seriously, so we invested a lot of time and effort to make this feature right. As a result, the <strong>Who can see your Last Seen time</strong> control allows unprecedented precision and flexibility.</p> +<div><center> + <a href="/file/811140623/2/3XOHI5Yo-NM/37dbdf5106e8bfd7c9" target="_blank"><img src="/file/811140623/2/3XOHI5Yo-NM/37dbdf5106e8bfd7c9" title="New Privacy and Security Settings" style="padding: 10px; width: 200px" /></a> + + <a href="/file/811140360/1/bZ1aAOKyVUs/0332446bfad2371a58" target="_blank"><img src="/file/811140360/1/bZ1aAOKyVUs/0332446bfad2371a58" title="Last Seen Settings" style="padding: 10px; width: 200px" /></a> +<br><br> +</center></div> + +<p>In fact, it's so good that we wrote a whole separate blog post about it. Read more here:<br><a href="/blog/privacy-revolution"><strong>Privacy Revolution — Last Seen Done Right »</strong></a></p> +<h4><a class="anchor" name="account-self-destruction" href="#account-self-destruction"><i class="anchor-icon"></i></a>Account Self-Destruction</h4> +<p>Big companies like to accumulate data about their users and keep it for an indefinite time. Telegram is not a commercial organization and we value our disk space greatly. Last year we introduced self-destructing messages, today we are adding self-destructing accounts.</p> +<p>From now on, if you stop using Telegram and do not login for at least 6 months, your account will be deleted along with all messages, media, contacts and every other piece of data you store in the Telegram cloud. You can change the exact period after which your inactive account will self-destruct – with options ranging from 1 month to 1 year.</p> +<h4><a class="anchor" name="but-i-39m-on-ios" href="#but-i-39m-on-ios"><i class="anchor-icon"></i></a>..but I'm on iOS</h4> +<p>Most of these new features are also avaible to iOS fans among Telegram users — except for material design of course. In order to maintain the balance, we're also adding a few nifty features to our iOS app today. Read all about them here:<br><a href="/blog/gifs"><strong>The new Telegram for iOS — GIF search and more »</strong></a></p> +<div><br></div> + +<p><em>The Telegram Team,<br>November 19, 2014</em></p> +</div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fandroid-2-0&text=%23Telegram%202.0%20for%20Android%20is%20out%3A%20material%20design%2C%20message%20search%20and%20more%20privacy%20settings" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="#Telegram 2.0 for Android is out: material design, message search and more privacy settings" data-url="https://telegram.org/blog/android-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 2.0 for Android is out: material design, message search and more privacy settings" data-url="https://telegram.org/blog/android-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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/encrypted-cdns.html b/data/telegram.org/blog/android-themes.html similarity index 67% rename from data/telegram.org/blog/encrypted-cdns.html rename to data/telegram.org/blog/android-themes.html index c17dc4917b..0f0410c4ab 100644 --- a/data/telegram.org/blog/encrypted-cdns.html +++ b/data/telegram.org/blog/android-themes.html @@ -2,18 +2,18 @@ <html class=""> <head> <meta charset="utf-8"> - <title>More Speed and Security!</title> + <title>Custom Themes</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="og:title" content="More Speed and Security!"> - <meta property="og:image" content="https://telegram.org/file/811140886/164e/NRgod4GLJ74.739306/3d3e38ddcf093e95f9"> + <meta property="og:title" content="Custom Themes"> + <meta property="og:image" content="https://telegram.org/file/811140722/2/3cY8obIVMwk.102339/19827a3ef0493d9816"> <meta property="og:site_name" content="Telegram"> - <meta property="og:description" content="Higher download speed for popular public media from massive channels with distributed encrypted CDNs "> - <meta property="article:published_time" content="2017-07-23T15:34:00+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140886/164e/NRgod4GLJ74.739306/3d3e38ddcf093e95f9" /> + <meta property="og:description" content="Introducing a free and open platform for themes to Telegram's most popular app."> + <meta property="article:published_time" content="2017-02-20T23:41:54+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140722/2/3cY8obIVMwk.102339/19827a3ef0493d9816" /> <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/encrypted-cdns" /> + <link rel="canonical" href="https://telegram.org/blog/android-themes" /> <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"> @@ -74,45 +74,63 @@ </div></div> <div id="dev_page_content_wrap" class=" "> <div class="dev_page_bread_crumbs"></div> - <h1 id="dev_page_title">More Speed and Security!</h1> + <h1 id="dev_page_title">Custom Themes</h1> <div id="dev_page_content"><div class="blog_side_image_wrap"> - <img src="/file/811140669/160d/g_PcT-M-m8A.24441.gif/bd548b27837cc8f195" class="blog_side_image"/> + <img src="/file/811140945/4/e0RIVZ4CSeI.23438.gif/3a18d6fc7f66340693" class="blog_side_image"/> </div> -<div class="blog_wide_image"><a href="/file/811140886/164e/NRgod4GLJ74.739306/3d3e38ddcf093e95f9" target="_blank"><img src="/file/811140290/150b/IpxYa5K2_3E.127469/11d888bbf92b4b42d8" title="Encrypted CDNs for Speed and Security"/></a> -</div> - -<p>We at Telegram love to build sophisticated technologies that combine speed with security. Starting with Telegram <strong>4.2</strong>, we support <a href="https://en.wikipedia.org/wiki/Content_delivery_network">CDN caching</a>. CDNs are third-party caching nodes that we’ll use to cache publicly available videos and photos posted in massive channels (say, with <strong>100,000+</strong> subscribers) for users in remote locations where Telegram is popular.</p> -<p>This will increase download speeds for tens of millions of users as CDN caching allows data to travel shorter distances and helps avoid bottlenecks that exist between regions. </p> -<p>While these caching nodes are only used to temporarily store <strong>public</strong> media (imagine Telegram versions of superpopular YouTube hits), all data that goes through them is <strong>encrypted</strong> with a key unknown to the caching nodes. In other words, we treat these CDN caching nodes just like we treat your internet provider – they only ever get encrypted junk they can't decipher.</p> -<h4><a class="anchor" name="heres-how-it-works" href="#heres-how-it-works"><i class="anchor-icon"></i></a>Here’s how it works</h4> <div class="blog_wide_image"> - <a href="/file/811140934/1815/aSQ-nSUHJzc.45662/40c2955965574cef80" target="_blank"><img src="/file/811140934/1815/aSQ-nSUHJzc.45662/40c2955965574cef80" title="Content Delivery Network" /></a> + <a href="/file/811140722/2/3cY8obIVMwk.102339/19827a3ef0493d9816" target="_blank"><img src="/file/811140722/2/3cY8obIVMwk.102339/19827a3ef0493d9816" title="Themes for Android"/></a> </div> -<p>If you're interested in the technical details, feel free to check out <a href="https://core.telegram.org/cdn">this page</a> that describes the relevant encryption and security checks. And as always – the updated source code for the Telegram apps is open and available for your scrutiny. Security experts are welcome to verify the implementation of CDNs based on the <a href="/apps#source-code">open source code</a> we make available for all of our apps.</p> -<p>Thanks to this technology, the download speed for public photos and videos in places like South America, Turkey, Indonesia, India, Iran or Iraq will significantly increase without the slightest compromise in security. </p> -<h4><a class="anchor" name="to-sum-up" href="#to-sum-up"><i class="anchor-icon"></i></a>To sum up</h4> -<ul> -<li>Download speeds for popular public media are set to increase several times for millions of Telegram users.</li> -<li>CDN caching nodes are not Telegram servers and not part of the Telegram cloud.</li> -<li>CDNs are used only for caching popular public media from massive channels. Private data never goes there.</li> -<li>CDNs only get encrypted data and they never have the keys: even if they are accessed by hackers or third parties, the attacker won’t be able to decipher the files.</li> -<li>Data downloaded from CDN caching nodes is always verified by the receiving Telegram app by way of hash: attackers won’t be able to replace any files with their own versions.</li> -<li>Detailed technical info about CDNs can be found <a href="https://core.telegram.org/cdn">here</a>, the updated source code of Telegram apps ready for CDN support can be found <a href="/apps#source-code">here</a>.</li> -<li>Telegram 4.2 also includes <a href="https://telegram.org/blog/now-you-see-me">a bucketful of other goodies</a> for you to enjoy.</li> -</ul> +<p>We believe in freedom. This is why Telegram is a <strong>free</strong> and <strong>open</strong> platform – for <a href="https://telegram.org/blog/stickers-revolution">stickers</a>, for <a href="https://core.telegram.org/bots">bots</a>, and even for third-party client apps. We believe that if we give you freedom, you’ll know what to do with it. </p> +<p>Starting today, <strong>85%</strong> of Telegram users can completely change what Telegram looks like for them. We are rolling out <strong>Custom Themes</strong> on Android, and will later support them on less popular platforms. </p> +<p>To switch to a different theme or create a new one, go to <strong>Settings > Theme</strong>. We‘ve included a Dark Theme in that menu for those of you who don’t want to use Telegram as a flashlight in dark places.</p> +<div class="blog_2images_wrap"> + <div class="blog_image_wrap"> + <a href="/file/811140534/3/Jcxk1ft6_QA.150124/4a92545bd97f1f0b95" target="_blank"><img src="/file/811140534/3/Jcxk1ft6_QA.150124/4a92545bd97f1f0b95" title="New dark theme"/></a> + <p>The new dark theme</p> + </div> + <div class="blog_image_wrap"> + <a href="/file/811140775/2/3HstCBM83ak.64545/807483434cd4cd2051" target="_blank"><img src="/file/811140775/2/3HstCBM83ak.64545/807483434cd4cd2051" title="Easy on the eyes"/></a> + <p>Easy on the eyes</p> </div> +</div> + +<h3><a class="anchor" name="create-your-own" href="#create-your-own"><i class="anchor-icon"></i></a>Create Your Own</h3> +<p>We've also added a Theme Editor to the app. You can now create new themes and easily share them with other users. </p> +<div class="blog_2images_wrap"> + <div class="blog_image_wrap"> + <a href="/file/811140067/2/xAHEh8vRQRI.113778/98dadfe40069af96f3" target="_blank"><img src="/file/811140067/2/xAHEh8vRQRI.113778/98dadfe40069af96f3" title="Choose an element"/></a> + <p>Choose an element</p> + </div> + <div class="blog_image_wrap"> + <a href="/file/811140416/1/itV_yQQe-gs.645617/f84b7ee526466bdf11" target="_blank"><img src="/file/811140416/1/itV_yQQe-gs.645617/f84b7ee526466bdf11" title="Pick a color"/></a> + <p>Pick a color</p> </div> +</div> + +<p>Just like stickers and bots, Telegram themes are part of an open platform, so anybody can create a theme and dazzle the world with new colors and backgrounds. Here's another example of a theme created by our users:</p> +<div class="blog_2images_wrap"> + <div class="blog_image_wrap"> + <a href="/file/811140767/2/TogG9vkUvYo.119652/badee5d60730dfe6a2" target="_blank"><img src="/file/811140767/2/TogG9vkUvYo.119652/badee5d60730dfe6a2" title="Chats list"/></a> + <p>Theme preview: Chats list</p> + </div> + <div class="blog_image_wrap"> + <a href="/file/811140986/3/cOsdERdWi-A.154455/3c1c59c24251238040" target="_blank"><img src="/file/811140986/3/cOsdERdWi-A.154455/3c1c59c24251238040" title="Chat screen"/></a> + <p>Chat screen</p> </div> +</div> + +<p>Check out the <a href="https://t.me/androidthemes"><strong>@AndroidThemes</strong></a> and <a href="https://t.me/themes">Desktop Themes</a> channels for more new themes made by Telegram users. </p> +<p>If you're using our <strong>iOS</strong> app, hold on for a couple of weeks. You‘ll get themes eventually, but for now we’re building something different for you – and it’s truly epic.</p> <div><br></div> -<p>Stay safe (and fast)!</p> -<p><em>July 23, 2017<br>The Telegram Team</em></p> +<p><em>February 20, 2017<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%2Fencrypted-cdns&text=Higher%20download%20speed%20for%20popular%20public%20media%20from%20massive%20channels%20with%20distributed%20encrypted%20CDNs%20" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Higher download speed for popular public media from massive channels with distributed encrypted CDNs " data-url="https://telegram.org/blog/encrypted-cdns"><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="Higher download speed for popular public media from massive channels with distributed encrypted CDNs " data-url="https://telegram.org/blog/encrypted-cdns" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fandroid-themes&text=Custom%20Themes%20and%20Theme%20Editor%20have%20just%20landed%20on%20Telegram%20for%20Android." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Custom Themes and Theme Editor have just landed on Telegram for Android." data-url="https://telegram.org/blog/android-themes"><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="Custom Themes and Theme Editor have just landed on Telegram for Android." data-url="https://telegram.org/blog/android-themes" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a> </div> </div> diff --git a/data/telegram.org/blog/archive-and-new-design.html b/data/telegram.org/blog/archive-and-new-design.html new file mode 100644 index 0000000000..9fa2fa687d --- /dev/null +++ b/data/telegram.org/blog/archive-and-new-design.html @@ -0,0 +1,318 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Archived Chats, a New Design and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Archived Chats, a New Design and More"> + <meta property="og:image" content="https://telegram.org/file/811140150/19bf/o1qQWqeafv4.67487/bbd6857252ab77b65e"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Today's update gives you the tools to sort your messages with archived chats, a new design on Android, and a handful of other nifty features to make the most of your messenger."> + <meta property="article:published_time" content="2019-05-09T15:19:41+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140150/19bf/o1qQWqeafv4.67487/bbd6857252ab77b65e" /> + <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/archive-and-new-design" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Archived Chats, a New Design and More</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140098/1753/kQsujJ1Zd-I.19823.gif/f266929ce7645e867c" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/811140103/1960/MK9TMoDwLYc.192212/d7f2c25a358f44cb84" target="_blank"><img src="/file/811140150/19bf/o1qQWqeafv4.67487/bbd6857252ab77b65e" srcset="/file/811140103/1960/MK9TMoDwLYc.192212/d7f2c25a358f44cb84, 1200w" title="Hey, this isn't XKCD. Why check the titles?" alt="Introducing archived chats, a new design and more"/></a> +</div> + +<p>Today's update gives you the tools to sort your messages with <strong>archived chats</strong>, a <strong>new design</strong> on Android and a handful of other nifty features to make the most of your messenger. </p> +<h3><a class="anchor" name="everything-in-its-place" href="#everything-in-its-place"><i class="anchor-icon"></i></a>Everything in its place</h3> +<p>Introducing <strong>archived chats</strong>, the new tool for spring cleaning in your chat list. Sort your active and inactive chats, separate personal stuff from work or banish annoying contacts to your archive for some spectacular revenge!</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/811140089/1a1a/El2hG5wVR34.46491/7dc806e6a17f4bf077" style="max-width: 480px;" title="Archiving chats" alt="Archiving chats"> + <source src="/file/811140993/1890/r8DEDj-9j1c.2142992.mp4/c8b190a64437af3f7b" type="video/mp4"> + </video> +</div> + +<p>Swipe left on a chat to transfer it to your <strong>archived chats</strong> folder. When an archived chat gets a notification, it will pop out of the folder and back into your chat list. Muted chats will stay archived forever.</p> +<p>You can <strong>hide the archive</strong> by swiping left on it. See it again by dragging the screen down. </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/811140735/145c/yN2TOfeBZZU.35046/810940111554f9b7e1" style="max-width: 480px;" title="Hiding the archive" alt="Hiding the archive"> + <source src="/file/811140203/17fc/xhiuz7TnrTo.2459490.mp4/f0d256be91bb6c7a41" type="video/mp4"> + </video> +</div> + +<p><strong>Pin</strong> an <strong>unlimited</strong> number of chats in your archive to keep your messages in the order you want. When chats pop out of your archive with a notification, you can archive them again to return them to their original place within the folder. </p> +<div class="blog_image_wrap"> + <a href="/file/811140351/1882/wW6_7lLTu9A.147504/e4f91eae6908ece40f" target="_blank"><img src="/file/811140621/13b1/GLLXK6bcMo8.23835/82355beab98b49e9bf" title="Pinned chats in the archive" alt="Pinned chats in the archive" srcset="/file/811140351/1882/wW6_7lLTu9A.147504/e4f91eae6908ece40f , 2x" /></a> +</div> + +<h3><a class="anchor" name="bulk-actions-for-a-busy-chat-list" href="#bulk-actions-for-a-busy-chat-list"><i class="anchor-icon"></i></a>Bulk actions for a busy chat list</h3> +<p>Time is money and money buys cat food, so don't waste time and make the most of the bulk actions in your chat list, now also available on Telegram for <strong>Android</strong>. Long tap on a chat to open the new menu where you can <strong>select multiple chats</strong> and then pin, mute, archive or delete them, all faster than ever before.</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/811140316/1638/0r3Ur-4DzTg.54159/ce56916b26cd0becb2" style="max-width: 480px;" title="Bulk actions in chat list" alt="Bulk actions in chat list"> + <source src="/file/811140097/1e0b/X2LNm3RO77w.2956936.mp4/464532ca9fb608e9d2" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="android-39s-new-clothes" href="#android-39s-new-clothes"><i class="anchor-icon"></i></a>Android's new clothes</h3> +<p>Telegram for Android got a lot slicker, starting with the app's <strong>new icon</strong> and down to every menu in the app sporting a <strong>new design</strong>.</p> +<div class="blog_image_wrap"> + <a href="/file/811140811/1892/BJRz_GV8n-s.26548/57bd478d7765d8ab07" target="_blank"><img src="/file/811140008/16aa/vmZ9TDLEbgs.6072/5826637c6758dc2939" title="Telegram for Android's new icon" alt="Telegram for Android's new icon" srcset="/file/811140811/1892/BJRz_GV8n-s.26548/57bd478d7765d8ab07 , 2x" /></a> + <p>New app icon</p> +</div> + +<div class="blog_image_wrap"> + <a href="/file/811140971/1782/uIZr_2a4WGw.128500/0c544cb2d199871f66" target="_blank"><img src="/file/811140715/19fc/Z_xT6lmtYtk.19195/9e22ac19cec748fb81" title="Redesigned menus" alt="Redesigned menus" srcset="/file/811140971/1782/uIZr_2a4WGw.128500/0c544cb2d199871f66 , 2x" /></a> + <p>Slick new menus</p> +</div> + + +<p><strong>Selecting messages</strong> in chats is now not only more stylish but also more functional – note the new <strong>quick forwarding button</strong> which appears right under your thumb:</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/811140812/15f2/GyG3C8VT_mQ.74542/1bbb8cf4e6e6da42ac" style="max-width: 480px;" title="New design when selecting messages" alt="New design when selecting messages"> + <source src="/file/811140635/1616/TTE-TUaPE2Q.4844372.mp4/07d6de110cb23e2970" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="more-info-at-a-glance" href="#more-info-at-a-glance"><i class="anchor-icon"></i></a>More info at a glance</h3> +<p>With the <strong>expanded chat list</strong>, you can see more text from the messages in your list. Simply select <strong>Three lines</strong> in the <em>Chat Settings</em> menu to see up to three lines per chat instead of the usual two. </p> +<div class="blog_image_wrap"> + <a href="/file/811140401/1525/4y11MbCfgzw.39161/a583aa223554cf652e" target="_blank"><img src="/file/811140327/2404/pnoYP7UFqMs.7924/46ab5a8fc9afc16ef4" title="Chat list settings" alt="Chat settings, choose between two or three lines per chat" srcset="/file/811140401/1525/4y11MbCfgzw.39161/a583aa223554cf652e , 2x" /></a> + <p>Chat list view settings</p> +</div> + +<h3><a class="anchor" name="share-and-share-a-lot" href="#share-and-share-a-lot"><i class="anchor-icon"></i></a>Share and share a lot</h3> +<p>Want to share a message far and wide? Pull up the new streamlined <strong>sharing menu</strong> to cover the entire screen and select your whole gang. And don‘t fret if you’re short on words, the comment field now supports <strong>emoji</strong>.</p> +<div class="blog_image_wrap"> + <a href="/file/811140077/16d2/_eK0f72qgyw.197263/e50be872c5080b8a1d" target="_blank"><img src="/file/811140579/1ab7/6qQkd_vCVG0.30887/b042ef4e16fa4e0673" title="Sharing menu" alt="The new sharing menu with online badges and emoji support" srcset="/file/811140077/16d2/_eK0f72qgyw.197263/e50be872c5080b8a1d , 2x" /></a> + <p>New sharing menu</p> +</div> + +<p>The new design also makes it easier to share <strong>sticker packs</strong>.</p> +<div class="blog_image_wrap"> + <a href="/file/811140126/15df/MWt-pGh6HSA.254766/5a1cd3a15f11468bec" target="_blank"><img src="/file/811140909/1630/eguI62CaLTI.35674/2e188fab566f6d737d" title="Preview sticker pack" alt="Sticker pack viewer with the new sharing buttons" srcset="/file/811140126/15df/MWt-pGh6HSA.254766/5a1cd3a15f11468bec , 2x" /></a> + <p>New sticker pack viewer</p> +</div> + +<h3><a class="anchor" name="you-shall-not-pass" href="#you-shall-not-pass"><i class="anchor-icon"></i></a>You shall not pass</h3> +<p>Meanwhile on iOS, <strong>passcode</strong> settings have been made more stylish and more robust to accommodate <strong>6-digit codes</strong>, in addition to the previous 4-digit and custom alphanumeric options. Keep it secret, keep it safe <img class="emoji" src="//telegram.org/img/emoji/40/F09F9492.png" width="20" height="20" alt="🔒" />.</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/811140517/1771/fx2pa8_jexU.44923/18853af1dfb77b3905" style="max-width: 480px;" title="Updated passcode" alt="Updated passcode on iOS with stylish animations"> + <source src="/file/811140647/15ed/Yo27z2Pnjhg.2556288.mp4/6c111073cc08fa940b" type="video/mp4"> + </video> +</div> + + +<p>Another new feature on iOS allows <strong>clearing</strong> your <strong>recently used stickers</strong> so nobody can prove how much you love sending funny dog stickers. </p> +<div class="blog_image_wrap"> + <a href="/file/811140054/187d/MW-mRm-C-Fc.91038/833b96c8f3ca777f98" target="_blank"><img src="/file/811140925/1a9f/cA_PHTvMT5g.14695/485b5abf8dd70033a7" title="Clear recent stickers" alt="Clear recent stickers on iOS" srcset="/file/811140054/187d/MW-mRm-C-Fc.91038/833b96c8f3ca777f98 , 2x" /></a> + <p>Clear recent stickers</p> +</div> + +<p>We also thought that <strong>large emoji</strong> feel more natural without chat bubbles and made them look like little stickers instead. Aren't they cute?</p> +<div class="blog_image_wrap"> + <a href="/file/811140003/183a/NmvTFdsuLqI.44544/4cfbf4009337d0614c" target="_blank"><img src="/file/811140495/15c0/p5zsf1qu58c.8669/4a9be32f9f361a1a4e" title="Clear recent stickers" alt="Clear recent stickers on iOS" srcset="/file/811140003/183a/NmvTFdsuLqI.44544/4cfbf4009337d0614c , 2x" /></a> + <p>New look for large emoji</p> +</div> + +<h3><a class="anchor" name="easier-forwarding-links-to-messages-online-badges" href="#easier-forwarding-links-to-messages-online-badges"><i class="anchor-icon"></i></a>Easier forwarding, links to messages, online badges</h3> +<p>Ever selected the wrong chat when <strong>forwarding a message</strong>? Tap the message snippet above the text box before sending to <strong>change</strong> where the message is forwarded to.</p> +<div class="blog_image_wrap"> + <a href="/file/811140819/189b/4-IyTv7aC18.57626/7788730c79f51dc3ba" target="_blank"><img src="/file/811140456/1419/M-ZjM_4a4hU.9106/2ff2321c60e2805268" title="Switch recipient" alt="Switch recipient when forwarding messages" srcset="/file/811140819/189b/4-IyTv7aC18.57626/7788730c79f51dc3ba , 2x" /></a> + <p>Switch recipient</p> +</div> + +<p>If you'd rather point to a particular spot in a conversation, you can now <strong>copy links</strong> to messages in <strong>private</strong> groups and channels – just like you could with public messages. Needless to say, links to private chats will only work for members of their respective communities.</p> +<div class="blog_image_wrap"> + <a href="/file/811140231/18c9/TZne6QZ-0Cw.119730/958e8eb2c23cbf44b0" target="_blank"><img src="/file/811140512/1945/KqBzzljkJSc.17504/bec992fa81eee5d5c2" title="Links to individual messages" alt="Copy links to individual messages in a private community" srcset="/file/811140231/18c9/TZne6QZ-0Cw.119730/958e8eb2c23cbf44b0 , 2x" /></a> + <p>Links to individual messages</p> +</div> + +<p>Last but not least, you can now instantly see who's <strong>online</strong> from the <strong>chat list</strong> and <strong>sharing menu</strong> to find out who else might be watching cat videos in the middle of the night. </p> +<div class="blog_image_wrap"> + <a href="/file/811140497/169c/FbX5-9SUhqE.50483/ac6819acd2bbd17f18" target="_blank"><img src="/file/811140760/1678/ViAX26vmj1E.8673/ec9ec89b84c413b840" title="Online badges in chats" alt="Online badges in chats" srcset="/file/811140497/169c/FbX5-9SUhqE.50483/ac6819acd2bbd17f18 , 2x" /></a> +</div> + +<p>As always, stay tuned for more updates on all our platforms — we look forward to popping back out of your archive with the next version.</p> +<div><br></div> + +<p><em>May 9, 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%2Farchive-and-new-design&text=Introducing%20archived%20chats%2C%20online%20badges%2C%20Android%27s%20new%20clothes%20and%20more." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing archived chats, online badges, Android's new clothes and more." data-url="https://telegram.org/blog/archive-and-new-design"><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 archived chats, online badges, Android's new clothes and more." data-url="https://telegram.org/blog/archive-and-new-design" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/autodelete-inv2.html b/data/telegram.org/blog/autodelete-inv2.html new file mode 100644 index 0000000000..bb7290b577 --- /dev/null +++ b/data/telegram.org/blog/autodelete-inv2.html @@ -0,0 +1,299 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Auto-Delete, Widgets and Expiring Invite Links</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Auto-Delete, Widgets and Expiring Invite Links"> + <meta property="og:image" content="https://telegram.org/file/464001701/5/WvHD2TGPSzU.74913/648f3e17886f6c96f8"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="This update brings an auto-delete timer for messages in any chat, as well as new flexible invite links and faster access to your chats with home screen widgets. Also, groups can now have unlimited members."> + <meta property="article:published_time" content="2021-02-23T20:12:24+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001701/5/WvHD2TGPSzU.74913/648f3e17886f6c96f8" /> + <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/autodelete-inv2" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Auto-Delete, Widgets and Expiring Invite Links</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/464001678/2/SmHvCRofwHI.40041/ff513c3dade775c436"><img src="/file/464001678/3/Th4uvfdHmRY.35036.png/a8289a67cbf463825b" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001519/2/pw2YpXpzBFk.222382/9ec672b0125c50ad34" target="_blank"><img src="/file/464001701/5/WvHD2TGPSzU.74913/648f3e17886f6c96f8" srcset="/file/464001519/2/pw2YpXpzBFk.222382/9ec672b0125c50ad34, 1200w" title="Add a man to a group, and you feed him for a day. Teach him how to use invite links, and you feed him for a lifetime." alt="Auto-Delete, Widgets and Expiring Invite Links"/></a> +</div> + +<p>This update brings an <strong>auto-delete timer</strong> for messages in any chat, as well as new <strong>flexible invite links</strong> and faster access to your chats with <strong>home screen widgets</strong>. Also, groups can now have <strong>unlimited members</strong>.</p> +<h3><a class="anchor" name="auto-delete-messages" href="#auto-delete-messages"><i class="anchor-icon"></i></a>Auto-Delete Messages</h3> +<p>Some conversations aren't meant to last forever, which is why Telegram users can <a href="https://telegram.org/blog/move-history#control-your-digital-footprint">delete messages for all participants</a> in a conversation at any time, <strong>without a trace</strong>. Since <a href="https://telegram.org/evolution#october-2013"><strong>2013</strong></a>, users can also set a self-destruct timer for messages in Secret Chats.</p> +<p>Starting today, you can enable an <strong>auto-delete timer</strong> in <em>all</em> Telegram chats, which will automatically erase messages for all participants either <strong>24 hours</strong> or <strong>7 days</strong> after sending.</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/464001817/1/uRH0G1kpnsU.78050/ef4c3848767bbc4626" style="max-width: 400px;" title="The name's Delete – Otto Delete." alt="Auto-Delete Messages in any chat"> + <source src="/file/464001344/2/JFxVFe7IS9Y.4879859.mp4/22a3dc0968a1b36872" type="video/mp4"> + </video> +</div> + +<p>Auto-delete only applies to messages sent <strong>after the timer is set</strong>, earlier messages will stay in the chat history. Unlike in Secret Chats, the countdown starts when messages are <strong>sent</strong>, not read.</p> +<blockquote> +<p>To enable the timer on <strong>Android</strong>, tap ⋮ <em>> Clear History</em> then choose a duration.<br>On <strong>iOS</strong>, press and hold a message, tap <em>Select > Clear Chat (top-left) > Enable Auto-Delete</em>.</p> +</blockquote> +<p>All messages show a countdown to their deletion time – simply tap on Android or press and hold on iOS to take a look. <img class="emoji" src="//telegram.org/img/emoji/40/F09F95B5.png" width="20" height="20" alt="🕵️" /></p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001391/2/Q-fXu4DfJzo.72308/45f380386fa9432ef5" target="_blank"><img src="/file/464001391/2/Q-fXu4DfJzo.72308/45f380386fa9432ef5" title="We are visitors on this planet. We are here for one hundred years at the very most. During that period we must try to do something good, something useful, with our lives. If you contribute to other people's happiness, you will find the true meaning of life." alt="Time before expiry" srcset="/file/464001391/2/Q-fXu4DfJzo.72308/45f380386fa9432ef5 , 2x" /></a> +</div> + +<p>In groups and channels, <strong>only admins</strong> can enable or modify the timer.</p> +<h3><a class="anchor" name="home-screen-widgets" href="#home-screen-widgets"><i class="anchor-icon"></i></a>Home Screen Widgets</h3> +<p>For instant access to your most important chats, add a <strong>Telegram widget</strong> to your home screen. The <strong>Chat Widget</strong> shows a preview of recent messages, while the <strong>Shortcut Widget</strong> shows only names and profile pictures.</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/4/xWmcSpI7Y5w.70341/867173f4b40e240b9f" style="max-width: 400px;" title="Our engineers studied at the Hogwarts School of Widgecraft and Widgetry." alt="Telegram Widgets on the Home Screen"> + <source src="/file/464001526/3/dmJ3ZxibtXo.4945931.mp4/ff7409eb00c9f7e57d" type="video/mp4"> + </video> +</div> + +<p>On <strong>Android</strong>, chats and messages in the widget will always be <strong>up to date</strong>, and you can further <strong>expand</strong> the widget to take up more of your screen. On iOS, widgets will only get fresh data occasionally and can't be expanded – this is due to system limitations.</p> +<blockquote> +<p>To add a widget, press and hold on your home screen, then tap Widgets on <strong>Android</strong> or the (+) on <strong>iOS</strong> and search for Telegram.</p> +</blockquote> +<h3><a class="anchor" name="expiring-invite-links" href="#expiring-invite-links"><i class="anchor-icon"></i></a>Expiring Invite Links</h3> +<p>Invite links are a quick and easy way to bring <strong>1</strong> or <strong>1 million</strong> people to your groups and channels. Along with the main invite link, owners and admins can now create <strong>additional links</strong> with a <strong>limited duration</strong>, <strong>number of uses</strong>, or <strong>both</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/464001763/2/IYI3kWN79xI.51059/5f305952bf58319660" style="max-width: 400px;" title="Marketing managers probably have a big word for this - we just call it -=wicked cool=-." alt="Expiring Invite Links"> + <source src="/file/464001928/1/K9DZMpYVSnU.4876606.mp4/2b0cd32ee50b31af7e" type="video/mp4"> + </video> +</div> + +<p>Any invite link can be converted into a <strong>scannable QR Code</strong> to put on everything from brochures to billboards. You can also see which users joined using each invite link to find out where new members came from or which format has been <strong>most effective</strong> for growth. <img class="emoji" src="//telegram.org/img/emoji/40/F09F9A80.png" width="20" height="20" alt="🚀" /></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/464001298/4/pMeGXcDU_rw.75838/3dc99f3a9069c1a83a" style="max-width: 400px;" title="Everest is not a real product." alt="QR Codes from links"> + <source src="/file/464001957/2/dwrFNRt7PWs.4918082.mp4/a682d67f926578f93d" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>To view and manage invite links, tap to open your <em>Group or Channel's Profile > Edit > Invite Links</em>. Tap (⋮) or (⋯) to convert a link to a <strong>QR Code</strong>.</p> +</blockquote> +<h3><a class="anchor" name="groups-with-unlimited-members" href="#groups-with-unlimited-members"><i class="anchor-icon"></i></a>Groups with Unlimited Members</h3> +<p>Telegram groups allow up to 200,000 members to exchange messages, media and stickers. Groups that are close to the limit can now convert into <strong>Broadcast Groups</strong> that allow <strong>unlimited members</strong>.</p> +<p>Converting to a Broadcast Group makes it so that <strong>only admins can send messages</strong>, but members can still join <strong>voice chats</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/464001933/3/RnMMkaLuCA4.81635/3ccda3a79686d9dfcc" style="max-width: 400px;" title="The sky used to be the limit – now it's the universe." alt="Converting to a Broadcast Group"> + <source src="/file/464001718/2/c4ookBs7KY4.2884668.mp4/a988e3a560554cf868" type="video/mp4"> + </video> +</div> + +<p>Broadcast Groups are ideal for <strong>large communities</strong>, where people can follow along and catch exclusive interviews, news, or just casual talks.</p> +<h3><a class="anchor" name="improved-chat-import" href="#improved-chat-import"><i class="anchor-icon"></i></a>Improved Chat Import</h3> +<p>Our developers are continuing to refine and expand the <a href="https://telegram.org/blog/move-history">chat import feature</a> added to Telegram last month. With today’s update, imported messages will now appear <strong>sorted by their original date</strong> if added to a Telegram chat that is <strong>new</strong> or has fewer than <strong>1000 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 loop controls muted poster="/file/464001083/2/_piKAjWkdVU.54833/562cb320040894e2f9" style="max-width: 400px;" title="Through the eternal woe, I take flight." alt="Importing messages with their original date."> + <source src="/file/464001149/2/EYvvkef18yE.4862314.mp4/c485f49b57e6eaa1d5" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>Sorting by original date is currently available when importing to all one-on-one chats, all newly created groups, and smaller existing groups.</p> +</blockquote> +<h3><a class="anchor" name="improved-reporting-system" href="#improved-reporting-system"><i class="anchor-icon"></i></a>Improved Reporting System</h3> +<p>Telegram processes millions of user reports each month to make sure the platform is not abused. To help make this more efficient, we will now always ask you to select <strong>specific messages</strong> when sending a report.</p> +<p>Additionally, all reporting options allow you to <strong>add a comment</strong> to give more context – like when reporting <a href="https://telegram.org/blog/move-history#reporting-fake-channels">fake accounts</a>.</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/464001311/2/xKRFjb_IiUc.31301/fb28faace2bfc978d3" style="max-width: 400px;" title="Don't make us bring out the coffin tweet." alt="Reporting a fake channel"> + <source src="/file/464001114/2/2Cnou-gbIK4.2429385.mp4/e34db9a21dea15eeef" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="and-more-animated-emoji" href="#and-more-animated-emoji"><i class="anchor-icon"></i></a>And More Animated Emoji</h3> +<p>A new update always means new animations, so test out the new characters below by sending a single emoji in any chat.</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/464001454/2/ktW60oxINnw.43331/e48f505983c4f65333" style="max-width: 400px;" title="Again, there's a story in there somewhere." alt="New animated emoji: February 2021."> + <source src="/file/464001675/2/FW8s5MmYCNg.3274887.mp4/a5750dd3bac59fb268" type="video/mp4"> + </video> +</div> + +<p>That's all for today's changes, this message will now delete in 3, 2, 1 … oh. Never mind, this is a blog post, they don't do that yet. <img class="emoji" src="//telegram.org/img/emoji/40/F09F9885.png" width="20" height="20" alt="😅" /></p> +<div><br></div> + +<p><em>February 23, 2021<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%2Fautodelete-inv2&text=Introducing%20Auto-Delete%2C%20Widgets%2C%20Expiring%20Invite%20Links%20and%20more" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing Auto-Delete, Widgets, Expiring Invite Links and more" data-url="https://telegram.org/blog/autodelete-inv2"><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 Auto-Delete, Widgets, Expiring Invite Links and more" data-url="https://telegram.org/blog/autodelete-inv2" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/bots-2-0.html b/data/telegram.org/blog/bots-2-0.html new file mode 100644 index 0000000000..8450c72736 --- /dev/null +++ b/data/telegram.org/blog/bots-2-0.html @@ -0,0 +1,260 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Bot Platform 2.0</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Bot Platform 2.0"> + <meta property="og:image" content="https://telegram.org/file/811140621/2/lnShSpNXvds/7248d316e53acca9a9"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Meet Bots 2.0: New keyboards, new mechanics, new permissions and more power. See video demos:"> + <meta property="article:published_time" content="2016-04-12T01:56:21+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140621/2/lnShSpNXvds/7248d316e53acca9a9" /> + <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/bots-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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Bot Platform 2.0</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140621/2/lnShSpNXvds/7248d316e53acca9a9" class="blog_side_image"/> +</div> + +<p>At Telegram, we made it our mission to redefine the boundaries of what you can do with your messaging app. Last year we <a href="/blog/bot-revolution">launched the Bot Platform</a> that has unleashed the creativity of thousands of developers. </p> +<p>Today we are giving bot developers a whole new dimension with <a href="https://core.telegram.org/bots/2-0-intro"><strong>Bots 2.0</strong></a>: inline keyboards, callback and URL buttons, location permissions and on-the-fly message editing. The new bots can also generate any type of content for you to share with friends, including documents, MP3s, videos, stickers, animations and contacts.</p> +<p>To give you a taste of the new possibilities, we built some sample bots last weekend – <a href="https://telegram.me/music">@music</a>, <a href="https://telegram.me/youtube">@youtube</a>, <a href="https://telegram.me/foursquare">@foursquare</a> and <a href="https://telegram.me/sticker">@sticker</a> (make sure your Telegram app was updated today before you try them).</p> +<h4><a class="anchor" name="new-keyboards-new-actions" href="#new-keyboards-new-actions"><i class="anchor-icon"></i></a>New Keyboards, New Actions</h4> +<p>Here's how <a href="https://telegram.me/music">@music</a> works – it uses an <strong>inline keyboard</strong> that allows you to interact with it without sending any messages. And it <strong>updates</strong> its own messages on the fly as you flip through the pages of search results:</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="/resources/video/cover/Music.png" autoplay loop controls muted> + <source src="/resources/video/Music.mp4" type="video/mp4"> + </video> + </div> +</div> + +<h4><a class="anchor" name="new-types-of-content" href="#new-types-of-content"><i class="anchor-icon"></i></a>New Types of Content</h4> +<p>The <a href="https://telegram.me/music">@music</a> bot also works in <a href="/blog/inline-bots"><strong>inline mode</strong></a>, which means it can help you send MP3s to <strong>any</strong> of your chats, right from the input field:</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="/resources/video/cover/InlineMusic.png" autoplay loop controls muted> + <source src="/resources/video/InlineMusic.mp4" type="video/mp4"> + </video> + </div> +</div> + +<p>Inline bots can now send <strong>all types of attachments</strong> that are available on Telegram. We suspect you're going to like the <a href="https://telegram.me/sticker">@sticker</a> inline bot – it can find you relevant stickers based on emoji.</p> +<h4><a class="anchor" name="new-mechanics" href="#new-mechanics"><i class="anchor-icon"></i></a>New Mechanics</h4> +<p>Like the <a href="https://telegram.me/music">@music</a> bot, <a href="https://telegram.me/youtube">@youtube</a> also works in two modes. It uses the new clever <strong>chat switching</strong> mechanic to connect your Telegram account with YouTube:</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="/resources/video/cover/YouTube.png" autoplay loop controls muted> + <source src="/resources/video/YouTube.mp4" type="video/mp4"> + </video> + </div> +</div> + +<p>Once a Youtube account is connected, you can access additional settings via the new menu option above the results.</p> +<h4><a class="anchor" name="new-permissions" href="#new-permissions"><i class="anchor-icon"></i></a>New Permissions</h4> +<p>Now, <a href="https://telegram.me/foursquare">@foursquare</a> is an inline bot that utilizes our new <strong>location features</strong> and helps you send addresses of places and venues nearby. Note how it asks for permission to use your location when you try to send something for the first time:</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="/resources/video/cover/Location.png" autoplay loop controls muted> + <source src="/resources/video/Location.mp4" type="video/mp4"> + </video> + </div> +</div> + + +<h4><a class="anchor" name="new-horizons" href="#new-horizons"><i class="anchor-icon"></i></a>New Horizons</h4> +<p>These sample bots are but the beginning. Our Bot API 2.0 allows developers to create fluid and easy-to-use interfaces for powerful bots. And we will be seeing a lot of new ones in the coming months, after all, 2016 is the year of bots.</p> +<p>If you are a developer, take a look at our <a href="https://core.telegram.org/bots/2-0-intro">Introduction to Bots 2.0</a> and read the <a href="https://core.telegram.org/bots/api#recent-changes">full changelog</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> +<p>If you are a user, hang on – soon you will have plenty of cool bots to play with. Meanwhile, enjoy the sample bots!</p> +<div><br></div> + + +<blockquote> +<p>Oh. And we almost forgot we've got more new stuff today!<br><a href="/blog/share-preview">Read on about Sharing and Previews »</a></p> +</blockquote> +<div><br></div> + +<p><em>April 12, 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%2Fbots-2-0&text=Meet%20Bots%202.0%3A%20New%20keyboards%2C%20new%20mechanics%2C%20new%20permissions%20and%20more%20power.%20See%20video%20demos%3A" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Meet Bots 2.0: New keyboards, new mechanics, new permissions and more power. See video demos:" data-url="https://telegram.org/blog/bots-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="Meet Bots 2.0: New keyboards, new mechanics, new permissions and more power. See video demos:" data-url="https://telegram.org/blog/bots-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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/cache-and-stickers.html b/data/telegram.org/blog/cache-and-stickers.html new file mode 100644 index 0000000000..2dfdf95a3c --- /dev/null +++ b/data/telegram.org/blog/cache-and-stickers.html @@ -0,0 +1,231 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Clearing Cache and Reordering Stickers</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Clearing Cache and Reordering Stickers"> + <meta property="og:image" content="https://telegram.org/file/811140743/1/VHyp1nJFhwk/b10f5a465ed9a6ddc1"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Telegram introduces cache management: New ways to ensure the app uses nearly zero space on your device"> + <meta property="article:published_time" content="2015-12-08T21:00:02+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140743/1/VHyp1nJFhwk/b10f5a465ed9a6ddc1" /> + <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/cache-and-stickers" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Clearing Cache and Reordering Stickers</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140743/1/VHyp1nJFhwk/b10f5a465ed9a6ddc1" class="blog_side_image"/> +</div> + +<p>Unlike most messengers, Telegram can take up nearly zero space on your phone, even if you‘re using it heavily. When you remove Telegram data from your device’s local cache to free up space, we'll keep it in the cloud for as long as you need, with virtually no limitations.</p> +<p>Today we are introducing new cache management options that make it even easier to maintain Telegram’s slender footprint when space is short — without having to sacrifice useful data. The new <strong>Clear Cache</strong> option allows you to quickly delete cached media by type.</p> +<center><div> + + <a href="/file/811140208/1/jCy9KMnqq70/052bc21350b9d8733b" target="_blank"><img src="/file/811140208/1/jCy9KMnqq70/052bc21350b9d8733b" title="Android: Keep media" style="max-height: 349px; padding: 10px 5px" /></a> + <a href="/file/811140295/1/Ar9XMqACZmI/1e682c26bda5cc73da" target="_blank"><img src="/file/811140295/1/Ar9XMqACZmI/1e682c26bda5cc73da" title="iOS: Clear cache by type" style="max-height: 349px; padding: 10px 5px" /></a> +<br><br> +</div></center> + +<p>Using the <strong>Keep Media</strong> setting, you can control how long unused media stays on your device. If you haven't accessed a file for the specified time, it is automatically deleted from the cache. Naturally, your data will instantly re-download from the cloud the moment you access it again.</p> +<p>On iOS it is also possible to clear cached files on a <strong>chat-by-chat</strong> basis. On Android, this currently works with supergroups and channels (just tap and hold in the chats list, then ‘Delete from Cache’).</p> +<center><div> + <a href="/file/811140986/1/QCyXhGBf3V4/aeb1bb97fd5f792e84" target="_blank"><img src="/file/811140986/1/QCyXhGBf3V4/aeb1bb97fd5f792e84" title="iOS: Clear cache by chat" style="width: 195px; padding: 10px 5px" /></a> +<br><br> +</div></center> + +<p>Available on <a href="https://telegram.org/dl/ios">iOS</a> and <a href="https://telegram.org/dl/android">Android</a> (and coming to WindowsPhone soon), these simple settings help ensure that Telegram will only require the least amount of space on your devices.</p> +<h4><a class="anchor" name="reorder-sticker-packs" href="#reorder-sticker-packs"><i class="anchor-icon"></i></a>Reorder Sticker Packs</h4> +<p>We've also improved the ordering of sticker packs. You can now manually arrange your sticker packs in the order you prefer, and the order will be synced across your devices. Access sticker settings via the new button, right on the sticker panel.</p> +<center><div> + <a href="/file/811140703/1/Z8pWvtFwpSA/d7f1fb62368a7672b9" target="_blank"><img src="/file/811140703/1/Z8pWvtFwpSA/d7f1fb62368a7672b9" title="Reorder sticker packs" style="width: 195px; padding: 10px 5px" /></a> + <a href="/file/811140741/2/qgJebslNbLI/3c799a4101e16d55ae" target="_blank"><img src="/file/811140741/2/qgJebslNbLI/3c799a4101e16d55ae" title="New sticker panel" style="width: 195px; padding: 10px 5px" /></a> +<br><br> +</div></center> + +<p>We're not done for 2015 yet, so watch out for more updates this year.</p> +<div><br></div> + + +<p><em>December 8, 2015</em><br><em>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%2Fcache-and-stickers&text=Telegram%20introduces%20cache%20management%3A%20New%20ways%20to%20ensure%20the%20app%20uses%20nearly%20zero%20space%20on%20your%20device" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram introduces cache management: New ways to ensure the app uses nearly zero space on your device" data-url="https://telegram.org/blog/cache-and-stickers"><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 cache management: New ways to ensure the app uses nearly zero space on your device" data-url="https://telegram.org/blog/cache-and-stickers" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/captions-places.html b/data/telegram.org/blog/captions-places.html new file mode 100644 index 0000000000..c843fb55c1 --- /dev/null +++ b/data/telegram.org/blog/captions-places.html @@ -0,0 +1,244 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Places, Captions and more</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Places, Captions and more"> + <meta property="og:image" content="https://telegram.org/file/811140397/1/YdPFyw_Nw_I/bc1c91dc22e4b60b66"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Places, photo captions, smart notifications, invite links to join groups and more in one epic update."> + <meta property="article:published_time" content="2015-04-30T18:36:56+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140397/1/YdPFyw_Nw_I/bc1c91dc22e4b60b66" /> + <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/captions-places" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Places, Captions and more</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140397/1/YdPFyw_Nw_I/bc1c91dc22e4b60b66" class="blog_side_image"/> +</div> + +<p>Today we are adding several long-awaited features in one epic update to our <a href="https://telegram.org/dl/android">Android</a> and <a href="https://telegram.org/dl/ios">iOS</a> apps. </p> +<h4><a class="anchor" name="places" href="#places"><i class="anchor-icon"></i></a>Places</h4> +<p>When sharing a location, you can now choose venues and landmarks. And when viewing a location, you can get directions. The section was also beautifully redesigned.</p> +<center><div> + <a href="/file/811140420/1/EepOCDsotag/2fe2a727143f564605" target="_blank"><img src="/file/811140420/1/EepOCDsotag/2fe2a727143f564605" title="Select a nearby place" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140473/1/h1xueObZdao/052634a22d88be3966" target="_blank"><img src="/file/811140473/1/h1xueObZdao/052634a22d88be3966" title="View location and get directions" style="width: 195px; padding: 10px 5px" /></a> +<br> +</div></center> + +<h4><a class="anchor" name="photo-captions" href="#photo-captions"><i class="anchor-icon"></i></a>Photo Captions</h4> +<p>Another thing Telegram was lacking – captions for photos. You can now add them to any picture you send, just tap the <strong>T</strong> in the <a href="https://telegram.org/blog/photo-editor-and-passcodes">photo editing panel</a>.</p> +<center><div> + <a href="/file/811140664/1/l9lFIStEQtQ/16b2725e2ca6daa912" target="_blank"><img src="/file/811140664/1/l9lFIStEQtQ/16b2725e2ca6daa912" title="Tap the 'T' in top right corner to add a caption" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140767/1/16ecUheJxKU/0dc860cb9b973385d1" target="_blank"><img src="/file/811140767/1/16ecUheJxKU/0dc860cb9b973385d1" title="Voila!" style="width: 195px; padding: 10px 5px" /></a> +<br> +</div></center> + +<h4><a class="anchor" name="new-voice-messages" href="#new-voice-messages"><i class="anchor-icon"></i></a>New Voice Messages</h4> +<p>You can now see whether the recipient has listened to your voice message — and keep track of which ones you've listened to yourself. Voice messages that have not been played yet are now marked with a small dot.</p> +<center><div> + <a href="/file/811140158/2/VttcgQFq9e8/0ba058d85ff35b2b1e" target="_blank"><img src="/file/811140158/2/VttcgQFq9e8/0ba058d85ff35b2b1e" title="Notice the dots next to voice note length counters" style="width: 195px; padding: 10px 5px" /></a> +<br> +</div></center> + +<h4><a class="anchor" name="smart-notifications" href="#smart-notifications"><i class="anchor-icon"></i></a>Smart Notifications</h4> +<p>Tired of buzzing notifications from active group chats? Sick of multiple notifications every time somebody forwards you a dozen messages? Getting notifications on mobile while chatting with the same person from your desktop? Fixed! Starting today, you will be notified only when it is necessary.</p> +<h4><a class="anchor" name="rich-link-previews" href="#rich-link-previews"><i class="anchor-icon"></i></a>Rich link previews</h4> +<p><a href="https://telegram.org/blog/link-preview">As promised</a>, link previews now work for almost any news site — in addition to previews for the most popular services like YouTube and Twitter.</p> +<h4><a class="anchor" name="android-goodies" href="#android-goodies"><i class="anchor-icon"></i></a>Android Goodies</h4> +<p>Telegram for Android joins the iOS app in showing extended ‘typing’ statuses: you can now see when your chat partner is sending you a photo or recording a voice message. Scrolling and photo animations have become smoother than ever.</p> +<p>Last but not least, we've fully redesigned the emoji menu on Android so that it now features a dedicated stickers tab. This is the first drumbeat of the stickers revolution that is coming to Telegram soon. </p> +<center><div> + <a href="/file/811140345/1/I4cpmT-kjAk/1f7a944b623fe148bd" target="_blank"><img src="/file/811140345/1/I4cpmT-kjAk/1f7a944b623fe148bd" title="New sticker panel" style="width: 195px; padding: 10px 5px" /></a> +<br> +</div></center> + +<h4><a class="anchor" name="invite-links-for-groups" href="#invite-links-for-groups"><i class="anchor-icon"></i></a>Invite Links for Groups</h4> +<p>OK, this feature is so awesome that it deserves <a href="/blog/invite-links">a separate post</a>.</p> +<div><br></div> + +<p><em>The Telegram Team,<br>April 30, 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%2Fcaptions-places&text=Places%2C%20photo%20captions%2C%20smart%20notifications%2C%20invite%20links%20to%20join%20groups%20and%20more%20in%20one%20epic%20update." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Places, photo captions, smart notifications, invite links to join groups and more in one epic update." data-url="https://telegram.org/blog/captions-places"><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="Places, photo captions, smart notifications, invite links to join groups and more in one epic update." data-url="https://telegram.org/blog/captions-places" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/channels-2-0.html b/data/telegram.org/blog/channels-2-0.html new file mode 100644 index 0000000000..d94037040c --- /dev/null +++ b/data/telegram.org/blog/channels-2-0.html @@ -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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </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'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 it‘s 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 admin’s 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'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'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 that‘s all we’ve 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/channels.html b/data/telegram.org/blog/channels.html new file mode 100644 index 0000000000..2d8ac564e9 --- /dev/null +++ b/data/telegram.org/blog/channels.html @@ -0,0 +1,224 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Channels: Broadcasting Done Right</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Channels: Broadcasting Done Right"> + <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 introduces Channels, a new tool for broadcasting messages to unlimited audiences."> + <meta property="article:published_time" content="2015-09-22T08:58:03+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" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Channels: Broadcasting Done Right</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> + +<blockquote> +<p><strong>UPD:</strong> See <a href="https://telegram.org/blog/channels-2-0">Channels 2.0</a> for info on links to posts, silent messages and admin signatures.</p> +</blockquote> +<p>Today we are introducing Channels, a new tool for broadcasting your messages to large audiences. Channels replace the old Broadcast lists and are better in every way. They can have an <strong>unlimited</strong> number of members, they can be public with a <strong>permanent URL</strong> and each post in a channel has its own <strong>view counter</strong>. </p> +<center><div> + <a href="/file/811140483/1/iYcGTXbVNKM/25e848d36fe6536c75" target="_blank"><img src="/file/811140483/1/iYcGTXbVNKM/25e848d36fe6536c75" title="Telegram Channels" style="width: 244px; padding: 10px 5px" /></a> +<br><br> +</div></center> + +<p>Views from forwarded copies of your messages will be included in the total count. Last but not least, new members can see the entire message history in a channel once they join — all the way to day one. </p> +<p>If you'd like an example, join our official <a href="https://telegram.me/telegram"><strong>Telegram channel</strong></a> to get notified about our updates, or try creating your own channels from the ‘New Message’ menu.</p> +<h4><a class="anchor" name="ios-9-notifications" href="#ios-9-notifications"><i class="anchor-icon"></i></a>iOS 9 Notifications</h4> +<p>In other good news, we‘ve added Quick Replies from notifications, which are now supported on iOS 9 devices. This means you can reply to messages in Telegram, directly from your iPhone’s lock screen. Split View and more iOS 9 features will become available in early October.</p> +<p>Unfortunately, due to a bug in iOS 9, it is currently not possible to display the input field for Quick Replies right away — you‘ll need to press the ’Reply' button in order for it to appear. Quick replies will work as expected when iOS 9.1 is released with the relevant bugfixes.</p> +<h4><a class="anchor" name="photo-editor" href="#photo-editor"><i class="anchor-icon"></i></a>Photo Editor</h4> +<p>The <a href="/blog/photo-editor-and-passcodes#photo-editor">in-app Photo Editor</a> for iOS was updated with tools to adjust an image's tint, fade, and curves. The existing shadows and highlights tools default to 50% and are now functional in both directions.</p> +<center><div> + <a href="/file/811140035/1/3vDbnTE6dno/a015d13b71d1d1b807" target="_blank"><img src="/file/811140035/1/3vDbnTE6dno/a015d13b71d1d1b807" title="New photo editing tools" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140272/2/paVpt7WAUls/f196aa6b7c637b24a4" target="_blank"><img src="/file/811140272/2/paVpt7WAUls/f196aa6b7c637b24a4" title="Adjust curves" style="width: 195px; padding: 10px 5px" /></a><br><br> +</div></center> + +<p><em>September 22, 2015<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&text=Telegram%20introduces%20Channels%2C%20a%20new%20tool%20for%20broadcasting%20messages%20to%20unlimited%20audiences." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram introduces Channels, a new tool for broadcasting messages to unlimited audiences." data-url="https://telegram.org/blog/channels"><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 Channels, a new tool for broadcasting messages to unlimited audiences." data-url="https://telegram.org/blog/channels" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/chat-themes-interactive-emoji-read-receipts.html b/data/telegram.org/blog/chat-themes-interactive-emoji-read-receipts.html new file mode 100644 index 0000000000..4a6b82ce4d --- /dev/null +++ b/data/telegram.org/blog/chat-themes-interactive-emoji-read-receipts.html @@ -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'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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </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'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't find your glasses. This way you can set <strong>different themes</strong> for chats with co-workers and family members, so you won'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>⋮ > Change Colors</em>. On <strong>iOS</strong>, tap the <em>Chat Header > ⋯ > 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'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'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'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' privacy, read receipts in groups are only stored for <strong>7 days</strong> after the message was sent. It is not Telegram's business to keep a record of everything you'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'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're back with the next update. As always, it shouldn'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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/contacts-local-groups.html b/data/telegram.org/blog/contacts-local-groups.html new file mode 100644 index 0000000000..1ab722b8ca --- /dev/null +++ b/data/telegram.org/blog/contacts-local-groups.html @@ -0,0 +1,272 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Location-Based Chats, Adding Contacts Without Phone Numbers and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Location-Based Chats, Adding Contacts Without Phone Numbers and More"> + <meta property="og:image" content="https://telegram.org/file/464001958/1/Z3JgyvfqD-c.82175/1742eb11e697750e9a"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Today we're making it easier to exchange contact info on Telegram and introducing a way to host location-based public communities."> + <meta property="article:published_time" content="2019-06-23T17:51:05+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001958/1/Z3JgyvfqD-c.82175/1742eb11e697750e9a" /> + <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/contacts-local-groups" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Location-Based Chats, Adding Contacts Without Phone Numbers 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/464001499/1/z7yRs5uf-PE.228615/d9f270f7c0c8973075" target="_blank"><img src="/file/464001958/1/Z3JgyvfqD-c.82175/1742eb11e697750e9a" srcset="/file/464001499/1/z7yRs5uf-PE.228615/d9f270f7c0c8973075, 1200w" title="Fun fact: You won't find any funny alt texts in Telegram blog posts before this one – except on one page. And no, I'm not telling you which one." alt="Telegram 5.8: Adding Contacts Without Phone Numbers, Location-Based Chats and More"/></a> +</div> + +<p>In the previous update, we improved <a href="https://telegram.org/blog/privacy-discussions-web-bots">privacy settings</a> and added a way for you to <a href="https://telegram.org/blog/privacy-discussions-web-bots#who-can-see-my-phone-number">control</a> who can see your phone number. Today we're making it easier to <strong>exchange contact info</strong> on Telegram.</p> +<p>All new chats now have an <strong>Add to Contacts</strong> button at the top. This allows you to quickly add <strong>anyone</strong> who messages you to your Telegram contacts, even if you don't know their phone number yet.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001631/1/F-_-vAcONP4.106296/d1a4c5f258a80758de" target="_blank"><img src="/file/464001725/1/sLl1wtZPYSs.24847/9d1d386cb887df542a" title="Uniform buttons in any new chat" alt="Add/Block Buttons in a Chat" srcset="/file/464001631/1/F-_-vAcONP4.106296/d1a4c5f258a80758de , 2x" /></a> +</div> + +<p>If you'd prefer they disappeared instead, the <strong>Block</strong> button is right next door.</p> +<h3><a class="anchor" name="add-people-nearby" href="#add-people-nearby"><i class="anchor-icon"></i></a>Add People Nearby</h3> +<p>Ever scrambled for business cards at a beach party? Or dropped somebody's phone into the pool in a “let me type in my number for you” moment? Worry no more.</p> +<p>Simply open <em>Contacts > Add People Nearby</em> to quickly <strong>exchange contact info</strong> with Telegram users who are <strong>standing next to you</strong> (and also have this section open).</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/464001736/1/v8cwF2n-V5s.75257/0d759efd60ac818e6c" style="max-width: 400px;" title="Adding contacts from 'People Nearby'" alt="Adding contacts from 'People Nearby'"> + <source src="/file/464001141/1/rbG5hZbM4CA.4994584.mp4/47489ee464c7c2785d" type="video/mp4"> + </video> +</div> + +<p>This feature comes in especially handy when several people meet to perform the take-my-number dance. Now you can catch all your pokémon in just a few taps.</p> +<h3><a class="anchor" name="location-based-chats" href="#location-based-chats"><i class="anchor-icon"></i></a>Location-Based Chats</h3> +<p>Speaking of pokémon, the new People Nearby section also shows <strong>Groups Nearby</strong> – location-based group chats open for anyone around to join.</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/464001221/2/iBxGpksIOOI.60606/1bd0e8d6ef9e0ef9f0" style="max-width: 400px;" title="Groups nearby" alt="Joining a group nearby"> + <source src="/file/464001046/1/kdljqCmHZjE.4619221.mp4/362e5cdc55ccb55eab" type="video/mp4"> + </video> +</div> + +<p>Tap <strong>Create a Local Group</strong> to unite your dormitory or apartment building, and maybe you can get Todd in 2C to finally turn his music down.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001076/1/vrMtKlSsO0U.131149/95ef86596728e6202f" target="_blank"><img src="/file/464001576/1/Mek_KLIbkT8.43709/a88d03ef2f857a6d30" title="Location-based group" alt="Location-based group" srcset="/file/464001076/1/vrMtKlSsO0U.131149/95ef86596728e6202f , 2x" /></a> +</div> + +<p>This update opens up a new world of location-based group chats for anything from conferences, to festivals, to stadiums, to campuses, to chatting with people hanging out in the same cafe.</p> +<h3><a class="anchor" name="transfer-group-chats" href="#transfer-group-chats"><i class="anchor-icon"></i></a>Transfer Group Chats</h3> +<p>If you ever get tired of being the host of your group, you can pass the burden on to another administrator. Telegram apps now support transferring ownership rights from any <strong>groups</strong> and <strong>channels</strong> to other users.</p> +<p>Grant full admin rights to your Chosen One to see the <strong>Transfer Ownership</strong> button.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001145/1/hlhoTGVKSV4.163774/a9a2de2dcf1b1ecbed" target="_blank"><img src="/file/464001800/1/aevoBVuYzHQ.46119/b80aed7d5e98a3db65" title="Transfer group ownership" alt="Transfer group ownership" srcset="/file/464001145/1/hlhoTGVKSV4.163774/a9a2de2dcf1b1ecbed , 2x" /></a> +</div> + +<p>Whether your watch has ended, or you have some business to attend to in King's Landing, passing the torch is a simple, two-tap affair.</p> +<h3><a class="anchor" name="enhanced-notification-exceptions" href="#enhanced-notification-exceptions"><i class="anchor-icon"></i></a>Enhanced Notification Exceptions</h3> +<p>Notification Exceptions just got more powerful. You can now toggle <strong>message previews</strong> for specific chats. If you have many exceptions, use <strong>Search</strong> to find the right chat — or <strong>‘Delete All’</strong> to get back to square one instantly.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001033/1/cNWgfg8BQFI.105520/5abd60a8dd21e7f332" target="_blank"><img src="/file/464001453/1/eWFOg1nG87E.30515/d7cec475ab4afa6c6a" title="Notification exceptions" alt="Notification exceptions" srcset="/file/464001033/1/cNWgfg8BQFI.105520/5abd60a8dd21e7f332 , 2x" /></a> +</div> + +<h3><a class="anchor" name="siri-shortcuts" href="#siri-shortcuts"><i class="anchor-icon"></i></a>Siri Shortcuts</h3> +<p>Owners of iOS devices can now use <a href="https://support.apple.com/en-us/HT209055">Siri shortcuts</a> to open chats with people. No hands just got no-handsomer.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001139/1/-2FI3kk9x8Y.76883/a31f4a94fafbc73edb" target="_blank"><img src="/file/464001256/1/SbG0VqNdXcg.23363/81a41971205adc1ced" title="Siri" alt="Siri" srcset="/file/464001139/1/-2FI3kk9x8Y.76883/a31f4a94fafbc73edb , 2x" /></a> +</div> + +<h3><a class="anchor" name="theme-picker-and-icon-style" href="#theme-picker-and-icon-style"><i class="anchor-icon"></i></a>Theme Picker and Icon style</h3> +<p>We've also revamped the <strong>Appearance</strong> settings on iOS so that it's easier to see what the different themes will look like even before you apply them.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001041/1/8z8mTlhCNGU.131534/02bafeae86c0f1512d" target="_blank"><img src="/file/464001227/1/2tHv2H5_-Gc.37870/2b6c69bd523e8a04e6" title="New theme picker on iOS" alt="New theme picker on iOS" srcset="/file/464001041/1/8z8mTlhCNGU.131534/02bafeae86c0f1512d , 2x" /></a> +</div> + +<p>A while back, the <a href="https://telegram.org/blog/telegram-x">Telegram X</a> app for <strong>iOS</strong> was promoted, becoming the <strong>official</strong> Telegram, and its previous shell was removed from the store. If you are still using it for some reason, this is a good time to switch — ol' Telegram X is now three versions behind the main branch.</p> +<p>Some users told us they didn't want to switch because they liked the Telegram X icon better. So this update adds a way for your iOS app icon to get back in black:</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001949/1/Qzm6fwYz9aA.48175/1a30dc952e47878272" target="_blank"><img src="/file/464001305/1/A_YhtWAGEPY.15915/b22b4c1d982a105d28" title="Pick your poison" alt="Pick your poison" srcset="/file/464001949/1/Qzm6fwYz9aA.48175/1a30dc952e47878272 , 2x" /></a> +</div> + +<p>By the way, Telegram X for <strong>Android</strong> is still there and is not going anywhere for now. If you're looking for an alternative interface, feel free to <a href="https://play.google.com/store/apps/details?id=org.thunderdog.challegram&hl=en">give it a try</a>.</p> +<div><br></div> + +<p><em>June 23, 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%2Fcontacts-local-groups&text=Adding%20contacts%20made%20easier%2C%20location-based%20group%20chats%2C%20transfer%20group%20ownership%20and%20more." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Adding contacts made easier, location-based group chats, transfer group ownership and more." data-url="https://telegram.org/blog/contacts-local-groups"><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="Adding contacts made easier, location-based group chats, transfer group ownership and more." data-url="https://telegram.org/blog/contacts-local-groups" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/coronavirus.html b/data/telegram.org/blog/coronavirus.html new file mode 100644 index 0000000000..9ffb9f4b8f --- /dev/null +++ b/data/telegram.org/blog/coronavirus.html @@ -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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </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'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'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'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'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'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'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'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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/cryptocontest.html b/data/telegram.org/blog/cryptocontest.html new file mode 100644 index 0000000000..7ca25a4dad --- /dev/null +++ b/data/telegram.org/blog/cryptocontest.html @@ -0,0 +1,224 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>$300,000 for Cracking Telegram Encryption</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="$300,000 for Cracking Telegram Encryption"> + <meta property="og:image" content="https://telegram.org/file/811140704/1/2Er4fG4UQLI/7ee52af54b98564554"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="$300,000 for cracking #Telegram encryption"> + <meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140704/1/2Er4fG4UQLI/7ee52af54b98564554" /> + <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/cryptocontest" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">$300,000 for Cracking Telegram Encryption</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140704/1/2Er4fG4UQLI/7ee52af54b98564554" class="blog_side_image"/> +</div> + +<blockquote> +<p>This contest is <a href="https://telegram.org/blog/cryptocontest-ends">over</a>, but Telegram's <strong>bug bounty program</strong> is always open.</p> +<p><strong>Security researchers</strong> are welcome to submit any issues they find in the Telegram <strong>apps</strong> or <strong>protocol</strong> to us at <strong>security@telegram.org</strong>. All submissions which result in a change of code or configuration are eligible for bounties, ranging from <strong>$500</strong> to <a href="https://telegram.org/blog/crowdsourcing-a-more-secure-future"><strong>$100,000</strong></a> or more, depending on the severity of the issue.</p> +</blockquote> +<p>Earlier this year we had a <a href="/blog/winter-contest-ends">contest</a> to decipher intercepted Telegram messages, that did not produce a winner. Today we announce a new contest with an easier task and a larger prize — <strong>$300,000</strong> for cracking <a href="https://core.telegram.org/api/end-to-end">Telegram's encryption</a>, and this time contestants can not only monitor traffic, but also act as the Telegram server and use active attacks, which vastly increases their capabilities.</p> +<p>In this contest you assume the role of a malicious entity in full control of both the communication lines and the Telegram servers themselves.</p> +<blockquote> +<p><strong>UPD</strong> The current round of the contest is over. <a href="https://telegram.org/blog/cryptocontest-ends"><strong>Go to results »</strong></a></p> +</blockquote> +<p>Your goal is to extract sensitive data (a secret email address) from a Secret Chat between two users — Nick and Paul. You control the entire process, from chat creation to the sending of each individual message and can perform various active attacks, including MITM, KPA, CPA, replay attacks, etc.</p> +<h4><a class="anchor" name="contest-interface" href="#contest-interface"><i class="anchor-icon"></i></a>Contest Interface</h4> +<p>In order to facilitate the task, we have created an interface, using which you can act as the server and determine which side gets what data. For more details, please check out the <strong><a href="https://core.telegram.org/contest300K">Cracking Contest Description</a></strong>.</p> +<h4><a class="anchor" name="objectives" href="#objectives"><i class="anchor-icon"></i></a>Objectives</h4> +<p>In order to confirm that Telegram crypto was indeed cracked and claim your <strong>$300,000</strong>, you‘ll need to send an email to the secret email address that you’ve extracted from one of the messages exchanged by Paul and Nick.</p> +<p>Your email must contain:<br>- The entire text of the message that contained the secret email.<br>- Session logs for the successful attempt with your user_id.<br>- A detailed explanation of the attack on the protocol.<br>- Your bank account details to receive the $300,000 prize.</p> +<p>There is also a bonus objective with an independent prize of <strong>$100,000</strong>.<br><a href="https://core.telegram.org/contest300K#bonus-objective">See full description for details »</a></p> +<h4><a class="anchor" name="end-date" href="#end-date"><i class="anchor-icon"></i></a>End Date</h4> +<p>To prove that the competition was fair, we will add a command that returns the keys used for encryption as soon as a winner is announced. In case there is no winner by February 4, 2015, decryption commands will be added at that date.</p> +<div> + <a href="/file/811140570/1/HuWOtUZqH3Y/ae540ee4fe9e565761" target="_blank"><img src="/file/811140509/1/w7ub14yjRmE/857f9fc6bf21c49411" title="Click for print quality image" class="dev_page_image" /></a><br> +</div> + +<p><em>November 4, 2014<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%2Fcryptocontest&text=%24300%2C000%20for%20cracking%20%23Telegram%20encryption" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="$300,000 for cracking #Telegram encryption" data-url="https://telegram.org/blog/cryptocontest"><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="$300,000 for cracking #Telegram encryption" data-url="https://telegram.org/blog/cryptocontest" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/desktop-1-0.html b/data/telegram.org/blog/desktop-1-0.html new file mode 100644 index 0000000000..9577f65739 --- /dev/null +++ b/data/telegram.org/blog/desktop-1-0.html @@ -0,0 +1,250 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Desktop reaches version 1.0 – and it's BEAUTIFUL</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Telegram Desktop reaches version 1.0 – and it's BEAUTIFUL"> + <meta property="og:image" content="https://telegram.org/file/811140732/1/lA-jWG-_Ldg.115711/647a0b06fd62ef73aa"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="First launched in 2013, Telegram Desktop graduates to version 1.0 today. We've added a fabulous new design and support for custom themes."> + <meta property="article:published_time" content="2017-01-12T01:28:36+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140732/1/lA-jWG-_Ldg.115711/647a0b06fd62ef73aa" /> + <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/desktop-1-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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Telegram Desktop reaches version 1.0 – and it's BEAUTIFUL</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140550/1/pQ0yMAJqgr0.19948.gif/71e791984bba07bfca" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/811140732/1/lA-jWG-_Ldg.115711/647a0b06fd62ef73aa" target="_blank"><img src="/file/811140732/1/lA-jWG-_Ldg.115711/647a0b06fd62ef73aa" title="Telegram Desktop reaches version 1.0"/></a> +</div> + +<p>Telegram was available for desktops and laptops since <strong>2013</strong>. Today it finally graduates to version <strong>1.0</strong> with a fabulous new design.</p> +<p>Consistent material design, great animations, and support for custom themes make Telegram for Windows, Mac, and Linux <strong>the</strong> tool for messaging from your Mac or PC.</p> +<p>This is what <a href="https://desktop.telegram.org">Telegram Desktop 1.0</a> looks like:</p> +<div class="blog_2images_wrap"> + <div class="blog_image_wrap"> + <a href="/file/811140816/3/h5HnYvmF-RY.46465/9952eea3eec0a8e9a7" target="_blank"><img src="/file/811140816/3/h5HnYvmF-RY.46465/9952eea3eec0a8e9a7" title="Login screen"/></a> + <p>Login Screen</p> + </div> + <div class="blog_image_wrap"> + <a href="/file/811140557/4/6zghfkT1Uyc.365727/a7c0863af9ecc4b3af" target="_blank"><img src="/file/811140557/4/6zghfkT1Uyc.365727/a7c0863af9ecc4b3af" title="Your chats"/></a> + <p>Your Chats</p> + </div> +</div> + +<p>Smooth animations are now everywhere:</p> +<div class="blog_video_player_wrap" style="max-width: 640px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/811140111/3/IyTIufSQK-g.56121/460cfe8041b2c32696" style="max-width: 640px;"> + <source src="/file/811140855/1/3qsoZxNgc0o.379223.mp4/3d741486e777e10af8" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="custom-themes" href="#custom-themes"><i class="anchor-icon"></i></a>Custom Themes</h3> +<p>If you're looking for an alternative design, Telegram Desktop also supports customized themes. <strong>Anyone</strong> can make a theme for Telegram Desktop. This theme, for example, changes green outgoing messages to blue:</p> +<div class="blog_image_wrap"> + <a href="https://t.me/themes/6" target="_blank"><img src="/file/811140968/3/UfbcOfXv2YU.118417/b230905e577f9cc2de" title="Blue theme by Pavel Durov" /></a> + <p><a href="https://t.me/themes/6" target="_blank">Blue theme</a></p> +</div> + +<p>And here’s a third-party night mode theme:</p> +<div class="blog_image_wrap"> + <a href="https://t.me/themes/7" target="_blank"><img src="/file/811140839/1/QrFB0s48_pg.105284/260a84021f203c3bc1" title="Dark theme by Cristian Ospina" /></a> + <p><a href="https://t.me/themes/7" target="_blank">Dark theme</a></p> +</div> + +<h3><a class="anchor" name="what-else-makes-telegram-desktop-cool" href="#what-else-makes-telegram-desktop-cool"><i class="anchor-icon"></i></a>What Else Makes Telegram Desktop Cool?</h3> +<p>The best thing about Telegram Desktop is that it automatically syncs messages from your phone with your computer using Telegram’s encrypted cloud. Just <a href="https://desktop.telegram.org">install it</a> and log in to your account! All your messages, documents, photos and videos will be synced for you from the secure cloud.</p> +<p>Thanks to <a href="https://telegram.org/blog/drafts">Cloud Drafts</a>, you can even start typing on your phone, then continue on your desktop when you reach home or work. </p> +<p>Who needs email now? Telegram Desktop is many times faster and handles attachments like a pro. Just share your <a href="https://t.me/username">t.me/username</a> with those who want to reach you. </p> +<div><br></div> + +<p><em>January 11, 2017<br>The Telegram Team</em></p> +<div><br></div> + +<p><strong>P.S.</strong> For desktop experiences, we also have <a href="https://web.telegram.org">Telegram Web</a> and <a href="https://macos.telegram.org/">Telegram Mac</a>, but our founder insists that Telegram Desktop is the way to go on all platforms.</p> +<p><strong>P.P.S.</strong> If you're looking for an easy way to get your emails right in Telegram, check out <a href="https://t.me/gmailbot">this Gmail bot</a>. Helps one to stay in touch with those who insist on using antique methods of communication.</p> +</div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fdesktop-1-0&text=Telegram%20Desktop%201.0%20is%20out%21%20Check%20out%20the%20fabulous%20new%20design%20and%20customizable%20themes.%20" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram Desktop 1.0 is out! Check out the fabulous new design and customizable themes. " data-url="https://telegram.org/blog/desktop-1-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 Desktop 1.0 is out! Check out the fabulous new design and customizable themes. " data-url="https://telegram.org/blog/desktop-1-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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/desktop-compact.html b/data/telegram.org/blog/desktop-compact.html new file mode 100644 index 0000000000..9a9fe046b0 --- /dev/null +++ b/data/telegram.org/blog/desktop-compact.html @@ -0,0 +1,213 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Desktop Adds Compact Mode</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Telegram Desktop Adds Compact Mode"> + <meta property="og:image" content="https://telegram.org/file/811140246/1/yhgI610ZZuY/bdad6f62df8496c3fa"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="#Telegram for #Desktops adds single column mode."> + <meta property="article:published_time" content="2014-12-22T14:23:56+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140246/1/yhgI610ZZuY/bdad6f62df8496c3fa" /> + <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/desktop-compact" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Telegram Desktop Adds Compact Mode</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140246/1/yhgI610ZZuY/bdad6f62df8496c3fa" class="blog_side_image"/> +</div> + +<p>The official Telegram app for <a href="https://desktop.telegram.org">Windows, OSX and Linux</a> is now available in compact mode — you can resize the window so that only a single column remains. This makes it easier to use Telegram on smaller <strong>desktop</strong> or <strong>laptop</strong> screens.</p> +<div><center> + <a href="/file/811140940/2/WeoCQAS6TS0/f748d2ecb1e1b5285a" target="_blank"><img src="/file/811140940/2/WeoCQAS6TS0/f748d2ecb1e1b5285a" title="Chats view" style="padding: 10px 20px; width: 280px" /></a> + + <a href="/file/811140661/1/l-zIUkBmcsk/b67952a55549d4aceb" target="_blank"><img src="/file/811140661/1/l-zIUkBmcsk/b67952a55549d4aceb" title="Conversation view" style="padding: 10px 20px; width: 280px" /></a> +</center></div> + +<p>You can download Telegram Desktop at <a href="https://desktop.telegram.org"><strong>desktop.telegram.org</strong></a>. As of last week, this app is also available in the <a href="https://itunes.apple.com/us/app/telegram-desktop/id946399090">Mac AppStore</a>, alongside with our <a href="https://telegram.org/dl/osx">native OSX app</a>.</p> +<p>To log in on your computer, simply enter your phone number and get a code delivered via Telegram to your phone. All your messages (except those from Secret Chats) are instantly <strong>synced</strong> between all your devices, so you can continue right where you left off.</p> +<div><br></div> + +<p><em>December, 22<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%2Fdesktop-compact&text=%23Telegram%20for%20%23Desktops%20adds%20single%20column%20mode." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="#Telegram for #Desktops adds single column mode." data-url="https://telegram.org/blog/desktop-compact"><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 for #Desktops adds single column mode." data-url="https://telegram.org/blog/desktop-compact" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/discover-stickers-and-more.html b/data/telegram.org/blog/discover-stickers-and-more.html new file mode 100644 index 0000000000..414cbe6cb5 --- /dev/null +++ b/data/telegram.org/blog/discover-stickers-and-more.html @@ -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 & 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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </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'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'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'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'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'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'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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/edit.html b/data/telegram.org/blog/edit.html new file mode 100644 index 0000000000..cb8c80e6f9 --- /dev/null +++ b/data/telegram.org/blog/edit.html @@ -0,0 +1,245 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Edit Messages, New Mentions and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Edit Messages, New Mentions and More"> + <meta property="og:image" content="https://telegram.org/file/811140010/1/POGV5NPdHAo.23437.gif/f1389ee360bf61f577"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Editing messages, new mentions, frequent contacts, bots in attachment menu, and more."> + <meta property="article:published_time" content="2016-05-15T17:12:57+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140010/1/POGV5NPdHAo.23437.gif/f1389ee360bf61f577" /> + <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/edit" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Edit Messages, New Mentions and More</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140010/1/POGV5NPdHAo.23437.gif/f1389ee360bf61f577" class="blog_side_image"/> +</div> + +<p>Farewell to typos! Starting today, you can edit the text of your messages after sending them. This works across all Telegram chats, including groups and one-on-one conversations.</p> +<div class="blog_image_wrap"> + <a href="/file/811140100/2/maZcBXgwrmE.306486/5bd7c8f4708afe28f8" target="_blank"><img src="/file/811140100/2/maZcBXgwrmE.306486/5bd7c8f4708afe28f8" title="Edit messages" /></a> + <p>Edit messages</p> +</div> + +<p>Simply tap and hold on a message, then press ‘Edit’. If you're on <a href="https://desktop.telegram.org">desktop</a>, press the up arrow button to edit your last message. The messages will display a small ‘edited’ label so that it's easy to tell which were altered.</p> +<h4><a class="anchor" name="new-mentions" href="#new-mentions"><i class="anchor-icon"></i></a>New Mentions</h4> +<p><a href="https://telegram.org/blog/replies-mentions-hashtags">Mentioning</a> other people in groups is handy since it sends them a notification about your message even if they muted the group. Starting today, you can mention any members in a group – even if they don't have a <a href="https://telegram.org/blog/usernames-and-secret-chats-v2">username</a>. Just type the <code>@</code> symbol and select whoever you would like to address. Easy!</p> +<div class="blog_image_wrap"> + <a href="/file/811140709/1/gTAMe7KBjxI.213591/37b9d9f3090d78a47f" target="_blank"><img src="/file/811140709/1/gTAMe7KBjxI.213591/37b9d9f3090d78a47f" title="Mention group members" /></a> + <p>Mention group members</p> +</div> + +<h4><a class="anchor" name="people-list" href="#people-list"><i class="anchor-icon"></i></a>People List</h4> +<p>Speaking of addressing people, you can now get to your recent chats much faster using the new People list in Search.</p> +<div class="blog_image_wrap"> + <a href="/file/811140588/2/TcLgRm4lvOs.216480/400f4e745ca4c23d05" target="_blank"><img src="/file/811140588/2/TcLgRm4lvOs.216480/400f4e745ca4c23d05" title="People" /></a> + <p>Recent chats</p> +</div> + + +<h4><a class="anchor" name="bot-attachments" href="#bot-attachments"><i class="anchor-icon"></i></a>Bot Attachments</h4> +<p>We've also made it easier for you to access your favorite <a href="https://telegram.org/blog/inline-bots">inline bots</a>. Simply scroll down the attachment menu – and there they are. The more you use them, the higher they will climb.</p> +<div class="blog_image_wrap"> + <a href="/file/811140151/2/QBr-eVQIcDQ.234803/03ff1e9b0848871394" target="_blank"><img src="/file/811140151/2/QBr-eVQIcDQ.234803/03ff1e9b0848871394" title="Bots in attachment menu" /></a> + <p>Bots in attachment menu</p> +</div> + +<p>Naturally, you will only see inline bots in the attachment menu if you used them at least once. Try <a href="https://telegram.me/youtube">@youtube</a>, <a href="https://telegram.me/gif">@gif</a> or <a href="https://telegram.me/imdb">@imdb</a> if you don't know where to start. Check out <a href="https://telegram.org/blog/inline-bots">this post</a> for more info on how to use inline bots.</p> +<h4><a class="anchor" name="interface-improvements" href="#interface-improvements"><i class="anchor-icon"></i></a>Interface Improvements</h4> +<p>We‘ve added quick sharing buttons to forwarded messages from bots, channels, and public groups. Notifications about messages with stickers will now show the relevant emoji so that you’ll know the general idea at first glance.</p> +<div class="blog_image_wrap"> + <a href="/file/811140465/2/t_gAyjk4S3A.61521/73620590fdc021aa4e" target="_blank"><img src="/file/811140465/2/t_gAyjk4S3A.61521/73620590fdc021aa4e" title="Scroll to bottom" /></a> + <p>Scroll to bottom</p> +</div> + +<p>Last but not least, if you're on <a href="https://telegram.org/dl/ios">iOS</a>, your app now remembers the scroll position in chats when switching to a different chat and back. And scrolling up in a chat summons a new button that will send you back to the bottom in one tap. This button also displays a handy unread message counter if new ones are waiting for you there.</p> +<div><br></div> + +<p>And that's it for today. Stay tuned for more updates coming soon!</p> +<div><br></div> + +<p><em>May 15, 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%2Fedit&text=Editing%20messages%2C%20new%20mentions%2C%20frequent%20contacts%2C%20bots%20in%20attachment%20menu%2C%20and%20more." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Editing messages, new mentions, frequent contacts, bots in attachment menu, and more." data-url="https://telegram.org/blog/edit"><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="Editing messages, new mentions, frequent contacts, bots in attachment menu, and more." data-url="https://telegram.org/blog/edit" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/export-and-more.html b/data/telegram.org/blog/export-and-more.html new file mode 100644 index 0000000000..8f62446caa --- /dev/null +++ b/data/telegram.org/blog/export-and-more.html @@ -0,0 +1,238 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Chat Export Tool, Better Notifications and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Chat Export Tool, Better Notifications and More"> + <meta property="og:image" content="https://telegram.org/file/811140016/1692/4HKx4kEpNa8.64434/b3dc519d3e4f9812a9"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content=""> + <meta property="article:published_time" content="2018-08-27T08:53:26+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140016/1692/4HKx4kEpNa8.64434/b3dc519d3e4f9812a9" /> + <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/export-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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Chat Export Tool, Better Notifications and More</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140887/1706/Q7-MAkltuNo.25616.gif/bbf3e9f0674ede33f4" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/811140042/16ee/4yilMhHM0n4.176596/f0d7c3976aa05bd2a5" target="_blank"><img src="/file/811140016/1692/4HKx4kEpNa8.64434/b3dc519d3e4f9812a9" srcset="/file/811140042/16ee/4yilMhHM0n4.176596/f0d7c3976aa05bd2a5, 1200w" title="Export Tool, Better Notifications and More"/></a> +</div> + +<p>Today’s Telegram update brings you an easy way to save conversations on your disk. In just a few taps, you can export some (or all) of your chats, including photos and other media they contain. As a result you’ll get all your data accessible offline in JSON-format or in beautifully formatted HTML. </p> +<div class="blog_image_wrap"> + <a href="/file/811140583/1839/CQ2UCtB0gqc.132091/f4258d1ca97fb12c89" target="_blank"><img src="/file/811140444/16f3/YkV7M6VLeaM.45094/332460d9e27cfe3f4f" title="Data Export Results" srcset="/file/811140583/1839/CQ2UCtB0gqc.132091/f4258d1ca97fb12c89 , 2x" /></a> + <p>Data Export Results</p> +</div> + +<p>To use this feature, make sure you have the latest version of <a href="https://desktop.telegram.org">Telegram Desktop</a> installed on your computer, then click <strong>Settings > Export Telegram data</strong>. This tool will be particularly useful for users who have millions of messages and can’t easily access the oldest parts of their messaging history.</p> +<div class="blog_video_player_wrap" style="max-width: 640px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/811140202/15b5/EVLULHVGYks.23016/0ce7af834dcfb6a4f9" style="max-width: 640px;"> + <source src="https://telegram.org/resources/video/ExDataBlog.mp4" type="video/mp4"> + </video> +</div> + +<p>You can export individual chats by opening the <strong>…</strong> menu in any chat and choosing <strong>Export chat history</strong>.</p> +<h4><a class="anchor" name="exceptions-in-notifications" href="#exceptions-in-notifications"><i class="anchor-icon"></i></a>Exceptions in Notifications</h4> +<p>Telegram was the first app to give its users notorious flexibility in fine-tuning how their message notifications work. Today we are taking this further by adding <strong>Exceptions</strong> to the notifications settings, where you can see which chats are excluded from the global settings you defined in <strong>Settings > Notifications</strong>.</p> +<div class="blog_image_wrap"> + <a href="/file/811140056/15c5/fnJDPKqSfGg.69180/bd69fec98452920b96" target="_blank"><img src="/file/811140539/170f/voq1qbQRJUs.28044/64271b89828fb63329" title="Notifications Exceptions" srcset="/file/811140056/15c5/fnJDPKqSfGg.69180/bd69fec98452920b96 , 2x" /></a> + <p>Notifications Exceptions</p> +</div> + +<p>Muting all chats but a few (or vice versa) has never been easier.</p> +<h4><a class="anchor" name="improved-telegram-passport" href="#improved-telegram-passport"><i class="anchor-icon"></i></a>Improved Telegram Passport</h4> +<p>We’ve been overwhelmed by the reception of <a href="https://telegram.org/blog/passport">Telegram Passport</a> – the tool to log into third-party apps that require real-life identity. Just two weeks after its launch, Passport can be used to sign up for many services, from established sharing economy services to blockchain startups.</p> +<div> +To name just a few projects that integrated Telegram Passport: <a href="https://sumsub.com/" target="blank">Sum & Substance</a> (KYC & user verification), <a href="https://cex.io/" target="blank">CEX.IO</a> and <a href="https://xena.exchange/" target="blank">Xena</a> (cryptocurrency exchanges), <a href="https://cryptopay.me/" target="blank">CryptoPay</a> (wallet), <a href="https://youdrive.today/" target="blank">YouDrive</a> (carsharing), <a href="https://profi.ru/">Profi</a> and <a href="https://worki.ru/">Worki</a> (job marketplaces), <a href="https://www.minter.network/" target="blank">Minter Network</a> and <a href="https://minexcoin.com/" target="blank">Minexcoin</a> (blockchain startups), <a href="https://www.kickico.com/" target="blank">KICKICO</a>, <a href="https://cryptonomos.com/" target="blank">Cryptonomos</a> and <a href="https://icoadm.in/en/" target="blank">ICOadmin</a> (ICO platforms).<br><br></div> + +<p>Building on this success, today we’re upgrading Passport to support names in original languages and additional types of documents. We’ve also strengthened the <a href="https://core.telegram.org/passport/encryption">algorithms</a> that encrypt Passport data to better protect your data against hacking attacks coming from Telegram (however unlikely those may seem). This way we further ensure that only you have access to your private data. </p> +<h4><a class="anchor" name="source-code-and-apis" href="#source-code-and-apis"><i class="anchor-icon"></i></a>Source Code and APIs</h4> +<p>As always, you do not have to take our word on how our encryption works. The updated source code of Telegram apps reflecting all of today’s changes is available on GitHub and open for everybody to review. If you are a developer of a service that requires identity verification, make sure you check out <a href="https://core.telegram.org/passport">these docs</a> explaining how Telegram Passport can be integrated into your app.</p> +<div><br></div> + +<p><em>August 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%2Fexport-and-more&text=Chat%20Export%20Tool%2C%20better%20notifications%20and%20improved%20Telegram%20Passport%20in%20Telegram%204.9.1" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Chat Export Tool, better notifications and improved Telegram Passport in Telegram 4.9.1" data-url="https://telegram.org/blog/export-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="Chat Export Tool, better notifications and improved Telegram Passport in Telegram 4.9.1" data-url="https://telegram.org/blog/export-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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/filters-anonymous-admins-comments.html b/data/telegram.org/blog/filters-anonymous-admins-comments.html new file mode 100644 index 0000000000..20e5bcd4dd --- /dev/null +++ b/data/telegram.org/blog/filters-anonymous-admins-comments.html @@ -0,0 +1,261 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Search Filters, Anonymous Admins, Channel Comments and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Search Filters, Anonymous Admins, Channel Comments and More"> + <meta property="og:image" content="https://telegram.org/file/464001393/1/LVWv3N21dXY.74168/8184cbaaa407526e35"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Your personal Telegram Cloud is endless and full of spicy memes – to help you find your way around it, we're introducing Search Filters. Today's update also features Anonymous Admins to make your battle for freedom safer and Channel Comments to make sure everyone's voice is heard."> + <meta property="article:published_time" content="2020-09-30T16:02:33+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001393/1/LVWv3N21dXY.74168/8184cbaaa407526e35" /> + <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/filters-anonymous-admins-comments" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Search Filters, Anonymous Admins, Channel Comments and More</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/464001084/3/N12TRSWaHos.14488/03bf21e2e30793668e"><img src="/file/464001084/4/lEBG7jhoHc4.22622.png/0965db0e34f304e41c" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001151/1/QPM7nRtml-w.221032/8c2e5afed053d66d9c" target="_blank"><img src="/file/464001393/1/LVWv3N21dXY.74168/8184cbaaa407526e35" srcset="/file/464001151/1/QPM7nRtml-w.221032/8c2e5afed053d66d9c, 1200w" title="Use our filters to surf the South Specific Ocean" alt="Introducing Search Filters, Anonymous Group Admins, Channel Comments and More"/></a> +</div> + +<p>Your personal Telegram Cloud is endless and full of spicy memes. To help you find your way around it, we're introducing <strong>Search Filters</strong>. Today's update also features <strong>Anonymous Admins</strong> to make your battle for freedom safer and <strong>Channel Comments</strong> to make sure everyone's voice is heard.</p> +<h3><a class="anchor" name="search-filters" href="#search-filters"><i class="anchor-icon"></i></a>Search Filters</h3> +<p>From now on, you can filter search results by <strong>type</strong> using the new tabs: <em>Media</em>, <em>Links</em>, <em>Files</em> and others. To search a particular <strong>time period</strong>, just type <em>“August 14”</em> or <em>“Yesterday”</em>. Typing the name of any person, group, channel or bot will add a filter by <strong>source</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/464001450/4/3w3qZOs74ww.66299/272fee7c985f590b55" style="max-width: 400px;" title="Photos from 2020 may be less exciting than advertised." alt="Using search filters"> + <source src="/file/464001191/4/Q5K-ZFbobD8.3557778.mp4/d11910d1fc468f1051" type="video/mp4"> + </video> +</div> + +<p>These search filters can be combined, which lets you look for something as specific as <em>messages with a link, sent in March 2016, containing the word <a href="https://en.wikipedia.org/wiki/RRS_Sir_David_Attenborough#Naming_poll">“boat”</a></em>.</p> +<h3><a class="anchor" name="anonymous-group-admins" href="#anonymous-group-admins"><i class="anchor-icon"></i></a>Anonymous Group Admins</h3> +<p>Telegram is increasingly used to organize protests <a href="https://www.rferl.org/a/belarusian-protesters-counter-authorities-moves-with-online-tactics/30850435.html">for democracy</a> and freedom. Today we're introducing another tool for safer protests.</p> +<p>Toggle <strong>Remain Anonymous</strong> in Admin rights to enable Batman mode. The anonymized admin will be <strong>hidden</strong> in the list of group members, and their messages in the chat will be signed with the <strong>group name</strong>, similar to channel posts.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001117/3/xNBzdph8qLc.74814/d300a79f540a29de7a" target="_blank"><img src="/file/464001488/2/YCPH_9vNlaE.32490/b62f27dee2ba95ca8a" title="This feature doesn't make you anonymous when meeting people in real life! Don't forget your Guy Fawkes mask if you ever go outside." alt="Post from an anonymous admin in a group" srcset="/file/464001117/3/xNBzdph8qLc.74814/d300a79f540a29de7a , 2x" /></a> +</div> + +<h3><a class="anchor" name="channel-comments" href="#channel-comments"><i class="anchor-icon"></i></a>Channel Comments</h3> +<p>Speaking of Channels, we've added a <strong>comment button</strong> to posts on channels with discussion groups. Comments show up in a cozy little <strong>thread</strong> of their own, but will also land in the <strong>discussion group</strong> to keep everyone in the loop and make it easier for admins to keep the conversation civil.</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/464001724/1/Z0DVgBP2R1o.77883/c12a015393d6f7c25a" style="max-width: 400px;" title="There's a reason we've never asked the Internet to help us name a feature." alt="Leaving a comment to a channel post"> + <source src="/file/464001202/3/kwfo_6Uhx1Q.2894046.mp4/cec85750c3c9253f99" type="video/mp4"> + </video> +</div> + +<p>If you are not a member of the channel's discussion group, you will be notified about replies to your comments via a new chat called <strong>Replies</strong>.</p> +<blockquote> +<p>For a limited time only, you can test this feature in <a href="https://t.me/durov">this channel</a>.</p> +</blockquote> +<p>If you'd like to enable discussions in your own channel, head to <em>Channel Settings > Discussion</em>.</p> +<h3><a class="anchor" name="amazing-android-additions" href="#amazing-android-additions"><i class="anchor-icon"></i></a>Amazing Android Additions</h3> +<p>Our Android wizards didn't forget to pack some new smooth animations. To get a taste, try expanding or hiding your <strong>keyboard</strong> – or switching between your <strong>day and night themes</strong> from the left menu. You will also see <strong>animated popups</strong> when deleting messages, changing notifications, saving media, etc.</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/464001157/1/OO3cN_c14qA.64628/858689debd6dbc887b" style="max-width: 400px;" title="I could switch those themes all day." alt="An overview of new animations and tweaks on Android"> + <source src="/file/464001445/3/45Pf_Ww4bto.4328676.mp4/9306a95ec6e6b9da25" type="video/mp4"> + </video> +</div> + +<p>In case you're more into practical things, press and hold on any profile picture in a group chat to <strong>take a closer look</strong>. And if you're using <a href="https://telegram.org/blog/autoplay#multiple-account-support">multiple accounts</a> in one app, you can now <strong>preview the chat lists</strong> of your other accounts using the same gesture in the account switcher.</p> +<h3><a class="anchor" name="more-animated-emoji" href="#more-animated-emoji"><i class="anchor-icon"></i></a>More Animated Emoji</h3> +<p>We carry on with our quest to animate every emoji in existence. To get one of these <img class="emoji" src="//telegram.org/img/emoji/40/F09F9187.png" width="20" height="20" alt="👇" /> in a chat, simply send a message with a single emoji.</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/464001537/2/23pgA1hOYTo.49450/49625f3edf99b23b50" style="max-width: 400px;" title="This Halloween, I'm dressing up as the eclipse emoji." alt="New animated emoji"> + <source src="/file/464001926/2/frm9WDlEtT4.1565279.mp4/1c31cfb0ea98988951" type="video/mp4"> + </video> +</div> + + +<div><br></div> + +<p>And that's all for today, see you in the comments.</p> +<div><br></div> + +<p><em>September 30, 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%2Ffilters-anonymous-admins-comments&text=Introducing%20Search%20Filters%2C%20Anonymous%20Group%20Admins%2C%20Channel%20Comments%20and%20More" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing Search Filters, Anonymous Group Admins, Channel Comments and More" data-url="https://telegram.org/blog/filters-anonymous-admins-comments"><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 Search Filters, Anonymous Group Admins, Channel Comments and More" data-url="https://telegram.org/blog/filters-anonymous-admins-comments" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/group-video-calls.html b/data/telegram.org/blog/group-video-calls.html new file mode 100644 index 0000000000..a9b82fc3e0 --- /dev/null +++ b/data/telegram.org/blog/group-video-calls.html @@ -0,0 +1,264 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Group Video Calls</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Group Video Calls"> + <meta property="og:image" content="https://telegram.org/file/464001231/2/Q0OFpRBNruI.71986/42d2a05bd0d1bd091b"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Today'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 level, ready for online classes, business meetings and family gatherings."> + <meta property="article:published_time" content="2021-06-25T12:26:11+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001231/2/Q0OFpRBNruI.71986/42d2a05bd0d1bd091b" /> + <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/group-video-calls" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Group Video Calls</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/464001188/4/2JfUPfoRTLU.27143/1bdc59ab4940024591"><img src="/file/464001188/5/PPQpkL8MlKw.55350.png/033d80a7333c5b2f32" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001079/1/q3PHAtQby_g.210247/fb5cc08e9e20311676" target="_blank"><img src="/file/464001231/2/Q0OFpRBNruI.71986/42d2a05bd0d1bd091b" srcset="/file/464001079/1/q3PHAtQby_g.210247/fb5cc08e9e20311676, 1200w" title="This picture may or may not show a weekly developer meeting at Telegram. No stuffed animals were harmed in the making of this update." alt="Introducing Group Video Calls"/></a> +</div> + +<p>Today's update lets you <strong>turn on your camera</strong> or <strong>share your screen</strong> during <a href="https://telegram.org/blog/voice-chats">Voice Chats</a> in groups – on all devices, including <strong>tablets</strong> and <strong>desktops</strong>. This brings voice chats to a whole new level, ready for online classes, business meetings and family gatherings.</p> +<p>We're also introducing <strong>animated backgrounds</strong>, stylish <strong>message animations</strong> and more – enough to fill a <a href="https://telegram.org/blog/animated-backgrounds">second blog post</a>.</p> +<h3><a class="anchor" name="group-video-calls" href="#group-video-calls"><i class="anchor-icon"></i></a>Group video calls</h3> +<p>Voice chats in any <strong>group</strong> can now seamlessly turn into <strong>group video calls</strong> – just tap the camera icon to <strong>switch your video on</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/464001803/3/Mq_pBDKE_-Y.69444/8a1ff5d6bb79fe2688" style="max-width: 400px;" title="We're going to need a new name for Voice Chats..." alt="Group Video Calls"> + <source src="/file/464001291/2/0nPTXdlAQfg.4769697.mp4/da04aee4e78f8c10e0" type="video/mp4"> + </video> +</div> + +<p>Tap on any video to make it <strong>fullscreen</strong>. If you <strong>pin</strong> a video, it will stay focused as new users join the call and turn on their cameras. </p> +<blockquote> +<p><em>To start a voice chat, check the ⋮ menu in the profile of any group where you are an admin (on iOS, you will find a 'Voice Chat' button right in the group profile).</em></p> +</blockquote> +<p>While <strong>audio-only</strong> participants are <a href="https://telegram.org/blog/voice-chats-on-steroids#limitless-voice-chats"><strong>unlimited</strong></a>, video is currently available for the <strong>first 30 people</strong> who join the voice chat. This limit will <strong>increase soon</strong> as voice chats take on streaming games, live events and more.</p> +<h3><a class="anchor" name="screen-sharing" href="#screen-sharing"><i class="anchor-icon"></i></a>Screen sharing</h3> +<p>In addition to your camera feed, you can also <strong>share your screen</strong> – or both at the same time.</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/464001877/3/b3ztiwN2cQo.119593/e1d4814ad4e457b9b9" style="max-width: 400px;" title="Can also be used to create an infinite series of screens inside of screens inside of screens. DiCaprio's spinning top not included." alt="Screen sharing in group video calls"> + <source src="/file/464001986/2/sx1ReRQE2QA.4790591.mp4/a4a3e41e4971ae7c46" type="video/mp4"> + </video> +</div> + +<blockquote> +<p><em>To share your screen, tap ⋮ or ⋯ in any app and select it from the menu.</em></p> +</blockquote> +<h3><a class="anchor" name="noise-suppression-options" href="#noise-suppression-options"><i class="anchor-icon"></i></a>Noise suppression options</h3> +<p>We've improved <strong>noise suppression</strong> in voice chats to keep everyone's audio clear and crisp, even when you're eating something crispy. We've also added a <strong>toggle</strong> to turn noise suppression off in settings – for those times when munching has meaning.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001890/3/tNqP1WsGcqU.135483/c7ba468a88e8f76825" target="_blank"><img src="/file/464001890/3/tNqP1WsGcqU.135483/c7ba468a88e8f76825" title="Take that, drilling neighbors!" alt="Noise suppression settings" srcset="/file/464001890/3/tNqP1WsGcqU.135483/c7ba468a88e8f76825 , 2x" /></a> +</div> + + +<h3><a class="anchor" name="tablet-and-desktop-support" href="#tablet-and-desktop-support"><i class="anchor-icon"></i></a>Tablet and desktop support</h3> +<p>Tablets and computers have more screen space and offer more display options – tap to open the <strong>side panel</strong> and see a <strong>split-screen view</strong> of the video grid and list of participants, optimized for both portrait and landscape orientation.</p> +<div class="blog_video_player_wrap" style="max-width: 600px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001743/1/R9gqQHToYas.48668/4ec192c5b9761174db" style="max-width: 600px;" title="Note: this update is not supported on clay tablets." alt="Group Video Call as seen from an iPad"> + <source src="/file/464001349/4/WEyQXsSoyy4.4699803.mp4/57d5163f32d8d4ef63" type="video/mp4"> + </video> +</div> + +<p>Voice chats on desktop open in a <strong>separate window</strong>, so you can type and talk without minimizing anything. Desktop apps also have <strong>selective screensharing</strong> so you can broadcast an <strong>individual program</strong> instead of your whole screen.</p> +<div class="blog_video_player_wrap" style="max-width: 600px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001650/3/kjBjr3Rchk4.40757/61beb9b777bcb19e50" style="max-width: 600px;" title="We use selective screensharing to develop new strains of Telegram." alt="Group Video Calls on Telegram Desktop"> + <source src="/file/464001491/3/e0QB15KL8g0.9029199.mp4/b6adb4cf2b3a6b797d" type="video/mp4"> + </video> +</div> + +<p>When you're using a desktop app, anyone who starts sharing their screen will be <strong>pinned automatically</strong>. This is especially useful when small teams meet to coordinate their work.</p> +<h3><a class="anchor" name="and-more" href="#and-more"><i class="anchor-icon"></i></a>And more?</h3> +<p>That's it for today… No, wait. In fact, we're having <strong>two updates</strong> instead of one:</p> +<blockquote> +<p><a href="https://telegram.org/blog/animated-backgrounds">Read on to learn about Animated Backgrounds and more.</a></p> +</blockquote> +<div><br></div> + +<p><em>June 25, 2021<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%2Fgroup-video-calls&text=Introducing%20group%20video%20calls%2C%20animated%20backgrounds%2C%20message%20sending%20animations%2C%20and%20more." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing group video calls, animated backgrounds, message sending animations, and more." data-url="https://telegram.org/blog/group-video-calls"><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 group video calls, animated backgrounds, message sending animations, and more." data-url="https://telegram.org/blog/group-video-calls" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/inline-bots.html b/data/telegram.org/blog/inline-bots.html new file mode 100644 index 0000000000..d205fd3371 --- /dev/null +++ b/data/telegram.org/blog/inline-bots.html @@ -0,0 +1,234 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Introducing Inline Bots</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Introducing Inline Bots"> + <meta property="og:image" content="https://telegram.org/file/811140008/2/zeaA10h0JEo/2cfd8c9eeb11328641"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Inline bots: A new way to interact with bots and send bot-generated content to any chat, group or channel."> + <meta property="article:published_time" content="2016-01-04T13:07:40+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140008/2/zeaA10h0JEo/2cfd8c9eeb11328641" /> + <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/inline-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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Introducing Inline Bots</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140008/2/zeaA10h0JEo/2cfd8c9eeb11328641" class="blog_side_image"/> +</div> + +<p><a href="https://core.telegram.org/bots">Bots</a> became an integral part of Telegram for many users, but communication with them wasn't always easy. You had to send them messages in separate chats or add them to your groups. Today we are introducing a quicker way to contact bots.</p> +<p>With the new <a href="https://core.telegram.org/bots/inline">inline mode</a>, bots become omnipresent and can be used as a tool in <strong>any</strong> of your chats, groups or channels – it doesn't matter, whether the bot is a member or not. Inline bots can help you with dozens of different tasks, like quickly sending relevant GIFs, pictures from the Web, YouTube videos, Wikipedia articles, etc.</p> +<div class="smartphone_video_player_wrap"> + <div class="smartphone_video_player_iphone"> + <video class="smartphone_video_player" onclick="videoTogglePlay(this)" poster="" autoplay loop controls muted> + <source src="/resources/video/BotsAndGifs.mp4" type="video/mp4"> + </video> + </div> +</div> + +<h4><a class="anchor" name="how-does-it-work" href="#how-does-it-work"><i class="anchor-icon"></i></a>How does it work?</h4> +<p>We've created several sample bots for you to try out: <a href="https://telegram.me/gif">@gif</a>, <a href="https://telegram.me/vid">@vid</a>, <a href="https://telegram.me/pic">@pic</a>, <a href="https://telegram.me/bing">@bing</a>, <a href="https://telegram.me/wiki">@wiki</a>, <a href="https://telegram.me/imdb">@imdb</a> and <a href="https://telegram.me/bold">@bold</a>. To see them in action, simply type one of their <em>@usernames</em> in the message field in any chat, then type some keywords. The bot will offer you relevant content.</p> +<center><div> + <a href="/file/811140636/1/hzUbyxse42w/4cd52d0464b44e1e5b" target="_blank"><img src="/file/811140636/1/hzUbyxse42w/4cd52d0464b44e1e5b" title="Inline results from the @gif bot" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140427/4/MCOfIPWd9lo/50b18072b32a64633a" target="_blank"><img src="/file/811140427/4/MCOfIPWd9lo/50b18072b32a64633a" title="Inline results from the @wiki bot" style="width: 195px; padding: 10px 5px" /></a><br> +</div></center> + + +<p>Tap on an item to instantly send it to the chat. This way you can share stuff from bots without any hassle. Inline bots don't see any messages in your chats – they only receive what you type after their username in the input field.</p> +<center><div> + <a href="/file/811140439/1/rsC4M7x-nqQ/17bdea5ff07ee81a00" target="_blank"><img src="/file/811140439/1/rsC4M7x-nqQ/17bdea5ff07ee81a00" title="GIF shared via the @gif bot" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140886/2/5lYVhE09rBg/2829daf10914fe50d3" target="_blank"><img src="/file/811140886/2/5lYVhE09rBg/2829daf10914fe50d3" title="Inline bots in the suggestions panel" style="width: 195px; padding: 10px 5px" /></a><br> +</div></center> + +<p>Tap on <em>‘via @username’</em> to send a new request to the bot. Recently used inline bots will also show up in the suggestion box when you type <code>@</code> in the input field in any chat.</p> +<h4><a class="anchor" name="a-new-dimension-for-bots" href="#a-new-dimension-for-bots"><i class="anchor-icon"></i></a>A new dimension for bots</h4> +<p>Like pretty much everything else at Telegram, inline bots are part of an open platform, available for free to every developer in the world starting today. Hundreds of new inline bots are sure to arrive once developers start supporting the new mode.</p> +<p>If you are a developer, take a look at our <a href="https://core.telegram.org/bots/inline">Introduction to Inline Bots</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> +<div><br></div> + +<p><em>The Telegram Team,<br>January 4, 2016</em></p> +</div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Finline-bots&text=Inline%20bots%3A%20A%20new%20way%20to%20interact%20with%20bots%20and%20send%20bot-generated%20content%20to%20any%20chat%2C%20group%20or%20channel." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Inline bots: A new way to interact with bots and send bot-generated content to any chat, group or channel." data-url="https://telegram.org/blog/inline-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="Inline bots: A new way to interact with bots and send bot-generated content to any chat, group or channel." data-url="https://telegram.org/blog/inline-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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/instant-camera.html b/data/telegram.org/blog/instant-camera.html new file mode 100644 index 0000000000..eeab87a2c0 --- /dev/null +++ b/data/telegram.org/blog/instant-camera.html @@ -0,0 +1,229 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Instant Camera and More 3D Touch</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Instant Camera and More 3D Touch"> + <meta property="og:image" content="https://telegram.org/file/811140887/1/dlj9ILjHn8A/b7b2d790c1d3890ca9"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Instant camera, more 3D Touch options and other features in the new Telegram for iOS."> + <meta property="article:published_time" content="2016-04-28T16:56:05+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140887/1/dlj9ILjHn8A/b7b2d790c1d3890ca9" /> + <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-camera" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Instant Camera and More 3D Touch</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140887/1/dlj9ILjHn8A/b7b2d790c1d3890ca9" class="blog_side_image"/> +</div> + +<p>When taking pictures, even a split second can make the difference between capturing the perfect moment or missing it entirely. Starting today, our iOS users can snap a photo or take a video in no time. To access your camera quickly, simply tap and hold the attachment button, and you're ready to shoot:</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/811140385/2/6yXSBBMaMrI/0ff64483c012a21ccc" autoplay loop controls muted> + <source src="/file/811140172/1/xDICGw6vBDs.493507.mp4/43bb2c82875177fe75" type="video/mp4"> + </video> + </div> +</div> + +<p>This quick camera interface defaults to selfie mode with flash on, but you can change this and it will remember your choice.</p> +<p>With this update it also becomes easier to record videos using the standard camera interface. Press and hold the big button and the recording starts. By popular demand, videos you record in-app will now be saved to your device in Full HD quality.</p> +<h3><a class="anchor" name="more-3d-touch-and-more" href="#more-3d-touch-and-more"><i class="anchor-icon"></i></a>More 3D Touch and More</h3> +<p>Starting today you can use 3D Touch to preview photos and videos everywhere, including the attachment menus, message history, and the Shared Media section. The same goes for profile pictures: That's right, you no longer need to go to chat info to check them out in full size. </p> +<div class="blog_image_wrap"> + <a href="/file/811140852/2/u_2u_JN1i-w/00ee392d4ee43c44f4" target="_blank"><img src="/file/811140852/2/u_2u_JN1i-w/00ee392d4ee43c44f4" title="Profile preview"/></a> </div> + +<p>We've also added Uber and Citymapper as options for opening a location:</p> +<div class="blog_image_wrap"> + <a href="/file/811140814/1/al6oB4b4XjI/68f9dbbed6537a3fe1" target="_blank"><img src="/file/811140814/1/al6oB4b4XjI/68f9dbbed6537a3fe1" title="Yeah... Good luck getting an Uber to Faa'a airport"/></a> </div> + +<p>And, speaking of opening stuff, we've fixed the issue with files – you can now open any file you get in other apps again. This is extremely useful, given that you can share and store an unlimited number of <a href="/blog/shared-files">documents and files</a> of <strong>any type</strong> on Telegram.</p> +<div><br></div> + +<p>That's it for today, stay tuned for more updates coming soon! The cool features we are adding in the <strong>next</strong> release will be available for all platforms.</p> +<div><br></div> + + +<p><em>April 28, 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-camera&text=Instant%20camera%2C%20more%203D%20Touch%20options%20and%20other%20features%20in%20the%20new%20Telegram%20for%20iOS." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Instant camera, more 3D Touch options and other features in the new Telegram for iOS." data-url="https://telegram.org/blog/instant-camera"><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 camera, more 3D Touch options and other features in the new Telegram for iOS." data-url="https://telegram.org/blog/instant-camera" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/invite-links.html b/data/telegram.org/blog/invite-links.html new file mode 100644 index 0000000000..3c98d9290e --- /dev/null +++ b/data/telegram.org/blog/invite-links.html @@ -0,0 +1,217 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Migrating Existing Group Chats to Telegram</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Migrating Existing Group Chats to Telegram"> + <meta property="og:image" content="https://telegram.org/file/811140591/1/q7zZHjgES6s/9d121a89ffb0015837"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Switching your existing group chats to Telegram with a link."> + <meta property="article:published_time" content="2015-04-30T17:35:57+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140591/1/q7zZHjgES6s/9d121a89ffb0015837" /> + <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/invite-links" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Migrating Existing Group Chats to Telegram</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140591/1/q7zZHjgES6s/9d121a89ffb0015837" class="blog_side_image"/> +</div> + +<p>In addition to <a href="https://telegram.org/blog/captions-places">numerous great features</a> in today's update, we’re happy to introduce a new way to move your existing group chats to Telegram — <strong>invite links</strong> for admins. </p> +<p>Each passing month brings more reasons to switch to Telegram from older services. Persistent history, <a href="https://telegram.org/blog#instant-full-text-search">instant full-text search</a>, <a href="https://core.telegram.org/api">open platform</a>, <a href="https://telegram.org/blog/files-on-steroids">unlimited file sharing</a>, <a href="https://telegram.org/blog/link-preview">rich link previews</a>, <a href="https://telegram.org/blog/desktop-compact">native desktop apps</a>, <a href="https://telegram.org/blog/replies-mentions-hashtags">replies, mentions, hashtags</a> and much more.</p> +<p>And yet, if you‘ve ever tried moving your existing group chats from other apps to Telegram, you know it was not easy. There was simply too much work to do and too much friction — you had to collect everyone’s usernames or phone numbers and add them to your group one by one. We're glad to announce that these days are over. </p> +<h3><a class="anchor" name="invite-links" href="#invite-links"><i class="anchor-icon"></i></a>Invite Links</h3> +<p>With invite links for groups, all you have to do is send a link to your existing group chat in any messaging service that your friends might still be using. As soon as they get Telegram, they can instantly join your Telegram group just by following that link.</p> +<p>Where do you get the link? Once you've created a group on Telegram, head to the "Add participant…” section and tap “Invite to Group via Link”. Easy!</p> +<center><div> + <a href="/file/811140914/2/MfsEG6BRRyI/8e51dbe1da5404b005" target="_blank"><img src="/file/811140914/2/MfsEG6BRRyI/8e51dbe1da5404b005" title="Here's where you find the option" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140467/2/EZ7haFQCcEU/92f5babc93d0616535" target="_blank"><img src="/file/811140467/2/EZ7haFQCcEU/92f5babc93d0616535" title="Use this link to move your existing groups to Telegram" style="width: 195px; padding: 10px 5px" /></a> +<br> +</div></center> + +<div><br><br></div> + +<p><em>The Telegram Team,<br>April 30, 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%2Finvite-links&text=Switching%20your%20existing%20group%20chats%20to%20Telegram%20with%20a%20link." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Switching your existing group chats to Telegram with a link." data-url="https://telegram.org/blog/invite-links"><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="Switching your existing group chats to Telegram with a link." data-url="https://telegram.org/blog/invite-links" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/live-streams-forwarding-next-channel.html b/data/telegram.org/blog/live-streams-forwarding-next-channel.html new file mode 100644 index 0000000000..d9f50e579b --- /dev/null +++ b/data/telegram.org/blog/live-streams-forwarding-next-channel.html @@ -0,0 +1,285 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More"> + <meta property="og:image" content="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Telegram 8.0 brings live streams with unlimited viewers to groups and channels, options to remove captions from media and hide sender names when forwarding, an easy way to jump to the next unread channel without going back to your chat list, an improved sticker panel, new animated emoji and more."> + <meta property="article:published_time" content="2021-08-31T19:08:29+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" /> + <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/live-streams-forwarding-next-channel" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More</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/464001599/2/yw6qrL_dW4w.34313/940752768cf68e2014"><img src="/file/464001599/3/kmvcgrDN6TM.43642.png/5cc9ca0b7a8acb3599" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001903/1/SL0zEMFHRvE.290665/aed1cb7af8c96e961b" target="_blank"><img src="/file/464001784/4/IlXX31YWz5U.92729/eabf233f3635354560" srcset="/file/464001903/1/SL0zEMFHRvE.290665/aed1cb7af8c96e961b, 1200w" title="Don't worry about the people in the back, they're watching it on their phones. +" alt="Live Streams, Flexible Forwarding, Jump to Next Channel, Trending Stickers and More"/></a> +</div> + +<p>Telegram was launched just over <strong>8 years ago</strong> and today we are continuing our tradition of monthly updates with version <strong>8.0</strong>. This update brings <strong>live streams</strong> with unlimited viewers to <strong>groups and channels</strong>, options to remove captions from media and hide sender names when <strong>forwarding</strong>, an easy way to <strong>jump to the next unread channel</strong> without going back to your chat list, an <strong>improved sticker panel</strong>, new animated emoji and more.</p> +<h3><a class="anchor" name="unlimited-live-streams" href="#unlimited-live-streams"><i class="anchor-icon"></i></a>Unlimited Live Streams</h3> +<p>Our <a href="https://telegram.org/blog/video-1000">previous update</a> made <a href="https://telegram.org/blog/group-video-calls">Group Video Calls</a> a powerful tool for live broadcasts — and now their audience is <strong>unlimited</strong> (except by the popularity of your channel, or the population of Earth, whichever is more relevant in your case).</p> +<p>Start a <strong>Live Stream</strong> in a channel or a <strong>Video Chat</strong> in a group – both now support <strong>unlimited viewers</strong>. The power to run your own TV station is here, right in your pocket.</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/464001382/2/DGRb5SQ4czs.122609/fc01c1bdc09cb55623" style="max-width: 400px;" title="Invite aliens from outer space to Telegram to get over 8 billion participants in your live stream." alt="Live Stream in a channel with unlimited viewers"> + <source src="/file/464001045/3/_qQ1MAPZs1M.5133581.mp4/f7adcb2ec0ecbed20f" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>To begin, tap 'Video Chat' (in Groups) or 'Live Stream' (in Channels) on the profile page of a community where you are an admin.</p> +</blockquote> +<p>The viewers of your Live Stream can also <a href="https://telegram.org/blog/voice-chats-on-steroids#raise-hand">raise their hand</a> and join your broadcast if you allow them to speak.</p> +<h3><a class="anchor" name="flexible-forwarding" href="#flexible-forwarding"><i class="anchor-icon"></i></a>Flexible Forwarding</h3> +<p>Forwarding has become a much more relaxing experience. Tap the <em>'Forward Message'</em> label above the message bar to open a <strong>preview window</strong>, showing how the messages will look when they are sent – along with several <strong>customization options</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/464001086/4/A_zeKMpcDKU.153210/d7e10057fc07fa2748" style="max-width: 400px;" title="Beware! When you stare long into the puppy, the puppy stares also into you." alt="Flexible forwarding options"> + <source src="/file/464001257/4/z0SWQjUmM3Q.4967346.mp4/956430b770bbc0bf41" type="video/mp4"> + </video> +</div> + +<p>You can choose to hide the <strong>sender's name</strong> or hide <strong>captions</strong> on media messages. You can also <strong>deselect messages</strong> you don't want to send or <strong>change the recipient</strong> if you tapped the wrong chat.</p> +<h3><a class="anchor" name="jump-to-next-channel" href="#jump-to-next-channel"><i class="anchor-icon"></i></a>Jump to Next Channel</h3> +<p>There are millions of <a href="https://telegram.org/tour/channels">one-to-many channels</a> on Telegram that users follow for news, events, and content.</p> +<p>To keep up with the news easily, you can now scroll through the channels you follow without going back to your chat list. When you reach the bottom of a channel, pull up to go to the <strong>next unread channel</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/464001221/4/rCtRSrxZeTE.193642/7cc93ac7b2d60d11cb" style="max-width: 400px;" title="Catch the morning news in Bali and a meme in Australia without a layover in your chat list." alt="Pull up to go to the next unread channel"> + <source src="/file/464001111/5/G4Cka-PEa_M.3415525.mp4/86e38d267890c5fc79" type="video/mp4"> + </video> +</div> + +<p>If you have organized your chat list with <a href="https://telegram.org/blog/folders">Folders</a> or <a href="https://telegram.org/blog/folders#archived-chats">Archived Chats</a>, the app will follow the structure you have set up: channels in the current folder, then within each folder, then those left in All Chats and the Archive. Simply open a channel from your Studies folder to read them all without getting distracted by Memes — and vice versa.</p> +<h3><a class="anchor" name="trending-stickers" href="#trending-stickers"><i class="anchor-icon"></i></a>Trending Stickers</h3> +<p>Thanks to an <a href="https://telegram.org/blog/stickers-revolution">open platform</a> and thousands of free, high-quality stickers in the <a href="https://telegram.org/blog/400-million#20-000-stickers">sticker directory</a>, there's a perfect sticker for every situation. This update makes it easier to find the one.</p> +<p><strong>Trending Stickers</strong> are now shown above ‘Recently Used’ in your sticker panel. Tap 'Add' to save a pack for the future — the trending sticker section is one of the few things in this world that gets updated more often than the Telegram apps.</p> +<p>When you scroll through your packs at the top of the panel, the thumbnails <strong>expand</strong> and show the <strong>names</strong> of your sticker packs.</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/464001833/5/dQgnfl_9PYc.191885/dd27dc4b936f9d6c63" style="max-width: 400px;" title="We were somewhere around Barstow on the edge of the desert when the stickers began to take hold. " alt="Improved sticker panel"> + <source src="/file/464001638/2/x9ECs2u1R3A.4447006.mp4/3ed15b74b8556545e0" type="video/mp4"> + </video> +</div> + +<p>Telegram for Android also got <strong>larger previews</strong> for sticker suggestions. To get suggestions, enter <strong>one emoji</strong> in the input field. To see more suggested stickers, pull upward on the suggestions panel.</p> +<blockquote> +<p>If you have a particular thing in mind and don't have it among your sets, type a word in the search field to find matches from the sticker directory. Try 'yellow', 'animal', 'dog', etc.</p> +</blockquote> +<h3><a class="anchor" name="choosing-a-sticker" href="#choosing-a-sticker"><i class="anchor-icon"></i></a>Choosing a Sticker</h3> +<p>Similar to <em>'typing…'</em> or <em>'recording a voice message'</em>, the apps now show a <strong>'choosing a sticker'</strong> status at the top of the chat — so you know that your chat partner is still there, just looking for the perfect animated response.</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/464001393/2/WbrkNQs3A1o.140377/25f904f2abda7bbc3e" style="max-width: 400px;" title="Yes, we even have the perfect sticker for 'I'm choosing a sticker'." alt="New 'choosing a sticker' status"> + <source src="/file/464001924/2/nqesB1F-7Cc.1426913.mp4/4244c8d3f50aa6d502" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="unread-comment-counters" href="#unread-comment-counters"><i class="anchor-icon"></i></a>Unread Comment Counters</h3> +<p>Many channels have comments enabled for their posts so that subscribers can interact and share their thoughts. We've recently had a great chance to test this with thousands of <a href="https://t.me/durov/164">birthday wishes</a> — thank you all for your support.</p> +<p>Just like with chats, when you open a <a href="https://telegram.org/blog/filters-anonymous-admins-comments">comment thread</a> that has new messages, a <strong>counter</strong> will now appear showing the number of <strong>unread comments</strong>.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001469/2/vbkz0hIlpD4.68844/b6aedbcfc85b34dc22" target="_blank"><img src="/file/464001378/1/1YN05N-gbL0.31751/1399d266af331ab568" title="From 'f1rst!' to last. +" alt="Unread comments in a thread you just opened" srcset="/file/464001469/2/vbkz0hIlpD4.68844/b6aedbcfc85b34dc22 , 2x" /></a> +</div> + +<h3><a class="anchor" name="new-animated-emoji" href="#new-animated-emoji"><i class="anchor-icon"></i></a>New Animated Emoji</h3> +<p>This month we asked ourselves: “Should we stop animating more and more emoji with each update?” After a heated discussion we arrived at this answer: “Probably not.” Send a message with a single emoji to get one of these new masterpieces in a chat:</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/464001986/3/NRHgm5dbAF4.101751/0ccf05a08dd6a9567f" style="max-width: 400px;" title="When you have so many animated plants, it pays to have an animated grandma to take care of them." alt="New animated emoji"> + <source src="/file/464001852/1/a0shVTR7-xU.3964197.mp4/d4b9130b1463c584b3" type="video/mp4"> + </video> +</div> + +<p>That's it for today — and we already have some cool stuff in development for the next update. See you there!</p> +<div><br></div> + +<p><em>August 31, 2021<br>The Telegram Team</em></p> +<!--<div><br></div> + +**P.S.** This update is already available for all **iOS** users and for everyone who downloaded Telegram for **Android** directly from [telegram.org/android](https://telegram.org/android). The Google Play version is being reviewed by the store and will become available later.--></div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Flive-streams-forwarding-next-channel&text=Introducing%20Live%20Streams%2C%20flexible%20forwarding%2C%20jump%20to%20next%20channel%2C%20trending%20stickers%20and%20more%20in%20Telegram%208.0" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing Live Streams, flexible forwarding, jump to next channel, trending stickers and more in Telegram 8.0" data-url="https://telegram.org/blog/live-streams-forwarding-next-channel"><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 Live Streams, flexible forwarding, jump to next channel, trending stickers and more in Telegram 8.0" data-url="https://telegram.org/blog/live-streams-forwarding-next-channel" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/masks.html b/data/telegram.org/blog/masks.html new file mode 100644 index 0000000000..1e5b415f63 --- /dev/null +++ b/data/telegram.org/blog/masks.html @@ -0,0 +1,248 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Photo Editor 2.0, Masks and Homemade GIFs</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Photo Editor 2.0, Masks and Homemade GIFs"> + <meta property="og:image" content="https://telegram.org/file/811140699/2/LKSW2kE6kxg.25795.gif/5dd6ddc5df8620703a"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Pushing Telegram's powerful photo editor to the next level with the fun stuff: you can now add drawings, masks, stickers and text right onto your pictures."> + <meta property="article:published_time" content="2016-09-23T16:11:04+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140699/2/LKSW2kE6kxg.25795.gif/5dd6ddc5df8620703a" /> + <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/masks" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Photo Editor 2.0, Masks and Homemade GIFs</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140699/2/LKSW2kE6kxg.25795.gif/5dd6ddc5df8620703a" class="blog_side_image"/> +</div> + +<p>Last year we introduced the most powerful <a href="https://telegram.org/blog/photo-editor-and-passcodes">photo editing tool</a> ever to be implemented in a messaging app. This allowed you to instantly improve photos before sending them on <strong>iOS</strong> and <strong>Android</strong>.</p> +<p>Today we’re pushing the photo editor to the next level with the fun stuff: you can now add drawings, masks, stickers and text right onto your pictures.</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/811140399/1/hmo-GumfO4w.63069/a1a49d96fb888af544" autoplay loop controls muted> + <source src="/file/811140744/1/QpXSn0hpLKI.1001090.mp4/1b1f0c9bb5b91980dc" type="video/mp4"> + </video> + </div> +</div> + +<p>This is easy: just choose a mask, and it will be automatically positioned in the right place. Telegram identifies faces on photos and uses mask meta-data to find the perfect spot.</p> +<p>Our artists created hundreds of beautiful and fun masks as examples, but everything we do here in Telegram is an <strong>open platform</strong>. So as of today, anyone can use the <em>/newmasks</em> command for the <a href="https://telegram.me/stickers">@stickers</a> bot to upload their own masks.</p> +<div class="blog_2images_wrap"> + <div class="blog_image_wrap"> + <a href="/file/811140954/2/ln6P2Rlf6TA.170823/507c394d8300c13314" target="_blank"><img src="/file/811140954/2/ln6P2Rlf6TA.170823/507c394d8300c13314" title="Masks Button (top right)"/></a> + <p>Masks Button (top right)</p> + </div> + <div class="blog_image_wrap"> + <a href="/file/811140979/4/XL63S3XWSPw.165499/5835ca8afdee265ea2" target="_blank"><img src="/file/811140979/4/XL63S3XWSPw.165499/5835ca8afdee265ea2" title="Adding Masks"/></a> + <p>Adding Masks</p> </div> +</div> + +<p>When opening a photo, you will see a list of mask sets that were used on it. This way popular custom masks will quickly become viral.</p> +<h3><a class="anchor" name="gifs-democratized" href="#gifs-democratized"><i class="anchor-icon"></i></a>GIFs Democratized</h3> +<p>Another thing that’s likely to spread virally now are your GIF-animations. Creating your own GIFs has never been easier: simply record a video in Telegram and tap the new “mute” button to share it as a looped autoplayed GIF.</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/811140034/2/CROTOQBdr50.61352/8f7363a15cb7a867b6" autoplay loop controls muted> + <source src="/file/811140377/1/pKwXE6iEEa0.585046.mp4/a2406ed821e92298c1" type="video/mp4"> + </video> + </div> +</div> + +<p>The animation will be saved to your <a href="https://telegram.org/blog/gif-revolution#sending-gifs">GIFs section</a> so that you can quickly react to anything with a set of your own prerecorded GIF-emotions.</p> +<h3><a class="anchor" name="trending-stickers" href="#trending-stickers"><i class="anchor-icon"></i></a>Trending stickers</h3> +<p>The last addition to this entertainment-heavy update is the <strong>trending stickers tab</strong>. Whenever you’re feeling hungry for new stickers you can find the latest additions in the stickers panel in any of your chats. </p> +<div class="blog_image_wrap"> + <a href="/file/811140870/1/hRZ2CoUNu6w.123145/609c7928f20c280570" target="_blank"><img src="/file/811140870/1/hRZ2CoUNu6w.123145/609c7928f20c280570" title="New Trending Panel" /></a> + <p>In-chat Trending Stickers</p> +</div> + +<div><br></div> + +<p>We're back from the summer break, so watch out for more updates coming your way soon.</p> +<div><br></div> + +<p><em>September 23, 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%2Fmasks&text=Add%20stylish%20masks%2C%20text%2C%20and%20drawings%20to%20your%20photos%2C%20create%20your%20own%20GIFs%2C%20and%20more" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Add stylish masks, text, and drawings to your photos, create your own GIFs, and more" data-url="https://telegram.org/blog/masks"><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="Add stylish masks, text, and drawings to your photos, create your own GIFs, and more" data-url="https://telegram.org/blog/masks" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/moar-stickers.html b/data/telegram.org/blog/moar-stickers.html new file mode 100644 index 0000000000..30be8c9d12 --- /dev/null +++ b/data/telegram.org/blog/moar-stickers.html @@ -0,0 +1,343 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>MOAR Stickers!</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="MOAR Stickers!"> + <meta property="og:image" content="https://telegram.org/file/811140077/1/qsFxxWC7kQs/2a14d66f3f6d2a4431"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Memes + Art + History = 15 New #Telegram Stickers"> + <meta property="article:published_time" content="2015-03-11T19:59:50+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140077/1/qsFxxWC7kQs/2a14d66f3f6d2a4431" /> + <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/moar-stickers" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">MOAR Stickers!</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140077/1/qsFxxWC7kQs/2a14d66f3f6d2a4431" class="blog_side_image"/> +</div> + +<p>Two months ago we launched a new kind of <a href="/blog/stickers">stickers</a>, bringing popular memes, art and history together as an enhanced way of expressing emotions. Over the last few days we've added <strong>15</strong> new stickers to the <a href="/blog/stickers-meet-art-and-history">original set</a>.</p> +<p>Start a message with an <strong>emoji</strong> from this list to see emotionally corresponding stickers:</p> +<div> <a href="/file/811140354/1/-NUBye754Pw/2fa1e3148047b624b3" target="_blank"><img src="/file/811140354/1/-NUBye754Pw/2fa1e3148047b624b3" title="Napoleon Bonaparte" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.5"> +<center><a href="http://en.wikipedia.org/wiki/Napoleon">Napoléon Bonaparte</a>: <br/> "In France, only the impossible is admired" <img src="/file/811140515/1/4yoEkJrXWsA/2367d46d7db44738ac" title="emoji" style="width: 27px; margin: 5px 0px 5px 5px" /> +</center> +</div> + +<hr> +<div> <a href="/file/811140525/2/vCDL8Gv_k6U/a39c95e5aa621c46c6" target="_blank"><img src="/file/811140525/2/vCDL8Gv_k6U/a39c95e5aa621c46c6" title="Jimi Hendrix" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 23px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Jimi_Hendrix">Jimi Hendrix</a> accepts the challenge +<img src="/file/811140357/1/JzXpMjrjS8I/933e6762e793c2a6ed" title="emoji" style="width: 27px; margin: 0px 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140444/1/NqWMRLWzg1U/623bd278ff0179ded9" target="_blank"><img src="/file/811140444/1/NqWMRLWzg1U/623bd278ff0179ded9" title="Dante Alighieri" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Dante_Alighieri">Dante's</a> "What the <a href=http://en.wikipedia.org/wiki/Inferno_%28Dante%29>HELL?!</a>" +<img src="/file/811140668/1/YTUn0cWiTlw/98bb23d66a295b28ad" title="emoji" style="width: 27px; margin: 5px 0px 5px 5px" /><img src="/file/811140594/1/RADn1X2bads/a42e4cc5705be4c298" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140235/2/_ZthaAI89Ds/4a2f85c6feac9e1bca" target="_blank"><img src="/file/811140235/2/_ZthaAI89Ds/4a2f85c6feac9e1bca" title="Bob Marley" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>LOL <a href="http://en.wikipedia.org/wiki/Bob_Marley">Marley</a> +<img src="/file/811140597/1/wGHoIRMPxWs/9b8fab0f7aa9d69c13" title="emoji" style="width: 27px; margin: 5px 0px 5px 5px" /><img src="/file/811140001/1/Kc9jOr5G1Bg/c059b2c3e1b2c8be2e" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + + +<hr> +<div> <a href="/file/811140885/1/r4SVbb90Quc/7333932a5fdcf5f057" target="_blank"><img src="/file/811140885/1/r4SVbb90Quc/7333932a5fdcf5f057" title="Sreamin Jay Hawkins" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.5"> +<center><a href="http://en.wikipedia.org/wiki/Screamin%27_Jay_Hawkins">Screamin' Jay Hawkins</a>:<br />"Don't put that <a href="http://en.wikipedia.org/wiki/I_Put_a_Spell_on_You">spell</a> on me!" +<img src="/file/811140985/1/OEBfREGESSM/9a7451d297c31d7778" title="emoji" style="width: 27px; margin: 5px 0px 5px 5px" /><img src="/file/811140250/2/YVHDKFcCU6k/bf602abdea0bf7ffeb" title="emoji" style="width: 27px; margin: 5px" /> +</center> +</div> + +<hr> +<div> <a href="/file/811140508/1/0BiCdZ28uVw/ca64f37939b1bdea11" target="_blank"><img src="/file/811140508/1/0BiCdZ28uVw/ca64f37939b1bdea11" title="Audrey Hepburn" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Audrey_Hepburn">Audrey</a> is on the verge of tears +<img src="/file/811140838/3/zj6D_aQYKy8/3d0324b93c07f096cf" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140689/2/VQ95ysNb35U/4adabae15888ee9b37" target="_blank"><img src="/file/811140689/2/VQ95ysNb35U/4adabae15888ee9b37" title="Malcolm X" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Malcolm_X">Malcolm X</a>: "Mother of..." +<img src="/file/811140108/1/tkVUHhv7gk4/8fb10c8cd418dc2b0e" title="emoji" style="width: 27px; margin: 5px 0px 5px 5px" /><img src="/file/811140251/2/FeIGhGI9Ih4/99bde223005c317fb4" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140251/1/kjMKzKP2S6o/16635fe8e0485bd0b8" target="_blank"><img src="/file/811140251/1/kjMKzKP2S6o/16635fe8e0485bd0b8" title="Virginia Woolf" class="dev_page_image" /></a></div> + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Virginia_Woolf">Virginia Woolf</a>: "Go on..." +<img src="/file/811140273/1/uWDSf0vw3cU/5e190fbe15c29d963c" title="Right" style="width: 27px; margin:0px 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140654/1/xFdm58wPNH4/191814f44f5d36f9a4" target="_blank"><img src="/file/811140654/1/xFdm58wPNH4/191814f44f5d36f9a4" title="Edgar Allan Poe" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Edgar_Allan_Poe">Poe</a> is sceptical +<img src="/file/811140310/1/3lS_apoOkb0/aaecf42bb1a52550cb" title="emoji" style="width: 27px; margin: 5px 0px 5px 5px" /><img src="/file/811140270/1/5vz6qFvkeFY/79683302293dfceb57" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140860/1/_sVhXePrr-I/02a6e44c917d7c7f6f" target="_blank"><img src="/file/811140860/1/_sVhXePrr-I/02a6e44c917d7c7f6f" title="Coco Chanel" class="dev_page_image" /></a></div> + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Coco_Chanel">Coco Chanel</a> is unmoved +<img src="/file/811140515/1/4yoEkJrXWsA/2367d46d7db44738ac" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140519/1/8vLtx2w3n10/2a603572363d422fc0" target="_blank"><img src="/file/811140519/1/8vLtx2w3n10/2a603572363d422fc0" title="Frederick Douglass" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Frederick_Douglass">Frederick Douglass</a> is in a dark mood +<img src="/file/811140307/1/h1lSeXIpDP0/6e64a1265c8d7b9fea" title="emoji" style="width: 27px; margin: 5px 0px 5px 5px" /><img src="/file/811140649/1/qpHi6NaNirg/e2c226e1e23d200d8d" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140066/2/mv4D4qzDys8/d19275c7c681c63367" target="_blank"><img src="/file/811140066/2/mv4D4qzDys8/d19275c7c681c63367" title="Princess Diana" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Diana,_Princess_of_Wales">Princess Diana</a> blushing +<img src="/file/811140513/1/6LGSrLnIPv8/52ef3dea7bd08eab71" title="emoji" style="width: 27px; margin: 0px 5px" /></center> +</div> + + +<hr> +<div> <a href="/file/811140007/2/uHbXgsdVXQY/a75eee858dd829fb89" target="_blank"><img src="/file/811140007/2/uHbXgsdVXQY/a75eee858dd829fb89" title="Julius Caesar" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center><a href="http://en.wikipedia.org/wiki/Julius_Caesar">Julius Caesar</a> approves +<img src="/file/811140287/1/Q_Gb5gEwoqI/55e3b9c9b968a5902b" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140801/1/14Ka_5LSkus/11ef924b87783bd339" target="_blank"><img src="/file/811140801/1/14Ka_5LSkus/11ef924b87783bd339" title="Julius Caesar" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>On second thought... No. +<img src="/file/811140515/1/4yoEkJrXWsA/2367d46d7db44738ac" title="emoji" style="width: 27px; margin: 5px 0px 5px 5px" /><img src="/file/811140004/2/pTIFWSDHB-o/884af2abd55a8484f4" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + +<hr> +<div> <a href="/file/811140617/2/JdFfZi4Ruhk/3444e8ea6e1a88ace4" target="_blank"><img src="/file/811140617/2/JdFfZi4Ruhk/3444e8ea6e1a88ace4" title="Cleopatra" class="dev_page_image" /></a></div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Kisses from <a href="http://en.wikipedia.org/wiki/Cleopatra">Cleopatra</a> +<img src="/file/811140605/1/vFxVB2NQPs4/7171a7fc9dbb935fb8" title="emoji" style="width: 27px; margin: 5px 0px 5px 5px" /><img src="/file/811140055/1/NjSkxWP9KHI/f044a7c609ad5b51d9" title="emoji" style="width: 27px; margin: 5px" /></center> +</div> + +<hr> +<p>Remember that it's easy to send your own stickers in Telegram. Simply send a <strong>.webp</strong> image with a transparency layer as a <strong>file</strong> in your chat, and it will become a sticker.</p> +<div><br></div> + +<p><em>March 11, 2015<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%2Fmoar-stickers&text=Memes%20%2B%20Art%20%2B%20History%20%3D%2015%20New%20%23Telegram%20Stickers" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Memes + Art + History = 15 New #Telegram Stickers" data-url="https://telegram.org/blog/moar-stickers"><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="Memes + Art + History = 15 New #Telegram Stickers" data-url="https://telegram.org/blog/moar-stickers" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/move-history.html b/data/telegram.org/blog/move-history.html new file mode 100644 index 0000000000..e389baa40c --- /dev/null +++ b/data/telegram.org/blog/move-history.html @@ -0,0 +1,284 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Moving Chat History from Other Apps</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Moving Chat History from Other Apps"> + <meta property="og:image" content="https://telegram.org/file/464001185/1/Z6LVvcYB03g.64305/e8ff8c87c4d656cbe1"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Over 100 million new users joined Telegram this January, seeking more privacy and freedom. But what about the messages and memories that remain in older apps? Starting today, everyone can bring their chat history from apps like WhatsApp, Line and KakaoTalk."> + <meta property="article:published_time" content="2021-01-28T14:20:02+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001185/1/Z6LVvcYB03g.64305/e8ff8c87c4d656cbe1" /> + <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/move-history" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Moving Chat History from Other Apps</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/464001968/4/B0pJGUW7WRc.19251/6809a2d224a963b12a"><img src="/file/464001968/5/FtNXwd8pHSs.39488.png/36a1167700b09e293e" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001367/2/CjzwCFB1BDY.178283/4c049986f45118c1a6" target="_blank"><img src="/file/464001185/1/Z6LVvcYB03g.64305/e8ff8c87c4d656cbe1" srcset="/file/464001367/2/CjzwCFB1BDY.178283/4c049986f45118c1a6, 1200w" title="Past the green and into the blue" alt="Moving Chat History from Other Apps and More Privacy"/></a> +</div> + +<p>Over <strong>100 million</strong> new users joined Telegram this January, seeking more privacy and freedom. But what about the messages and memories that remain in older apps?</p> +<p>Starting today, everyone can bring their chat history – including videos and documents – to Telegram from apps like <strong>WhatsApp</strong>, <strong>Line</strong> and <strong>KakaoTalk</strong>. This works both for individual chats and groups:</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/464001798/1/_RJBsLrlE4o.70969/f9245c6acc43601ae9" style="max-width: 400px;" title="Leave the gun, take the cannoli" alt="Moving chats from WhatsApp on iOS"> + <source src="/file/464001223/2/FK5t0AZQ0uk.3264328.mp4/7890535f20eb7b1d54" type="video/mp4"> + </video> +</div> + +<p>To move a chat from <strong>WhatsApp on iOS</strong>, open the <em>Contact Info</em> or <em>Group Info</em> page in WhatsApp, tap <em>Export Chat</em>, then choose <strong>Telegram</strong> in the Share menu.</p> +<p>On <strong>Android</strong>, open a WhatsApp chat, tap ⋮ <em>> More > Export Chat</em>, then choose <strong>Telegram</strong> in the Share menu:</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/464001695/2/BI7h3HpWfL4.191823/35831ba42ee5d1a28f" style="max-width: 400px;" title="Just make sure not to mix up the memes, the spicy ones go into the group with friends, not to grandpa." alt="Moving chats from WhatsApp on Android"> + <source src="/file/464001972/1/navV9DW49ig.4692697.mp4/18a3499ab44f494711" type="video/mp4"> + </video> +</div> + +<blockquote> +<p><em>WhatsApp for iOS</em> also lets you export chats directly from the chat list. <strong>Swipe left</strong> on a chat, then choose '…' > <em>Export Chat</em>.</p> +</blockquote> +<p>Messages will be imported into the <strong>current day</strong> but will also include their <strong>original timestamps</strong>. All members of the chat on Telegram will see the messages.</p> +<h3><a class="anchor" name="move-chats-and-save-space" href="#move-chats-and-save-space"><i class="anchor-icon"></i></a>Move Chats and Save Space</h3> +<p>The best part is that the messages and media you move don’t need to occupy extra space. Older apps make you store all data on your device – but Telegram can take up virtually <strong>no space</strong> while letting you access all your messages, photos and videos anytime you need them.</p> +<blockquote> +<p>You can <a href="https://t.me/TelegramTips/243">free up space</a> and control your cache size in <em>Settings > Data and Storage > Storage Usage</em>.</p> +</blockquote> +<h3><a class="anchor" name="control-your-digital-footprint" href="#control-your-digital-footprint"><i class="anchor-icon"></i></a>Control Your Digital Footprint</h3> +<p>Your data is your business, which is why Telegram users can not only <a href="https://telegram.org/blog/export-and-more">export their chats</a>, but also <a href="https://telegram.org/blog/unsend-privacy-emoji#unsend-anything">delete messages</a> they <em>send</em> and <em>receive</em> for both sides – <strong>without a trace</strong>.</p> +<p>With this update, you get even more control: <strong>secret chats</strong>, <strong>groups</strong> you created and <strong>call history</strong> can now also be deleted for all sides at any time. </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/464001113/3/nlApiG2p_jg.4064886.mp4/89d4ffb3ad7a44d8d0" style="max-width: 400px;" title="Now you see me, now you don't" alt="Remove groups, secret chats and call history for both sides"> + <source src="/file/464001659/3/N2dQdClOC_o.4064886.mp4/f2b10fa3394f0556ba" type="video/mp4"> + </video> +</div> + +<p>Telegram servers don’t store information about deleted chats and call logs, so the data will disappear completely, forever.</p> +<h3><a class="anchor" name="improved-voice-chats" href="#improved-voice-chats"><i class="anchor-icon"></i></a>Improved Voice Chats</h3> +<p>You can now see which of your groups have active <a href="https://telegram.org/blog/voice-chats">Voice Chats</a> from the top of the <strong>Call History</strong> page.</p> +<p>While in a voice chat you can <strong>adjust the volume</strong> of individual participants to manage microphone levels. Adjustments made by group admins are applied for all listeners.</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/464001247/2/pj1u_LAV7xw.60174/756843260c17e3cc20" style="max-width: 400px;" title="For the Screamin' Jay Hawkins in your group" alt="Improved Voice Chats"> + <source src="/file/464001152/4/62cTvEkVrHw.1520211.mp4/d3ee0094a0b83040bc" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="improved-audio-player" href="#improved-audio-player"><i class="anchor-icon"></i></a>Improved Audio Player</h3> +<p>When a track is playing, tap the <strong>author name</strong> in the player to see their tracks from <strong>all your chats</strong>. If you need to skip ahead or repeat something you missed, press and hold on the <em>Next</em> and <em>Previous</em> buttons to <strong>fast-forward</strong> and <strong>rewind</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/464001650/2/GOU6k0tH0G4.63236/651baad3c6ad5592ee" style="max-width: 400px;" title="" alt="Improved Audio Player"> + <source src="/file/464001271/1/Hk2bWt3kuO4.3264184.mp4/cd438d74ab7227ca31" type="video/mp4"> + </video> +</div> + +<p>We’ve also added a <strong>fade effect</strong> to please your ears when you pause and resume the music.</p> +<h3><a class="anchor" name="greeting-stickers" href="#greeting-stickers"><i class="anchor-icon"></i></a>Greeting stickers</h3> +<p>If you have contacts who joined Telegram recently, it may be a nice touch to welcome them using one of Telegram's <a href="https://t.me/TelegramTips/233">unique features</a>. A <strong>greeting sticker</strong> will be suggested in your new chats, ready to send in one tap. </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/464001625/2/5LQlEQQsqUc.85214/6d81e972f235754f3f" style="max-width: 400px;" title="Use for fortune telling at your own risk." alt="Greeting stickers"> + <source src="/file/464001956/1/Wv0cQeP3B4M.1642527.mp4/29025ff824891220c6" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="new-android-animations" href="#new-android-animations"><i class="anchor-icon"></i></a>New Android Animations</h3> +<p>A new update means sleek new interface animations. See if you can catch them all when downloading files, playing music, or loading chats after logging in.</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/464001554/2/B6yHrwwxbnY.33336/dbb9ce0d11f09791b7" style="max-width: 400px;" title="" alt="New Android Animations"> + <source src="/file/464001039/1/WUHvtXIeIfo.4333246.mp4/6cfc49f05fb10167dd" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="reporting-fake-channels" href="#reporting-fake-channels"><i class="anchor-icon"></i></a>Reporting Fake Channels</h3> +<p>All Telegram apps let you report spam and other types of illegal content, including calls to violence or child abuse. Now you can also report <strong>fake channels or groups</strong> that impersonate famous people or organizations. Open their profile page and tap <em>'…' > Report > Fake Account</em> to let our moderators know.</p> +<h3><a class="anchor" name="improved-accessibility" href="#improved-accessibility"><i class="anchor-icon"></i></a>Improved Accessibility</h3> +<p>Many accessibility improvements have been added for both <strong>TalkBack</strong> and <strong>VoiceOver</strong> users. As we continue to refine app interfaces for all users, we welcome additional feedback on our <a href="https://telegram.org/blog/voice-chats#feature-suggestion-platform">Suggestions Platform</a>.</p> +<p>A warm welcome to everyone who joined us recently! The next update shouldn’t take long.</p> +<div><br></div> + +<p><em>January 28, 2021<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%2Fmove-history&text=Move%20history%20from%20other%20apps%2C%20control%20your%20digital%20footprint%2C%20and%20more" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Move history from other apps, control your digital footprint, and more" data-url="https://telegram.org/blog/move-history"><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="Move history from other apps, control your digital footprint, and more" data-url="https://telegram.org/blog/move-history" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/new-profiles-people-nearby.html b/data/telegram.org/blog/new-profiles-people-nearby.html new file mode 100644 index 0000000000..d5c5d02873 --- /dev/null +++ b/data/telegram.org/blog/new-profiles-people-nearby.html @@ -0,0 +1,263 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>New Profiles, Fast Media Viewer and People Nearby 2.0</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="New Profiles, Fast Media Viewer and People Nearby 2.0"> + <meta property="og:image" content="https://telegram.org/file/464001232/1/-8xU2lIG8zc.76550/dfb1d4642cc6cdf20e"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Hundreds of millions rely on Telegram to share precious moments with their loved ones. Today we're making it easier to relive shared memories with redesigned profiles, instant access to shared media, and new ways to thumb through pictures and videos."> + <meta property="article:published_time" content="2020-02-13T23:17:36+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001232/1/-8xU2lIG8zc.76550/dfb1d4642cc6cdf20e" /> + <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/new-profiles-people-nearby" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">New Profiles, Fast Media Viewer and People Nearby 2.0</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/464001810/2/dex8-ROpw_M.20197.gif/12ad3090e46ca3b4a6" title="Fun fact: this pic was considered extremely risqué back in the b/w photo era." class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001765/1/M0H3dD35jUY.215617/fe8570431cd3dd89bc" target="_blank"><img src="/file/464001232/1/-8xU2lIG8zc.76550/dfb1d4642cc6cdf20e" srcset="/file/464001765/1/M0H3dD35jUY.215617/fe8570431cd3dd89bc, 1200w" title="Roses are red, Telegram is blue... or green, or orange with purple spots. This poem was created before we added fully customizable themes." alt="New Profiles, Fast Media Viewer and People Nearby 2.0"/></a> +</div> + +<p>Hundreds of millions rely on Telegram to share precious moments with their loved ones. Today we're making it easier to relive shared memories with <strong>redesigned profiles</strong>, <strong>instant access to shared media</strong>, and new ways to <strong>thumb</strong> through <strong>pictures and videos</strong>.</p> +<p>In case you're more of a digital extrovert, the updated <strong>People Nearby</strong> section offers fresh ways to forge new friendships.</p> +<h3><a class="anchor" name="redesigned-profile-pages" href="#redesigned-profile-pages"><i class="anchor-icon"></i></a>Redesigned Profile Pages</h3> +<p>This update transforms profiles into one of the most functional (and beautiful) sections of the app. It's simpler than ever to see the <strong>photos</strong>, <strong>videos</strong> and <strong>links</strong> you've shared with your friends – or browse their profile pictures.</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/464001620/2/wbnNJiENxTE.70863/5eb9d1c1a2f3340c85" style="max-width: 400px;" title="That's my girlfriend, you wouldn't know her. She uhh studies abroad, honest." alt="Video demonstrating Telegram's new profiles and shared media section"> + <source src="/file/464001526/2/_r90nrbfpZE.3654419.mp4/3fc784a55cb77f2e22" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="intuitive-media-browsing" href="#intuitive-media-browsing"><i class="anchor-icon"></i></a>Intuitive Media Browsing</h3> +<p>You can now <strong>flip through media</strong> from chats and profiles with <strong>taps</strong> – no more smudges on your screen from repeatedly swiping. Simply hit the right or left side of an image to go forward and back.</p> +<p>In case you're wondering where to best try out these new features, look no further than the updated People Nearby section.</p> +<h3><a class="anchor" name="people-nearby-2-0" href="#people-nearby-2-0"><i class="anchor-icon"></i></a>People Nearby 2.0</h3> +<p>Last June, we added <a href="https://telegram.org/blog/contacts-local-groups#add-people-nearby">People Nearby</a> for exchanging contact info face-to-face. With this update, <strong>People Nearby 2.0</strong> can help you <strong>meet new friends</strong>, or arrange a last-minute date for Valentine's Day. </p> +<p>Head over to <em>Contacts > People Nearby</em> to see adventurous Telegram users in the area. Tap <strong>Make Myself Visible</strong> to join them and display your profile to others around you. They will be able to find you and send you messages – even if you navigate away from the page or close the app.</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/464001353/1/iNptlrRmkWM.61293/99970b94fa4a4f8d87" style="max-width: 400px;" title="You don't have to invite us to your future wedding, but we'd appreciate a card." alt="Video demonstrating the new people nearby section"> + <source src="/file/464001461/1/62OGgtOwklY.2297187.mp4/e4c893a08ccf8b4b06" type="video/mp4"> + </video> +</div> + +<p>If you decide you're no longer in the mood for adventure, tap <em>Stop Showing Me</em> to re-engage your cloaking device.</p> +<h3><a class="anchor" name="new-animated-emoji" href="#new-animated-emoji"><i class="anchor-icon"></i></a>New Animated Emoji</h3> +<p>We couldn't pass up the chance to let you shower important people in your life with the newest <strong>animated emoji</strong>. <img class="emoji" src="//telegram.org/img/emoji/40/F09F9898.png" width="20" height="20" alt="😘" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F988D.png" width="20" height="20" alt="😍" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F98BB.png" width="20" height="20" alt="😻" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09FA5B0.png" width="20" height="20" alt="🥰" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F9291.png" width="20" height="20" alt="💑" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F928B.png" width="20" height="20" alt="💋" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F929D.png" width="20" height="20" alt="💝" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09FA7A1.png" width="20" height="20" alt="🧡" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F929B.png" width="20" height="20" alt="💛" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F929A.png" width="20" height="20" alt="💚" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F9299.png" width="20" height="20" alt="💙" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F929C.png" width="20" height="20" alt="💜" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F96A4.png" width="20" height="20" alt="🖤" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09FA48D.png" width="20" height="20" alt="🤍" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09FA48E.png" width="20" height="20" alt="🤎" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F9294.png" width="20" height="20" alt="💔" /> – and of course <img class="emoji" src="//telegram.org/img/emoji/40/F09F928C.png" width="20" height="20" alt="💌" /> – have just become a lot more <em>moving</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/464001641/2/txNZda41ZAk.24422/58969162525ed8ab4c" style="max-width: 400px;" title="Save a tree, send a Telegram message." alt="Some of the new animated emoji"> + <source src="/file/464001953/2/CNcpzbUpPdI.1458207.mp4/4c8ac8e1b34a7d0df6" type="video/mp4"> + </video> +</div> + +<p>If your emoji has a heart, we'll give it a beat. Stay tuned for the next update!</p> +<!-- +Somewhere in the crowded alleys of the dark underbelly of the blog, people know where to find more update-grade stuff: + +### Meanwhile on Desktop: Picture-in-Picture Videos + +[Telegram Desktop](https://desktop.telegram.org) has followed in the footsteps of [Telegram for MacOS](https://macos.telegram.org), adding **Picture-in-Picture mode** so you can keep watching a video while you carry on messaging like a pro. Whether that means *professional* or *procrastinator* is up to you. + +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001615/2/JkIuYGujvW0.55663/d8fef688d4a631d6b3" target="_blank"><img src="/file/464001992/1/GwOTP2uq6Ao.26271/dad1d2f8991c63bc25" title="TITLE" srcset="/file/464001615/2/JkIuYGujvW0.55663/d8fef688d4a631d6b3 , 2x" /></a> +</div> + +In case you'd rather focus on deatils instead, we've added the option to control **video playback speed** and **rotate** photos and videos in the media viewer. + +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001491/2/RrFMishp8xI.36044/858186648ec2c1a061" target="_blank"><img src="/file/464001002/1/fe4YnRTZFto.18367/3d03ccd15742756952" title="TITLE" srcset="/file/464001491/2/RrFMishp8xI.36044/858186648ec2c1a061 , 2x" /></a> +</div> + +Combined, these new desktop features will help you impress coworkers by watching videos upside down on 2x speed while scrolling through your chats – or brighten up your Valentine's day a little if you don't have a date. + +Spread the love and stay tuned for the next update! + +--> + +<div><br></div> + +<p><em>February 13, 2020<br>XOXO<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%2Fnew-profiles-people-nearby&text=New%20Profiles%2C%20Fast%20Media%20Viewer%20and%20People%20Nearby%202.0" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="New Profiles, Fast Media Viewer and People Nearby 2.0" data-url="https://telegram.org/blog/new-profiles-people-nearby"><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="New Profiles, Fast Media Viewer and People Nearby 2.0" data-url="https://telegram.org/blog/new-profiles-people-nearby" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/passport.html b/data/telegram.org/blog/passport.html new file mode 100644 index 0000000000..8cca4e32d8 --- /dev/null +++ b/data/telegram.org/blog/passport.html @@ -0,0 +1,233 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Introducing Telegram Passport</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Introducing Telegram Passport"> + <meta property="og:image" content="https://telegram.org/file/811140607/14ea/7uKRMvcjCw4.46732/339467d8e88315f466"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Meet Telegram Passport – a unified authorization method for services that require personal identification."> + <meta property="article:published_time" content="2018-07-26T15:49:21+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140607/14ea/7uKRMvcjCw4.46732/339467d8e88315f466" /> + <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/passport" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Introducing Telegram Passport</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140808/1699/0rt7PTc77gQ.18126.gif/271faaa7f322664f16" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/811140244/19d0/_A9rFoABfR0.130769/d1f56e2153ed093776" target="_blank"><img src="/file/811140607/14ea/7uKRMvcjCw4.46732/339467d8e88315f466" srcset="/file/811140244/19d0/_A9rFoABfR0.130769/d1f56e2153ed093776, 1200w" title="Introducing Telegram Passport"/></a> +</div> + +<p>Our digital lives are getting closer and closer to the real world, and the number of services that need to know your real-life ID increases accordingly. Before today, this meant you had to upload the same document scans over and over for each new app. No more!</p> +<p>Meet <strong>Telegram Passport</strong> – a unified authorization method for services that require personal identification. Upload your documents once, then instantly share your data with services that require real-world ID (finance, ICOs, etc.).</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/811140300/16ce/SWVsDo8psQo.22197/3bc8c1e5d801f543ff" style="max-width: 480px;"> + <source src="/file/811140664/1456/KzpQn3LtQMM.1686576.mp4/44d4d55c20a39f0ffc" type="video/mp4"> + </video> +</div> + +<h4><a class="anchor" name="protected-by-end-to-end-encryption" href="#protected-by-end-to-end-encryption"><i class="anchor-icon"></i></a>Protected by End-to-End Encryption</h4> +<p>Your identity documents and personal data will be stored in the Telegram cloud using End-to-End Encryption. It is encrypted with a password that only <strong>you</strong> know, so Telegram has <strong>no access</strong> to the data you store in your Telegram passport. When you share data, it goes directly to the recipient.</p> +<div class="blog_image_wrap"> + <a href="/file/811140250/1584/DRAdl8ilgL8.103473/4ad6a6f209a1fe5b84" target="_blank"><img src="/file/811140178/16e4/dF3ZqT2scHo.40648/8aa6a32ed7160ee439" title="Sharing Data with an App" srcset="/file/811140250/1584/DRAdl8ilgL8.103473/4ad6a6f209a1fe5b84 , 2x" /></a> + <p>Sharing Data with an App</p> +</div> + +<p>In the future, all Telegram Passport data will move to a <strong>decentralized cloud</strong>.</p> +<h4><a class="anchor" name="try-it-now" href="#try-it-now"><i class="anchor-icon"></i></a>Try It Now</h4> +<p>If you'd like to see a <strong>real-life implementation</strong> of Telegram Passport, head over to <a href="https://www.ePayments.com/tg">ePayments.com</a> – the first electronic payments system to support registration and verification with Telegram Passport.</p> +<p>You can also try out how Telegram Passport works using <a href="https://core.telegram.org/passport/example">this page</a> to request data.</p> +<p>Please note that you need the latest version of Telegram to access this feature. Once you've uploaded some documents, you will see your data in Settings > Privacy & Security > Telegram Passport (on iOS: Settings > Telegram Passport).</p> +<h4><a class="anchor" name="connect-telegram-passport" href="#connect-telegram-passport"><i class="anchor-icon"></i></a>Connect Telegram Passport</h4> +<p>All developers are welcome to integrate Telegram Passport into their apps and services free of charge. It takes minimum effort and can save many hours of coding. </p> +<p>If you are building a service that requires real-life ID, check out the <a href="https://core.telegram.org/passport"><strong>API docs</strong></a> for SDKs and examples.</p> +<h4><a class="anchor" name="stay-tuned" href="#stay-tuned"><i class="anchor-icon"></i></a>Stay Tuned</h4> +<p>In the future, we will be adding third-party verification for Telegram Passports. This way, services won't even need to request the data itself, instead relying on the fact that the Telegram account was approved by a verification provider and the person is real.</p> +<div><br></div> + +<p><em>July 26, 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%2Fpassport&text=Meet%20Telegram%20Passport%20%E2%80%93%20a%20unified%20authorization%20method%20for%20services%20that%20require%20personal%20identification." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Meet Telegram Passport – a unified authorization method for services that require personal identification." data-url="https://telegram.org/blog/passport"><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="Meet Telegram Passport – a unified authorization method for services that require personal identification." data-url="https://telegram.org/blog/passport" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/payments-2-0-scheduled-voice-chats.html b/data/telegram.org/blog/payments-2-0-scheduled-voice-chats.html new file mode 100644 index 0000000000..6ecb091d68 --- /dev/null +++ b/data/telegram.org/blog/payments-2-0-scheduled-voice-chats.html @@ -0,0 +1,319 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Payments 2.0, Scheduled Voice Chats, New Web Versions</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Payments 2.0, Scheduled Voice Chats, New Web Versions"> + <meta property="og:image" content="https://telegram.org/file/464001783/2/6Is-qGJkgX4.92603/d4d7fe3e0fc14ff3ba"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="This update brings Payments 2.0 for all Telegram chats, Scheduling and Mini Profiles for Voice Chats, new versions of Telegram Web for your browser, and more."> + <meta property="article:published_time" content="2021-04-26T12:40:20+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001783/2/6Is-qGJkgX4.92603/d4d7fe3e0fc14ff3ba" /> + <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/payments-2-0-scheduled-voice-chats" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Payments 2.0, Scheduled Voice Chats, New Web Versions</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/464001796/2/hhx2H4VU8Mc.10570/cd94e7c2bc1bb42174"><img src="/file/464001796/3/RuL3KG9PxoQ.32309.png/9492993f15dad7ef3c" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001036/3/9ZnITFnkib4.283442/5dc5b1f30fa97ec631" target="_blank"><img src="/file/464001783/2/6Is-qGJkgX4.92603/d4d7fe3e0fc14ff3ba" srcset="/file/464001036/3/9ZnITFnkib4.283442/5dc5b1f30fa97ec631, 1200w" title="Things in this picture you can't buy: Time Machine, Town Hall, Telegram, Doge's smile. +" alt="Payments 2.0, Scheduled Voice Chats, New Web Versions and More"/></a> +</div> + +<p>This update brings <a href="#payments-2-0">Payments 2.0</a> for all Telegram chats, <a href="#scheduled-voice-chats">Scheduling</a> and <a href="#mini-profiles-for-voice-chats">Mini Profiles</a> for <strong>Voice Chats</strong>, <a href="#new-web-versions">new Telegram apps</a> for your browser, and more.</p> +<h3><a class="anchor" name="payments-2-0" href="#payments-2-0"><i class="anchor-icon"></i></a>Payments 2.0</h3> +<p>We first added support for payments <a href="https://telegram.org/evolution#may-2017">in 2017</a>. <strong>Payment bots</strong> allowed users to securely pay for goods and services without leaving the app – anything from ordering a pizza to hailing a taxi, to replacing winter tires when you're tired of winter.</p> +<p>Starting today, merchants can natively accept credit card payments in <strong>any chat</strong>, relying on <strong>9</strong> <a href="https://core.telegram.org/bots/payments#supported-payment-providers">integrated third-party payment providers</a> such as <strong>Stripe</strong>.</p> +<p>Buyers can <strong>add a tip</strong> whenever they make a purchase to show some extra love to their favorite artists, stores, or delivery drivers. Payments can now be made from any app – including <a href="https://telegram.org/apps">desktop apps</a>.</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/464001377/1/0o3vSvY22g8.123356/deb4ed6951d780f7b7" style="max-width: 400px;" title="If your pizza place can't deliver a clone army, you're buying pizza from the wrong shop." alt="Video: Ordering a pizza through a Telegram channel"> + <source src="/file/464001705/2/Hg-klQnZ_n4.4889245.mp4/d324511ffdab7b4668" type="video/mp4"> + </video> +</div> + +<p>This is a free and privacy-conscious platform – Telegram takes <strong>no commission</strong>, and <strong>stores no payment information</strong>. Credit card information is sent directly to the payment provider and shipping information is shared with the merchant so they can send you your goods. </p> +<blockquote> +<p>We've created a <a href="https://t.me/TestStore/2">demo channel</a> with the most exotic imaginary goods and services no money can buy, so you can <strong>test how this works</strong> without spending a penny.</p> +</blockquote> +<p>Any merchant can start using the <strong>Payments API</strong> without getting additional approvals from Telegram. Developers interested in integrating payments can find all the details in the <a href="https://core.telegram.org/bots/payments">Payments Manual</a>.</p> +<h3><a class="anchor" name="scheduled-voice-chats" href="#scheduled-voice-chats"><i class="anchor-icon"></i></a>Scheduled Voice Chats</h3> +<p>Voice Chats give users the option to catch up with a few friends or tune in to <a href="https://telegram.org/blog/voice-chats-on-steroids">massive broadcasts</a> with millions of listeners.</p> +<p>Admins of groups and channels can now <strong>schedule a Voice Chat</strong> for a <strong>particular date and time</strong> instead of creating one right away. This gives community members time to let their friends know and get the popcorn ready.</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/464001090/3/-evCuN9k1S8.75906/99c32204ebac3350b6" style="max-width: 400px;" title="A voice chat is never early, nor is it late. It arrives precisely when the admins press the Start Chat button." alt="Video: Schedulling a voice chat"> + <source src="/file/464001976/2/jOceTgALY6s.4484550.mp4/1621ab6e361ebdd04f" type="video/mp4"> + </video> +</div> + +<p>Users will see a colorful <strong>countdown</strong> at the top of the chat. Those too busy to watch the countdown can opt to receive a <strong>notification</strong> when the voice chat starts.</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/464001033/3/mG6sW0ZhJnE.228053/45beea8197fbe8d8a5" style="max-width: 400px;" title="It's like time travel, but without the Butterfly Effect" alt="Video: countdown to a voice chat and setting a reminder"> + <source src="/file/464001526/4/vc1VNWWtB_E.4107154.mp4/cb32f323bf5ba16ef3" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>Admins can schedule a Voice Chat from their Group or Channel's profile page. On <strong>Android</strong>, <em>tap ⋮ > Start Voice chat > Schedule Voice Chat</em>. On <strong>iOS</strong>, tap the Voice Chat button and select <em>Schedule Voice Chat</em>.</p> +<p>Don't worry, the chat won't start automatically when the countdown reaches zero – only when an admin presses the <em>Start Now</em> button.</p> +</blockquote> +<h3><a class="anchor" name="mini-profiles-for-voice-chats" href="#mini-profiles-for-voice-chats"><i class="anchor-icon"></i></a>Mini Profiles for Voice Chats</h3> +<p>You can now <strong>expand profile pictures</strong> and <strong>bios</strong> to get a better idea of who you're chatting with – without leaving the voice chat window.</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/464001039/2/c9GQ0w-7enI.149639/f76f58da838ae2ff4a" style="max-width: 400px;" title="You can be whoever you want – even your real self." alt="Video: Viewing and editing profile info without leaving the voice chat"> + <source src="/file/464001472/2/alqsffHuL_I.3726188.mp4/e459439d51ca579096" type="video/mp4"> + </video> +</div> + +<p>You can also <strong>change your profile picture</strong> and <strong>edit your bio</strong> without leaving the chat – like changing from Shirley to Grognak the Barbarian as you meet for Dungeons and Dragons.</p> +<h3><a class="anchor" name="new-web-versions" href="#new-web-versions"><i class="anchor-icon"></i></a>New Web Versions</h3> +<p>Telegram's first Web Version was launched in <strong><a href="https://telegram.org/evolution#february-2014">2014</a></strong>. Ever since, our pet demon of internal competition kept whispering: 'Why have one web version when you can have two?'</p> +<p>Today we're adding <strong>two</strong> new, fully-featured Telegram web apps – both supporting <strong>animated stickers</strong>, <strong>dark mode</strong>, <strong>chat folders</strong> and <strong>more</strong>.</p> +<div class="blog_video_player_wrap" style="max-width: 600px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001927/1/-CYVE7QWvfI.21607/2395c52714f2aa4e3c" style="max-width: 600px;" title="Spiderman uses Telegram Web – and so should you!" alt="Video: New Telegram Web"> + <source src="/file/464001465/2/ARh7OuWtU08.4791438.mp4/102f0d2a1adba4ab2e" type="video/mp4"> + </video> +</div> + +<p>With the new web versions you can get instant access to your chats on any device – <strong>desktop</strong> or <strong>mobile</strong>. These apps are incredibly efficient, requiring only a <strong>400 KB</strong> download (that's like two photos of a medium-sized cat) and <strong>no installation</strong>.</p> +<p>Take them for a test drive, and see which one you like best:</p> +<ul> +<li><a href="https://webk.telegram.org">Telegram Web K</a></li> +<li><a href="https://webz.telegram.org">Telegram Web Z</a></li> +</ul> +<p>Like other <a href="https://telegram.org/apps">Telegram apps</a>, all our web versions are <strong>standalone</strong>: once you've logged in, you <strong>do not</strong> need to keep your phone nearby or connected to the internet. </p> +<blockquote> +<p>If you find an issue with either of the new apps, let us know using our <a href="https://bugs.telegram.org/c/4002">Suggestions Platform</a>.</p> +</blockquote> +<h3><a class="anchor" name="direct-download-for-android" href="#direct-download-for-android"><i class="anchor-icon"></i></a>Direct Download for Android</h3> +<p>In case you're more of an app person, you can now also download Telegram for Android <strong>directly</strong> from <a href="https://telegram.org/android">telegram.org</a>. Apps installed from the website will <strong>automatically update</strong> to the latest version. You are likely to get new versions several <strong>days</strong> or <strong>weeks faster</strong> this way because you won't have to wait for updates to be reviewed by the store.</p> +<!-- +you can also download our Android app directly from [telegram.org](https://telegram.org/android). Apps installed from the website will **automatically update** to the latest version. You are likely to get new versions **faster** this way because you won't have to wait for updates to be reviewed by the store. +--> + +<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/464001530/4/3B7bJtho4lE.137943/5cc65eb685af85e168" style="max-width: 400px;" title="'Farm to table' reinvented for the 21st century" alt="Video: How to install Telegram for Android on your device"> + <source src="/file/464001495/2/qWwWkXg2lBg.2882672.mp4/182145776274e3bcfd" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>Telegram supports <a href="https://core.telegram.org/reproducible-builds">reproducible builds</a>, so you can always be sure that the app you have on your device was built from the <strong>exact same open source code</strong> that is <a href="https://telegram.org/apps#source-code">published on GitHub</a>.</p> +</blockquote> +<h3><a class="anchor" name="pinch-to-zoom" href="#pinch-to-zoom"><i class="anchor-icon"></i></a>Pinch to zoom</h3> +<p>Photos and videos can now be <strong>expanded</strong> directly from the chat – simply pinch to zoom in right away, without tapping to open the media viewer.</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/464001300/3/0gZ3ZvEF7vs.228667/4e40851684ad7ffd64" style="max-width: 400px;" title="There's no good word for the opposite of pinching. Trust me, I spent the last decade asking ancient monks in every mountain range." alt="Video: Using a pinch-like gesture to zoom into photos and videos in a chat without opening them"> + <source src="/file/464001954/2/yxBLVrUzcok.3997163.mp4/32eca55e3c7848e1ea" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="improved-video-player" href="#improved-video-player"><i class="anchor-icon"></i></a>Improved Video Player</h3> +<p>When watching a video from the media player on iOS, <strong>press and hold</strong> the + or - 15s buttons to <strong>fast-forward</strong> and <strong>rewind</strong>. On Android press and hold on the right or left side of the screen to do the same, and <strong>double-tap</strong> to jump 10 seconds in either direction. </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/464001059/1/qGVj6UNxCks.213988/e47d40a917b88136cd" style="max-width: 400px;" title="Legends mention a secret tap-combo that changes any video into a rickroll." alt="Video: rewinding, fast-forwarding and jumping forward and back in a video"> + <source src="/file/464001276/2/FZzFP_FUXhk.2913084.mp4/926e5e4565d072b495" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="tips-and-new-android-animations" href="#tips-and-new-android-animations"><i class="anchor-icon"></i></a>Tips and New Android Animations</h3> +<p>The Android app gets <strong>smoother</strong> and <strong>more dynamic</strong> with each update – check out the new animations when opening the side menu or swiping back to the chat list from a chat.</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/464001596/5/ehpumV4wKB0.150589/76af3a0e755a3fbded" style="max-width: 400px;" title="Like butter – only smoother" alt="Video: New animations on Android when opening the side menu and swiping back from a chat"> + <source src="/file/464001978/4/F_14rk76i2o.1164999.mp4/8c6903bb14d4b03601" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>To learn more about what Telegram can do, tap <strong>Telegram Features</strong> from the side menu or visit the <a href="https://t.me/TelegramTips/233">@TelegramTips</a> channel.</p> +</blockquote> +<h3><a class="anchor" name="telegram-jobs" href="#telegram-jobs"><i class="anchor-icon"></i></a>Telegram Jobs</h3> +<p>That's it for today. We are already working on the next update — and if you just thought <em>'Wow, that's the spirit!'</em> rather than <em>'Poor people, have some rest'</em>, check out our list of <strong><a href="https://telegram.org/jobs">open positions</a></strong>.</p> +<div><br></div> + +<p><em>April 26, 2021<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%2Fpayments-2-0-scheduled-voice-chats&text=Introducing%20Payments%202.0%2C%20Scheduled%20Voice%20Chats%2C%20New%20Telegram%20Web%20and%20more." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing Payments 2.0, Scheduled Voice Chats, New Telegram Web and more." data-url="https://telegram.org/blog/payments-2-0-scheduled-voice-chats"><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 Payments 2.0, Scheduled Voice Chats, New Telegram Web and more." data-url="https://telegram.org/blog/payments-2-0-scheduled-voice-chats" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/payments.html b/data/telegram.org/blog/payments.html new file mode 100644 index 0000000000..61d0a8a1b0 --- /dev/null +++ b/data/telegram.org/blog/payments.html @@ -0,0 +1,253 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Payments for Bots</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Payments for Bots"> + <meta property="og:image" content="https://telegram.org/file/811140819/2/35lGXQhh0BE.186683/c2d4dcc9207478f815"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Merchants can accept credit card payments from Telegram users around the world."> + <meta property="article:published_time" content="2017-05-18T21:50:08+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140819/2/35lGXQhh0BE.186683/c2d4dcc9207478f815" /> + <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/payments" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Payments for Bots</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140515/2/CyGl7b4gdEY.21591.gif/3df69327cb536ec5cd" class="blog_side_image"/> +</div> + +<blockquote> +<p><strong>UPD 2021:</strong> For up-to-date information about <strong>Payments on Telegram</strong>, see <a href="https://telegram.org/blog/payments-2-0-scheduled-voice-chats"><strong>Payments 2.0</strong></a> and the <a href="https://core.telegram.org/bots/payments">Payments Documentation</a>.</p> +</blockquote> +<div class="blog_wide_image"> + <a href="/file/811140819/2/35lGXQhh0BE.186683/c2d4dcc9207478f815" target="_blank"><img src="/file/811140819/2/35lGXQhh0BE.186683/c2d4dcc9207478f815" title="Intoducing Bot Payments!"/></a> +</div> + +<p>Imagine a world where you can order pizza, pay for a pair of shoes, hire a cab, or refill your subway pass — all in a few button taps on Telegram. </p> +<p>To make this world possible, we are launching <a href="https://core.telegram.org/bots/payments"><strong>Bot Payments</strong></a> today. Bot developers can now <strong>accept payments</strong> from their users around the world, just like that: </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="YYY" autoplay loop controls muted> + <source src="/file/811140436/2/cxE7JK8NL-M.514213.mp4/2146f9b746ebb4fef4" type="video/mp4"> + </video> + </div> + <br> +</div> + +<p>If you have Telegram 4.0 (or newer) installed, you can order goods or services from bots that offer them. These bots may now add a <strong>Pay button</strong> to their messages. When you tap <strong>Pay</strong>, you'll be asked to fill in your credit card and shipping information and confirm the payment. Then you get what you paid for. Voila!</p> +<p>If your account is protected by <a href="https://telegram.org/blog/sessions-and-2-step-verification#two-step-verification">2-Step Verification</a>, you can <strong>save</strong> your card for future purchases. If you do that, ordering stuff from bots will only take two taps. Bot Payments also support Apple Pay for a completely frictionless experience.</p> +<h3><a class="anchor" name="check-it-out-now" href="#check-it-out-now"><i class="anchor-icon"></i></a>Check It Out Now</h3> +<p>Try our demo <a href="https://t.me/shopbot"><strong>@ShopBot</strong></a> to get a taste of what's coming. (Note: Our demo bot thinks it sells time machines, but they're <strong>not</strong> a part of what's coming. Sadly.) If you're looking to test a real payment with actual money, stop by our <a href="https://t.me/telegramdonate"><strong>@TelegramDonate</strong></a> bot.</p> +<p>Telegram is an open platform, so bot developers can implement the necessary APIs and accept payments from users starting right now, without lengthy approval dramas. If you’re a <strong>bot developer</strong>, check out <a href="https://core.telegram.org/bots/payments">the docs</a> immediately!</p> +<h3><a class="anchor" name="behind-the-scenes" href="#behind-the-scenes"><i class="anchor-icon"></i></a>Behind the Scenes</h3> +<div class="dev_side_image"> + <a href="/file/811140227/2/ZTXUngAbELM.193805/ba6aa233d1d4206207" target="_blank"><img src="/file/811140301/1/nPcRt5wzlCI.61948/b06d322c70311a6079" title="Payments API. Click for hi-res picture"> +</a></div> + +<p>At launch, most of the payments were handled by <a href="https://stripe.com/"><strong>Stripe</strong></a>, but Telegram Bot Payments are a <strong>platform for payment providers</strong> all over the world. When accepting a payment from a user, the bot developer can choose between all available payment providers, selecting the one already used by the buyer or the one with the lowest commission.</p> +<blockquote> +<p><strong>UPD, 14.06.2017:</strong> Bot developers can now process payments from more than <strong>200</strong> countries via the global payment provider <a href="https://www.paymentwall.com">Paymentwall</a>.</p> +<p><strong>UPD, 02.06.2017:</strong> <a href="https://money.yandex.ru/new">Yandex.Money</a> and <a href="https://payme.uz/">Payme</a> are now also available as payment providers.</p> +<p><strong>UPD, 01.09.2017:</strong> <a href="https://ravepay.co/">Rave by Flutterwave</a> is now available, which is especially helpful for developers in Nigeria, Kenya, Ghana, South Africa, and Uganda.</p> +</blockquote> +<p>This is just the beginning. In the next few days, payments will become available to developers in India via <a href="http://razorpay.com">Razorpay</a>, in Russia <a href="https://qiwi.ru">Qiwi</a> will be joining the club a little later.</p> +<p>Follow our <a href="https://t.me/botnews"><strong>@BotNews</strong></a> channel to be the first to know about new providers joining.</p> +<p>If you’re a payment provider (especially in a developing country), <a href="https://core.telegram.org/bots/payments#how-do-i-join-as-a-payment-provider">click here</a> to learn how to get on board. </p> +<h3><a class="anchor" name="just-passing-through" href="#just-passing-through"><i class="anchor-icon"></i></a>Just Passing Through</h3> +<p>Telegram acts as a messenger (pun intended) between the paying user, the bot developer, and their chosen payment system. The user sends their credit card details directly to the payment system. Then the payment system's response and the shipping details entered by the user are passed to the bot developer so that they can process the order.</p> +<p>Due to this structure, it is impossible for Telegram to handle complaints or cashbacks – any disputed payments are the responsibility of the bot developers, payment providers, and banks that participated in the exchange.</p> +<p>Since Telegram doesn't process the payments, we don't store and can't access any sensitive data. We also don't take any commission from payments and don't profit from these transactions. </p> +<p>Instead, we just do what every sheriff has to do with strangers passing through their turf: shoot the bad bots and award the good ones with a badge. We’re sure there’ll be plenty of good ones.</p> +<h3><a class="anchor" name="if-you-are" href="#if-you-are"><i class="anchor-icon"></i></a>If You Are…</h3> +<ul> +<li><strong>…one of our lovely users</strong>, wait and see what wonders Telegram bot developers will soon bring your way using this new platform. Meanwhile, try our demo <a href="https://t.me/shopbot">@ShopBot</a> to get an idea of what's coming or try spending some real money via <a href="https://t.me/telegramdonate">@TelegramDonate</a>.</li> +<li><strong>…a bot developer</strong>, check out our <a href="https://core.telegram.org/bots/payments">Introduction to Payments</a> and <a href="https://core.telegram.org/bots/api#payments">Payments API</a> to see what you can build.</li> +<li><strong>…a payments provider</strong>, <a href="https://core.telegram.org/bots/payments#how-do-i-join-as-a-payment-provider">learn how to get on board</a>.</li> +</ul> +<p>And if you're none of the above for some weird reason, <strong>be a user</strong>, <a href="https://telegram.org/apps">do the right thing</a>. Happy shopping, everyone!</p> +<div><br></div> + +<p><em>May 18, 2017<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%2Fpayments&text=Merchants%20can%20accept%20credit%20card%20payments%20from%20Telegram%20users%20around%20the%20world." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Merchants can accept credit card payments from Telegram users around the world." data-url="https://telegram.org/blog/payments"><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="Merchants can accept credit card payments from Telegram users around the world." data-url="https://telegram.org/blog/payments" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/photo-editor-and-passcodes.html b/data/telegram.org/blog/photo-editor-and-passcodes.html new file mode 100644 index 0000000000..bc8ca9a721 --- /dev/null +++ b/data/telegram.org/blog/photo-editor-and-passcodes.html @@ -0,0 +1,252 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Photo Editor and Passcode Lock</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Photo Editor and Passcode Lock"> + <meta property="og:image" content="https://telegram.org/file/811140076/1/x1D3mip71sI/3613b2ac2ed253fbc9"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="#Telegram's latest update introduces photo editor and passcode lock to its iOS and Android apps."> + <meta property="article:published_time" content="2015-02-25T20:34:22+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140076/1/x1D3mip71sI/3613b2ac2ed253fbc9" /> + <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/photo-editor-and-passcodes" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Photo Editor and Passcode Lock</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140076/1/x1D3mip71sI/3613b2ac2ed253fbc9" class="blog_side_image"/> +</div> + +<p>Today’s update to our <a href="https://telegram.org/dl/ios">iOS</a> and <a href="https://telegram.org/dl/android">Android</a> apps reflects the essence of Telegram — a combination of easy-to-use privacy tools and popular mass market features.</p> +<h4><a class="anchor" name="photo-editor" href="#photo-editor"><i class="anchor-icon"></i></a>Photo Editor</h4> +<p>Each day Telegram users share <strong>35</strong> million photos, and this number is growing by the hour. For comparison, Instagram users shared <strong>70</strong> million photos daily in December. Yet up until now, messaging app users couldn’t enjoy a photo editing experience on the level that is offered by photo-sharing apps. We’re changing this today.</p> +<div class="smartphone_video_player_wrap"> + <div class="smartphone_video_player_iphone"> + <video class="smartphone_video_player" onclick="videoTogglePlay(this)" poster="" autoplay loop controls muted> + <!--source src="//core.telegram.org/file/811140256/1/slq5JuOMsyA/694bdcfa07166d14fd" type="video/mp4"--> + <source src="/resources/video/PhotoEditor.mp4" type="video/mp4"> + </video> + </div> +</div> + + +<p>With the new photo editor, you can crop, rotate and auto-enhance photos before sending them. On top of that, you can use Photoshop-class granular controls for brightness, contrast, warmth, saturation, highlights, sharpening, blurring and more.</p> +<p>The <strong>auto-enhance</strong> tool is our favorite though — it can improve photos in an instant. </p> +<div><center> + <a href="/file/811140916/1/DB3wJoFby6U/21e116d5616c11ec5a" target="_blank"><img src="/file/811140916/1/DB3wJoFby6U/21e116d5616c11ec5a" title="Original" style="padding: 10px 5px; width: 195px" /></a> + + <a href="/file/811140838/2/h9Eq9wiLxJY/80b38b9a64d8847ec7" target="_blank"><img src="/file/811140838/2/h9Eq9wiLxJY/80b38b9a64d8847ec7" title="Enhanced photo" style="padding: 10px 5px; width: 195px"/></a> + +</center> +</div> + +<h4><a class="anchor" name="passcode-lock" href="#passcode-lock"><i class="anchor-icon"></i></a>Passcode Lock</h4> +<p>Telegram is one of the few messaging apps that can be used on multiple devices at once. While this is definitely convenient, it also raises the bar when it comes to privacy. What if one of your Telegram devices, e.g. an iPad or another tablet, is sometimes used by your colleagues or family members?</p> +<p>In order to give you more control in such cases, we are introducing passcodes. Starting today, you can lock your iOS or Android device with a passcode – a simple 4-digit PIN or a longer password. The iOS app, and soon the Android app as well, can use passwords to encrypt the local database against such extreme cases as phone theft.</p> +<div><center> + +<a href="/file/811140136/1/71kEuE4r3xU/a62831ebe9bcc00b69" target="_blank"><img src="/file/811140136/1/71kEuE4r3xU/a62831ebe9bcc00b69" title="Locked app" style="padding: 10px 5px; width: 195px" /></a> + + + <a href="/file/811140752/1/nk_8hTtDU3w/4d8385dc9de252e581" target="_blank"><img src="/file/811140752/1/nk_8hTtDU3w/4d8385dc9de252e581" title="Timed lock settings" style="padding: 10px 5px; width: 195px" /></a> + +<a href="/file/811140272/1/FJZYGGziOIM/38e10dbe07f8c00bab" target="_blank"><img src="/file/811140272/1/FJZYGGziOIM/38e10dbe07f8c00bab" title="Passcode settings" style="padding: 10px 5px; width: 195px" /></a> + + <br><br> +</center> + +Without entering this passcode, no one will be able to access your Telegram messages. When Telegram is locked, notifications about new messages will not include texts or sender names, so private data stays hidden from prying eyes. + +<div> +<center><br> + <a href="/file/811140241/1/59f1BpcXOGk/fd7aca1975c120c31b" target="_blank"><img src="/file/811140241/1/59f1BpcXOGk/fd7aca1975c120c31b" title="Tap to lock" style="width: 200px" /></a> + </center><br><br> +</div> + +<p>Since unlocking Telegram each time can get annoying, we implemented both manual and auto-lock. You can lock the app manually from the chats screen or enable auto-lock after a specified period of inactivity. iOS users can use Touch ID to unlock the app.</p> +<div><br> +</div> + +<p><em>February 25, 2015<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%2Fphoto-editor-and-passcodes&text=%23Telegram%27s%20latest%20update%20introduces%20photo%20editor%20and%20passcode%20lock%20to%20its%20iOS%20and%20Android%20apps." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="#Telegram's latest update introduces photo editor and passcode lock to its iOS and Android apps." data-url="https://telegram.org/blog/photo-editor-and-passcodes"><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's latest update introduces photo editor and passcode lock to its iOS and Android apps." data-url="https://telegram.org/blog/photo-editor-and-passcodes" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/polls-2-0-vmq.html b/data/telegram.org/blog/polls-2-0-vmq.html new file mode 100644 index 0000000000..b0e6a10f83 --- /dev/null +++ b/data/telegram.org/blog/polls-2-0-vmq.html @@ -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've been used for everything from deciding where to have lunch to organizing leaderless protests. Today we'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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </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'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'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't say no. (33% of developers who didn'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'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'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'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'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 'Great Minds' 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'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's it for today. Here'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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/polls.html b/data/telegram.org/blog/polls.html new file mode 100644 index 0000000000..1c007defe0 --- /dev/null +++ b/data/telegram.org/blog/polls.html @@ -0,0 +1,230 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Polls: Bringing Choice to Communities</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Polls: Bringing Choice to Communities"> + <meta property="og:image" content="https://telegram.org/file/811140442/1987/lDXpp1l2oUA.96142/373b1292fe14b0e24e"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Large communities on Telegram frequently use polls to coordinate their activities and stay in touch with their constituents. Today, we're rolling out a dedicated tool for polls."> + <meta property="article:published_time" content="2018-12-22T19:46:14+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140442/1987/lDXpp1l2oUA.96142/373b1292fe14b0e24e" /> + <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" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Polls: Bringing Choice to Communities</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140742/1a15/aIL-H7A3zdY.17085.gif/9c4f2daca34cdba715" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/811140564/1444/t8TKJSNGMTM.265286/2f0c7f170337a57ef7" target="_blank"><img src="/file/811140442/1987/lDXpp1l2oUA.96142/373b1292fe14b0e24e" srcset="/file/811140564/1444/t8TKJSNGMTM.265286/2f0c7f170337a57ef7, 1200w" title="Introducing Polls"/></a> +</div> + +<p>Large communities on Telegram frequently use <strong>polls</strong> to coordinate their activities and stay in touch with their members. Today, we're rolling out a <strong>dedicated tool</strong> for polls in addition to existing bots like <a href="https://t.me/vote">@vote</a>. We hope the new built-in polls will be a welcome addition to groups with <strong>100,000</strong> members and channels with <strong>millions</strong> of subscribers.</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/811140146/14bc/Wt_mXDKi4XI.40462/e83031b9a94c0242c9" style="max-width: 480px;"> + <source src="/file/811140414/185e/lkrTw0EBhDg.4264189.mp4/2c82452b3cecdaeb75" type="video/mp4"> + </video> +</div> + +<p>Polls can be <strong>forwarded</strong> to increase reach and <strong>pinned</strong> for better visibility (and also to notify all members of the community).</p> +<p>At the moment, polls are <strong>anonymous</strong>, meaning that no one can see who voted for what. Going forward, we may introduce non-anonymous polls where the voters lists will be public, but such polls will be explicitly marked as non-anonymous. </p> +<blockquote> +<p><a href="https://telegram.org/blog/200-million">Telegram has your back</a> when it comes to privacy: we never disclose the private data you entrusted us with to third parties and never monetize it.</p> +</blockquote> +<hr> +<h4><a class="anchor" name="image-search-and-other-improvements-on-ios" href="#image-search-and-other-improvements-on-ios"><i class="anchor-icon"></i></a>Image Search and Other Improvements on iOS</h4> +<p>Back to more mundane matters, you can use <strong>Web Search</strong> again to find images when sending <em>Photo & Video</em> attachments or choosing profile pictures in our iOS app. Setting a Grinch avatar for Christmas has never been easier:</p> +<div class="blog_image_wrap"> + <a href="/file/811140572/175b/KuJY_pnNOSk.72598/4c597bab7ceaec4c98" target="_blank"><img src="/file/811140536/1945/K0CG6SB7wEo.16440/63393d871b306bb975" title="TITLE" srcset="/file/811140572/175b/KuJY_pnNOSk.72598/4c597bab7ceaec4c98 , 2x" /></a> +</div> + +<p><a href="https://telegram.org/blog/translations-iv2#the-great-ios-bug-hunt">The Great iOS Bug Hunt</a> goes on and the app received numerous fixes in version <strong>5.1.1</strong>.</p> +<p>To name a few improvements: Clearing the cache in <em>Settings > Data and Storage > Storage Usage</em> now correctly <strong>reduces</strong> the <strong>space</strong> taken by the app. Files and media will <strong>keep downloading</strong> for a while after you close the app. You will see <strong>detailed progress</strong> when downloading and uploading files. We've also added <strong>online indicators</strong> for the ‘People’ section in search results.</p> +<p>Happy Winter Solstice!</p> +<div><br></div> + +<p><em>December 22, 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%2Fpolls&text=Telegram%205.1%20introduces%20a%20dedicated%20tool%20for%20polls.%20" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram 5.1 introduces a dedicated tool for polls. " data-url="https://telegram.org/blog/polls"><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 5.1 introduces a dedicated tool for polls. " data-url="https://telegram.org/blog/polls" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/privacy-discussions-web-bots.html b/data/telegram.org/blog/privacy-discussions-web-bots.html new file mode 100644 index 0000000000..16a6dc3480 --- /dev/null +++ b/data/telegram.org/blog/privacy-discussions-web-bots.html @@ -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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </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'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'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'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 aren‘t logged in to Telegram. The same also goes for those retro people who don’t 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'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'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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/privacy-revolution.html b/data/telegram.org/blog/privacy-revolution.html new file mode 100644 index 0000000000..f100e74092 --- /dev/null +++ b/data/telegram.org/blog/privacy-revolution.html @@ -0,0 +1,226 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Hiding Last Seen Time - Done Right</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Hiding Last Seen Time - Done Right"> + <meta property="og:image" content="https://telegram.org/file/811140464/2/NTCaRX43SOs/b8380997d80f21f92d"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="In Telegram you can hide your last seen time with granular controls"> + <meta property="article:published_time" content="2014-11-19T15:19:04+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140464/2/NTCaRX43SOs/b8380997d80f21f92d" /> + <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-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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Hiding Last Seen Time - Done Right</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140464/2/NTCaRX43SOs/b8380997d80f21f92d" class="blog_side_image"/> +</div> + +<p>Each day our volunteer-driven support team gets several thousand requests from our users to help them hide their <strong>Last Seen</strong> time. We knew it's important, and have been working hard to get this feature right. We wanted to make sure that Telegram users would have unprecedented precision and flexibility, without the usual tradeoffs. </p> +<p>Starting today, you can specify <strong>exactly</strong> who will see your Last Seen time in both our <a href="/dl/ios">iOS</a> and <a href="/dl/android">Android</a> apps. You can choose between the three basic options (“Everybody”, “My Contacts” and “Nobody”) and add <strong>any</strong> number of exceptions into the <strong>“Always Share With…”</strong> and <strong>“Never Share With…”</strong> sections. </p> +<blockquote> +<p>For example, this way you can make your Last Seen time available to everybody but your boss, or to nobody with the exception of your marriage partner (or vice versa, it's up to you). If you’d like to share your Last seen time only with your contacts plus the members of some work-related group you have, you can do it in just a few taps. This makes countless combinations possible.</p> +</blockquote> +<h4><a class="anchor" name="why-is-this-important" href="#why-is-this-important"><i class="anchor-icon"></i></a>Why Is This Important?</h4> +<p>To make things fair, you won’t see Last Seen timestamps for people with whom you don‘t share your own. That’s why it‘s important to have granular controls — Telegram’s precision helps you avoid difficult choices. For example, you don't need to choose between hiding your Last Seen from your boss and being able to know when your best friend was online. You can have both.</p> +<div><center> + <a href="/file/811140790/1/chLwhBOO1_M/cfb9b5a63524879b0c" target="_blank"><img src="/file/811140790/1/chLwhBOO1_M/cfb9b5a63524879b0c" title="New Privacy and Security Section" style="padding: 10px; width: 200px" /></a> + + <a href="/file/811140765/1/2cJCSFH7_sM/6342b1cf6bc8f21c1e" target="_blank"><img src="/file/811140765/1/2cJCSFH7_sM/6342b1cf6bc8f21c1e" title="Last Seen Settings" style="padding: 10px; width: 200px" /></a></center> +</div> + +<h4><a class="anchor" name="last-seen-recently" href="#last-seen-recently"><i class="anchor-icon"></i></a>Last Seen Recently</h4> +<p>Of course, the absence of a Last Seen timestamp makes it difficult to know whether the person you're about to contact is a regular user of Telegram and will be able to read your message. That is why even if the exact Last Seen time is hidden, you will still see an <strong>approximate value</strong>, like “last seen recently” (i.e. from one minute ago to about 3 days) or “last seen within a month”. This keeps stalkers away, but makes it possible to understand whether a person is reachable over Telegram.</p> +<p>Speaking of inactive users, we're not going to have too many of them soon. Starting today, Telegram accounts will self-destruct after 6 months of inactivity by default.</p> +<h4><a class="anchor" name="self-destructing-accounts" href="#self-destructing-accounts"><i class="anchor-icon"></i></a>Self-Destructing Accounts</h4> +<p>Big companies like to accumulate data about their users and keep it for an indefinite time. Telegram is not a commercial organization and we value our disk space greatly. Last year we introduced self-destructing messages, today we are adding self-destructing accounts.</p> +<p>From now on, if you stop using Telegram and do not login for at least 6 months, your account will be deleted along with all messages, media, contacts and every other piece of data you store in the Telegram cloud. You can change the exact period after which your inactive account will self-destruct – with options ranging from 1 month to 1 year.</p> +<div><br><center><img src="/img/tl_card_destruct.gif" title="This blog post will self-destruct in 10... 9..."></center><br></div> + +<p>These new features are already available in our <a href="/dl/ios">iOS</a> and <a href="/dl/android">Android</a> apps. Stay tuned for more privacy-related updates.</p> +<div></div> + +<p><em>The Telegram Team,<br>November 19, 2014</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-revolution&text=In%20Telegram%20you%20can%20hide%20your%20last%20seen%20time%20with%20granular%20controls" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="In Telegram you can hide your last seen time with granular controls" data-url="https://telegram.org/blog/privacy-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="In Telegram you can hide your last seen time with granular controls" data-url="https://telegram.org/blog/privacy-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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/reactions-spoilers-translations.html b/data/telegram.org/blog/reactions-spoilers-translations.html new file mode 100644 index 0000000000..7d17033f44 --- /dev/null +++ b/data/telegram.org/blog/reactions-spoilers-translations.html @@ -0,0 +1,300 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Reactions, Spoilers, Translation and QR Codes</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Reactions, Spoilers, Translation and QR Codes"> + <meta property="og:image" content="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more."> + <meta property="article:published_time" content="2021-12-30T10:34:47+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <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/reactions-spoilers-translations" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Reactions, Spoilers, Translation and QR Codes</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/464001045/ea80/mMVQUWrC-d8.13395/560c813997c259ff20"><img src="/file/464001045/ea81/tKdbJo1Q-z8.31803.png/cf0f518823450ac2e0" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001589/dab7/u5N6uxxkYN0.353972/141063396c8524879c" target="_blank"><img src="/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" srcset="/file/464001589/dab7/u5N6uxxkYN0.353972/141063396c8524879c, 1200w" title="The Matrix has you, what did you think?" alt="Reactions, Spoilers, Translation and QR Codes"/></a> +</div> + + +<p>Telegram's <a href="https://telegram.org/blog">12th update</a> of the year introduces <strong>reactions</strong>, <strong>message translation</strong>, <strong>themed QR codes</strong>, <strong>hidden text</strong> (spoilers), and more.</p> +<h3><a class="anchor" name="reactions" href="#reactions"><i class="anchor-icon"></i></a>Reactions</h3> +<p>Telegram was the first messaging app to add <a href="https://t.me/TelegramTips/219">animated</a> and <a href="https://t.me/TelegramTips/297">interactive emoji</a>, giving users unparalleled ways to express themselves in chats. Today some of these emoji become available as <strong>reactions</strong> to share feelings and feedback – without sending any messages.</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/464001407/dbda/RmqlLDIAXj0.254306/91a6046617d9a0ae4e" style="max-width: 400px;" title="The thumbs up gesture has been saving words (and lives) since the days of the Roman Empire. Now it's just a double tap away." alt="Emoji reactions"> + <source src="/file/464001961/db1d/qKAGYZMhnuQ.4843053.mp4/fd767fbd834d2c311a" type="video/mp4"> + </video> +</div> + +<p><strong>Double tap</strong> a message to send a quick <img class="emoji" src="//telegram.org/img/emoji/40/F09F918D.png" width="20" height="20" alt="👍" /> reaction. For <strong>more reactions</strong> like <img class="emoji" src="//telegram.org/img/emoji/40/F09F9881.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/F09F98B1.png" width="20" height="20" alt="😱" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F94A5.png" width="20" height="20" alt="🔥" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F918E.png" width="20" height="20" alt="👎" />, tap once on the message (or press and hold, if on iOS). Each reaction appears with its own <strong>unique animation</strong>.</p> +<blockquote> +<p>You can change your default reaction to another emoji in Settings. <strong>Android:</strong> <em>Chat Settings > Quick Reaction</em>. <strong>iOS:</strong> <em>Stickers and Emoji > Quick Reaction</em>.</p> +</blockquote> +<p>Reactions are always on in <strong>private chats</strong>. In <strong>groups and channels</strong>, the admins decide whether to <strong>turn on</strong> reactions and choose <strong>which reaction emoji</strong> are available in the chat. This enables many different ways to collect feedback – from simple likes <img class="emoji" src="//telegram.org/img/emoji/40/E29DA4.png" width="20" height="20" alt="❤️" /> to upvote <img class="emoji" src="//telegram.org/img/emoji/40/F09F918D.png" width="20" height="20" alt="👍" /> and downvote <img class="emoji" src="//telegram.org/img/emoji/40/F09F918E.png" width="20" height="20" alt="👎" /> systems, and beyond.</p> +<!-- +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="LARGE" target="_blank"><img src="SMALL" title="Switching off piles of poo is not guaranteed to affect your lawn." alt="Reaction settings in a channel" srcset="LARGE , 2x" /></a> +</div> +--> + +<blockquote> +<p>Admins can control reactions via their group or channel's <em>Info Page > Edit > Reactions</em>. For more feedback options, try <a href="https://t.me/TelegramTips/209">channel comments</a> and our powerful <a href="https://t.me/TelegramTips/207">polls</a>. </p> +</blockquote> +<h3><a class="anchor" name="spoilers" href="#spoilers"><i class="anchor-icon"></i></a>Spoilers</h3> +<p>To discuss the fates of Ciri or Peter Parker without spoiling the fun for others, select any part of your text when typing and choose the new <strong>'Spoiler' formatting</strong>. This will <strong>hide</strong> the selected part of the message in the chat, as well as in the chat list and notifications.</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/464001469/d419/unZr9SxPrtw.250733/7329c220ed42ab3c8e" style="max-width: 400px;" title="In the final episode █████ totally ██████ the █████." alt="Hidden text for spoilers"> + <source src="/file/464001868/e120/lqGJzUrzb6U.2717520.mp4/5b7ac809540c228988" type="video/mp4"> + </video> +</div> + +<p>When you're ready to see what's hidden, <strong>tap</strong> the spoiler to reveal its text.</p> +<h3><a class="anchor" name="message-translation" href="#message-translation"><i class="anchor-icon"></i></a>Message Translation</h3> +<p>Over <strong>half a billion</strong> people around the world use Telegram not only to stay in touch with friends, but also to chat in <a href="https://t.me/TelegramTips/300">public groups</a> and view content from channels – in every language imaginable. Now you can <strong>translate any message</strong> into another language, right in the app.</p> +<!--NOTE TO TRANSLATORS: It is theoretically possible to use "into your language" (instead of "into another language") – but only if the language of your translation is supported for this feature. Please check first.--> + +<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/464001019/eb11/9Ps5WL0dexE.178503/aa228060ea001adeb8" style="max-width: 400px;" title="For relaxing times..." alt="Message translation"> + <source src="/file/464001292/efe8/6V7dYceAPno.8965113.mp4/dbce8b900a791bd93b" type="video/mp4"> + </video> +</div> + +<p>Enabling <strong>Translation</strong> in <em>Settings > Language</em> adds a dedicated <strong>Translate button</strong> to the context menu when selecting a message. You can also <strong>exclude</strong> any languages you speak fluently – which will <strong>hide the translate button</strong> for those messages.</p> +<blockquote> +<p>Translation is available on all Android devices that support Telegram, but requires iOS 15+ on Apple devices. The list of available languages depends on your phone's operating system.</p> +</blockquote> +<h3><a class="anchor" name="themed-qr-codes" href="#themed-qr-codes"><i class="anchor-icon"></i></a>Themed QR Codes</h3> +<p>You can generate QR codes for <strong>any</strong> users that have a <a href="https://t.me/TelegramTips/44">public username</a>. This also works for <strong>groups, channels and bots</strong>, making it easy to show someone your favorite blog or fan club.</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/464001257/e836/266KS2_-H_4.201434/0da022649c9a206d06" style="max-width: 400px;" title="Something to set as your profile picture in that old messenger you don't use anymore." alt="Themed QR Codes"> + <source src="/file/464001755/cba5/h0BTOwDLwl4.7024447.mp4/db4440d7439aacd9c0" type="video/mp4"> + </video> +</div> + +<p>Tap the new <strong>QR code icon</strong> next to the username of a person (or from a chat’s info page), choose the <strong>colors</strong> and <strong>pattern</strong> that fit best, then print, post or share your QR code to other apps.</p> +<blockquote> +<p>A QR code for your own username can be obtained in <em>Settings</em>. </p> +</blockquote> +<h3><a class="anchor" name="new-menus-for-macos" href="#new-menus-for-macos"><i class="anchor-icon"></i></a>New Menus for macOS</h3> +<p>We've redesigned <strong>all the context menus</strong> in <a href="https://macos.telegram.org/">Telegram for macOS</a> – adding some new <strong>shortcut hints</strong> and introducing beautifully <strong>animated icons</strong> for every single menu item in the app.</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/464001873/dd5a/cSI1iI-N2MA.296588/d75ee0e02f527cd5ff" style="max-width: 400px;" title="Gotta catch em all!" alt="New menus in the macOS app"> + <source src="/file/464001259/d3a8/TPZOLOQaymg.9068597.mp4/a0fb7c7382c1575676" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="more-interactive-emoji" href="#more-interactive-emoji"><i class="anchor-icon"></i></a>More Interactive Emoji</h3> +<p>Our animators also added new <a href="https://telegram.org/blog/chat-themes-interactive-emoji-read-receipts#interactive-emoji">interactive versions</a> of <img class="emoji" src="//telegram.org/img/emoji/40/F09F94A5.png" width="20" height="20" alt="🔥" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F9881.png" width="20" height="20" alt="😁" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09FA4A9.png" width="20" height="20" alt="🤩" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F98A2.png" width="20" height="20" alt="😢" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F98AD.png" width="20" height="20" alt="😭" /> <img class="emoji" src="//telegram.org/img/emoji/40/F09F98B1.png" width="20" height="20" alt="😱" /> <img class="emoji" src="//telegram.org/img/emoji/40/E29D84.png" width="20" height="20" alt="❄️" />. Send any of them in <strong>1-on-1 chats</strong>, then tap to unleash a full-screen effect for you and your partner.</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/464001566/c001/BVsBImeLDg4.210817/40e7142c19bb77bfed" style="max-width: 400px;" title="Let it snow, orr set fire to the rain – entirely up to you." alt="More interactive emoji"> + <source src="/file/464001694/e6b8/z4Jk-LNeVe8.5995598.mp4/860ab28db42e6d5802" type="video/mp4"> + </video> +</div> + +<p>Thank you all for an <a href="https://t.me/durov/173">incredible year</a>. Here's to making <strong>2022</strong> even greater. <img class="emoji" src="//telegram.org/img/emoji/40/F09F8E89.png" width="20" height="20" alt="🎉" /></p> +<div><br></div> + +<p><em>December 30, 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%2Freactions-spoilers-translations&text=Telegram%27s%2012th%20update%20of%20the%20year%20introduces%20reactions%2C%20message%20translation%2C%20themed%20QR%20codes%2C%20hidden%20text%20%28spoilers%29%2C%20and%20more." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more." data-url="https://telegram.org/blog/reactions-spoilers-translations"><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's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more." data-url="https://telegram.org/blog/reactions-spoilers-translations" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/replies-mentions-stickers.html b/data/telegram.org/blog/replies-mentions-stickers.html new file mode 100644 index 0000000000..af38987e40 --- /dev/null +++ b/data/telegram.org/blog/replies-mentions-stickers.html @@ -0,0 +1,257 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Better Replies, Stickers & Invitations</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Better Replies, Stickers & Invitations"> + <meta property="og:image" content="https://telegram.org/file/811140963/15b3/-e2Y4AFQTEQ.192689/1d6f971205bebff61d"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Telegram 4.3 introduces reply and mention badges, quick access to favorite stickers, new invitations, group stickers, and more."> + <meta property="article:published_time" content="2017-09-03T16:18:35+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140963/15b3/-e2Y4AFQTEQ.192689/1d6f971205bebff61d" /> + <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/replies-mentions-stickers" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Better Replies, Stickers & Invitations</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/1547/niq2wel17XA.859597/998b01a68cd20d3abb" target="_blank"><img src="/file/811140963/15b3/-e2Y4AFQTEQ.192689/1d6f971205bebff61d" title="New mention and reply alerts. Click for full-res image."/></a> +</div> + + +<p>Since 2015 when we first introduced <a href="https://telegram.org/blog/replies-mentions-hashtags">replies</a>, the maximum group size on Telegram has increased by 100 times – from 200 max members to <strong>20,000</strong>. These days you can get new mentions or replies in group chats many times during a day – and it’s important not to miss those messages.</p> +<p>Starting with Telegram 4.3, whenever somebody replies to you or mentions you in a group, you’ll notice this straight away by the <strong>‘@’</strong> badge in the chats list:</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/811140620/15aa/o6EG00dVqWE.66165/bca8cf46e6f30071eb" autoplay loop controls muted> + <source src="/file/811140766/17a0/iD2kGW7-X2s.965195.mp4/24ad9a2d2330a770a9" type="video/mp4"> + </video> + </div> +</div> + + +<p>If you have new replies/mentions in a group, you can now instantly reach them by tapping the new <strong>‘@’</strong> button when inside the chat. This button will disappear once you’ve read all the relevant messages.</p> +<h4><a class="anchor" name="favorite-stickers" href="#favorite-stickers"><i class="anchor-icon"></i></a>Favorite Stickers</h4> +<p>Anyone can create and upload stickers on Telegram. As a result, thousands of new stickers are added to the platform each day, and some of us have dozens of sticker sets installed.</p> +<p>Starting today, anyone with five or more sticker sets installed can mark individual stickers as ‘favorites’, and have them always accessible at the top of the sticker panel in the ‘star’ section. </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/811140777/16ec/f30uHIV_zYs.84929/0710782a05f6171d14" autoplay loop controls muted> + <source src="/file/811140209/1ab8/k_rSuy9WkmY.242920.mp4/8a105bf516a60e52a3" type="video/mp4"> + </video> + </div> +</div> + +<h4><a class="anchor" name="stickers-of-the-group" href="#stickers-of-the-group"><i class="anchor-icon"></i></a>Stickers of the Group</h4> +<p>Speaking of stickers, large groups with 100 members and more can now choose an official sticker set for all the members of the group to see and use while they're chatting in the group — without the need of adding it to their panels.</p> +<div class="blog_image_wrap"> + <a href="/file/811140619/160b/2rYIDVfsRQk.48371/1f58c5d8407aa3c916" target="_blank"><img src="/file/811140619/160b/2rYIDVfsRQk.48371/1f58c5d8407aa3c916" title="Group Stickers" /></a> + <p>Group Stickers</p> +</div> + +<h4><a class="anchor" name="invite-friends" href="#invite-friends"><i class="anchor-icon"></i></a>Invite Friends</h4> +<p>The ‘Invite Friends’ section (accessible from Contacts) has been completely redesigned. Your contacts that are not on Telegram yet but have many of their friends already using it are now listed at the top. If you invite any of them to join, they’ll be welcomed by tens of Telegram veterans among their contacts:</p> +<div class="blog_image_wrap"> + <a href="/file/811140478/19f6/qXRhPVw9EWA.58702/2fb457ae0320d6e535" target="_blank"><img src="/file/811140478/19f6/qXRhPVw9EWA.58702/2fb457ae0320d6e535" title="Invite Friends to Telegram" /></a> + <p>Invite Friends to Telegram</p> +</div> + +<h4><a class="anchor" name="and-more" href="#and-more"><i class="anchor-icon"></i></a>…And More</h4> +<p>As always with new releases, we've included several small goodies you may also like:</p> +<ul> +<li>Twitch videos are now supported in the Telegram in-app player, so you can watch Twitch streams in Picture-in-Picture mode while chatting with your friends.</li> +<li>When on a Telegram voice call, you can now check the signal strength thanks to the new indicator. </li> +<li>On iOS, you can edit any photo you pasted directly to a chat from clipboard before sending.</li> +<li>On Android, when forwarding a message, you can long tap to select multiple recipients. </li> +<li>On Android, when viewing photos in Shared Media, you can go to the place in chat where the photo was posted. </li> +<li>On Android, if you have many new messages in many active chats, synchronization will happen much, much faster. </li> +</ul> +<div><br></div> + +<p>Summer is over. Stay tuned, another update is already brewing in our dungeons! </p> +<p><em>September 3, 2017<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%2Freplies-mentions-stickers&text=Meet%20Telegram%204.3%3A%20Reply%20%26%20mention%20badges%2C%20quick%20access%20to%20favorite%20stickers%2C%20new%20invitations%20and%20more" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Meet Telegram 4.3: Reply & mention badges, quick access to favorite stickers, new invitations and more" data-url="https://telegram.org/blog/replies-mentions-stickers"><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="Meet Telegram 4.3: Reply & mention badges, quick access to favorite stickers, new invitations and more" data-url="https://telegram.org/blog/replies-mentions-stickers" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/scheduled-reminders-themes.html b/data/telegram.org/blog/scheduled-reminders-themes.html new file mode 100644 index 0000000000..6d9f505a90 --- /dev/null +++ b/data/telegram.org/blog/scheduled-reminders-themes.html @@ -0,0 +1,264 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Scheduled Messages, Reminders, Custom Cloud Themes and More Privacy</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Scheduled Messages, Reminders, Custom Cloud Themes and More Privacy"> + <meta property="og:image" content="https://telegram.org/file/464001892/1/oEk06NFuzv8.58627/8e74baf674331878f0"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="In our previous update, we added a handy menu when you hold the send button. Today we're populating this menu with a new option that helps you plan ahead. Hold the ‘Send’ button in any chat and select ‘Schedule Message’ to automatically send things at a specified time in the future."> + <meta property="article:published_time" content="2019-09-05T19:45:04+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001892/1/oEk06NFuzv8.58627/8e74baf674331878f0" /> + <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/scheduled-reminders-themes" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Scheduled Messages, Reminders, Custom Cloud Themes and More Privacy</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/464001052/1/HbXrd_3yyYg.20769.gif/2b0cee4abdbb26005b" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001458/1/89YiOevR9G8.150216/4d5c2d103062a98952" target="_blank"><img src="/file/464001892/1/oEk06NFuzv8.58627/8e74baf674331878f0" srcset="/file/464001458/1/89YiOevR9G8.150216/4d5c2d103062a98952, 1200w" title="Were you reading our update announcements? Or were you looking at the woman in the red dress?" alt="Introducing Scheduled Messages, Reminders, Custom Cloud Themes and More Privacy"/></a> +</div> + +<p>In our previous update, we added a <a href="https://telegram.org/blog/silent-messages-slow-mode">handy menu</a> when you hold the send button. Today we're populating this menu with a new option that helps you plan ahead.</p> +<p>Hold the <em>‘Send’</em> button in any chat and select <strong>‘Schedule Message’</strong> to automatically send things at a specified time in the future (DeLorean not included).</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/464001071/1/hNWoUyfsgy4.72853/9e4c605e40eec6f2ed" style="max-width: 400px;" title="It's like a message in a bottle except this bottle was coded by a highly caffeinated team of developers." alt="Demo: Type some text, press and hold the send button, choose 'Schedule Message' and select the time when it will be sent."> + <source src="/file/464001257/1/QQ9SUZZGFEw.1373320.mp4/429964d0eb57c7849f" type="video/mp4"> + </video> +</div> + +<p>Scheduling also works in your <em>‘Saved Messages’</em> chat, turning your planned posts into <strong>reminders</strong>. Be your own time-travelling secretary – whether it's about a dentist appointment next week, or waking up in time for pizza delivery.</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/464001290/1/RuDeKb00hXc.59265/82506bad6aaec271f9" style="max-width: 400px;" title="Who let Grandma into my Saved Messages again?" alt="Demo: Scheduling a message in your 'Saved Messages' chat creates a reminder. When the time comes, you get a notification from Telegram with the message you chose."> + <source src="/file/464001582/1/H7KX-3IIYPA.1187154.mp4/5fb4a6a8cd4aec3450" type="video/mp4"> + </video> +</div> + +<p>Whenever a scheduled message or reminder is sent, you get a special <strong>notification</strong> marked with a <img class="emoji" src="//telegram.org/img/emoji/40/F09F9385.png" width="20" height="20" alt="📅" />, so you don't get caught off-guard by messages you planned in the past.</p> +<h3><a class="anchor" name="custom-cloud-themes" href="#custom-cloud-themes"><i class="anchor-icon"></i></a>Custom Cloud Themes</h3> +<p>You could first <strong>customize Telegram's appearance</strong> way back in <a href="https://telegram.org/blog/android-themes">2017</a>. Today's update makes this easier than ever across all platforms, including our native desktop apps.</p> +<p>Choose a pre-set <strong>accent color</strong> or pick something unique from the <strong>color wheel</strong>, and the app will adjust all elements accordingly. See how it looks in your favorite color, blue – no, <a href="https://www.youtube.com/watch?v=aW7QABOM_os">yellow!</a></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/464001442/1/FRvKgvTrym8.55755/3a956086cd2603d8d5" style="max-width: 400px;" title="And for the next miracle, I'm going to turn this water into FUNK!" alt="Video showing the different new accent colors in the ' Mono' theme for Android"> + <source src="/file/464001209/1/Oj-VNwoMWqc.1800077.mp4/8eafd6a91c1cef700d" type="video/mp4"> + </video> +</div> + +<p>You can now easily <strong>create new themes</strong> based on your color and wallpaper choices, then fine-tune them manually or share right away. Each theme has a <strong>sharing link</strong> which allows anyone to <strong>switch</strong> to your theme and wallpaper in just two taps.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001412/1/BVSCe06UlTY.35275/bb6bf51d827393ccdc" target="_blank"><img src="/file/464001093/1/L2CTXD9EFAc.88603/47185a9777b528bf1d" title="No, we won't let you change everything to white on white, sorry. Purple on purple, however..." alt="Creating a new theme on iOS" srcset="/file/464001412/1/BVSCe06UlTY.35275/bb6bf51d827393ccdc , 2x" /></a> +</div> + +<p>When you change your theme, it gets <strong>updated</strong> for all its users. This way you can update your app's looks to evolve as Telegram <a href="https://telegram.org/blog/6-years">updates</a> – or to change with the seasons.</p> +<p>To try out cloud themes, take a look at <a href="https://t.me/addtheme/skyblue">Sky Blue</a> or <a href="https://t.me/addtheme/desert">Desert</a>. These will work for both iOS and Android, and we solemnly swear to update them to acid green on orange when you least expect it.</p> +<h3><a class="anchor" name="redesigned-message-options" href="#redesigned-message-options"><i class="anchor-icon"></i></a>Redesigned Message Options</h3> +<p>On iOS, we have condensed message options into a <strong>single menu</strong> for forwarding, replying and more. You can now also <strong>select any portion of the message</strong> to copy or share, instead of only the full text.</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/464001885/1/UgTi3wzAXFQ.64884/14dd51e166194a18fa" style="max-width: 400px;" title="We reserved this spot for a joke about God's Pliers from West Bromwich, but it looks like Google removed them from Street View. Check out these creepy lips instead: 12°22’13.32″N, 23°19’20.18″E" alt="Video showing the new options menu and text selection"> + <source src="/file/464001311/1/6yMOG43EI_4.946970.mp4/d12cfc91dc56ffa053" type="video/mp4"> + </video> +</div> + + +<h3><a class="anchor" name="new-privacy-settings" href="#new-privacy-settings"><i class="anchor-icon"></i></a>New Privacy Settings</h3> +<p>Telegram groups can be <strong>public</strong> and may hold up to <strong>200,000</strong> members each. When launching them, we were thinking of campuses, conventions and spaces where you could properly brag about your cats. However, Telegram communities are also increasingly used by people to organize themselves in the face of <a href="https://www.reuters.com/investigates/special-report/hongkong-protests-protesters/">oppression</a>.</p> +<p>We <a href="https://telegram.org/blog/200-million">believe</a> that all people have a right to <strong>express their opinions</strong> and communicate <strong>privately</strong>. To further protect these rights, we‘re expanding Telegram’s arsenal of <strong>Privacy Settings</strong> today.</p> +<p>If you set <em>Who Can See My Phone Number</em> to <em>‘Nobody’</em>, a new option will appear below, allowing you to control your visibility for those who <strong>already have it</strong>. Setting <em>Who Can Find Me By My Number</em> to <em>‘My Contacts’</em> will ensure that random users who add your number as a contact are <strong>unable to match</strong> your profile to that number.</p> +<p>If, like the majority of our users, you rely on uploading phone contacts to identify friends and family members on the app, this setting won't get in your way.</p> +<h3><a class="anchor" name="more-animated-emoji" href="#more-animated-emoji"><i class="anchor-icon"></i></a>More Animated Emoji</h3> +<p>Regardless of whether you‘re fighting for freedom or queuing for coffee, you’ll likely find a use for the new additions to our <strong>animated emoji</strong> family.</p> +<p>As <a href="https://telegram.org/blog/silent-messages-slow-mode#animated-emoji">before</a>, send a single <img class="emoji" src="//telegram.org/img/emoji/40/F09F9881.png" width="20" height="20" alt="😁" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F98A7.png" width="20" height="20" alt="😧" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F98A1.png" width="20" height="20" alt="😡" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F92A9.png" width="20" height="20" alt="💩" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F98A2.png" width="20" height="20" alt="😢" /> or <img class="emoji" src="//telegram.org/img/emoji/40/F09F98AE.png" width="20" height="20" alt="😮" /> to unleash their spirit in motion.</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/464001995/2/XtMtPmIXs2I.26856/5b59e850fcbd910edb" style="max-width: 400px;" title="Chocolate ice cream by WhatsApp from Facebook" alt="Video showing an animated turd being sent. This looks better than it sounds."> + <source src="/file/464001277/1/764Dw_4E4eQ.772929.mp4/533006a308a2469c1d" type="video/mp4"> + </video> +</div> + +<p>And that's all, folks! While waiting for our next update, check out this <a href="https://telegram.org/blog/6-years">brief history of Telegram</a>. Or, if you're not into reading, run a bath and enjoy these animated <a href="https://t.me/addstickers/UtyaDuck">rubber duck</a> stickers.</p> +<div><br></div> + +<p><em>September 5, 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%2Fscheduled-reminders-themes&text=Scheduled%20Messages%2C%20Reminders%2C%20Custom%20Cloud%20Themes%20and%20More%20Privacy" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Scheduled Messages, Reminders, Custom Cloud Themes and More Privacy" data-url="https://telegram.org/blog/scheduled-reminders-themes"><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="Scheduled Messages, Reminders, Custom Cloud Themes and More Privacy" data-url="https://telegram.org/blog/scheduled-reminders-themes" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/shared-links.html b/data/telegram.org/blog/shared-links.html new file mode 100644 index 0000000000..f7034c0274 --- /dev/null +++ b/data/telegram.org/blog/shared-links.html @@ -0,0 +1,221 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Shared Links and Recent Searches</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Shared Links and Recent Searches"> + <meta property="og:image" content="https://telegram.org/file/811140859/3/X-BRagSb1gY/a724bea6a1f9e10007"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Now you can browse and search for links in Telegram chats using the new 'Shared Links' section. "> + <meta property="article:published_time" content="2015-08-20T13:19:34+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140859/3/X-BRagSb1gY/a724bea6a1f9e10007" /> + <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/shared-links" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Shared Links and Recent Searches</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140859/3/X-BRagSb1gY/a724bea6a1f9e10007" class="blog_side_image"/> +</div> + +<p>Have you ever tried to find a link somebody shared in a busy chat? It’s not always easy. Of course, you could use <a href="/blog/search-and-media">message search</a>, but now it's even easier – simply go to the new <strong>Shared Links</strong> section in Shared Media. Voila!</p> +<center><div> + <a href="/file/811140151/1/0cRPOlhcf8k/9aca5488aaea9117d4" target="_blank"><img src="/file/811140151/1/0cRPOlhcf8k/9aca5488aaea9117d4" title="Tap the header, then select Shared Links" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140518/1/KNVWaNDhRMY/3789c62244629780fa" target="_blank"><img src="/file/811140518/1/KNVWaNDhRMY/3789c62244629780fa" title="Shared Links section" style="width: 195px; padding: 10px 5px" /></a><br><br> +</div></center> + +<p>You will see the text of the message that accompanied the link, or the <a href="/blog/link-preview">rich preview</a> data in case the link was sent by itself. This feature is currently available for <a href="/dl/ios">iOS</a> and <a href="/dl/android">Android</a>, but will make its way to our other apps soon.</p> +<h3><a class="anchor" name="recent-search-results" href="#recent-search-results"><i class="anchor-icon"></i></a>Recent Search Results</h3> +<p>By the way, as of the previous update on both <a href="/dl/ios">iOS</a> and <a href="/dl/android">Android</a>, tapping the universal search field now gives you quick access to recent search results.</p> +<center><div> + <a href="/file/811140834/1/BNwsg-kz-Ic/e075163a8f1d0e56de" target="_blank"><img src="/file/811140834/1/BNwsg-kz-Ic/e075163a8f1d0e56de" title="Recents on iOS" style="max-height: 350px; padding: 10px 5px" /></a> + + <a href="/file/811140899/1/pmHzt3vvQq0/b7fc8fe7820a71fd4c" target="_blank"><img src="/file/811140899/1/pmHzt3vvQq0/b7fc8fe7820a71fd4c" title="Recents on Android" style="max-height: 350px; padding: 10px 5px" /></a><br><br> +</div></center> + +<p>We‘re ramping up for massive updates this Fall. Stay tuned!</p> +<div><br></div> + +<p><em>The Telegram Team,<br>August 20, 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%2Fshared-links&text=Now%20you%20can%20browse%20and%20search%20for%20links%20in%20Telegram%20chats%20using%20the%20new%20%27Shared%20Links%27%20section.%20" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Now you can browse and search for links in Telegram chats using the new 'Shared Links' section. " data-url="https://telegram.org/blog/shared-links"><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="Now you can browse and search for links in Telegram chats using the new 'Shared Links' section. " data-url="https://telegram.org/blog/shared-links" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/silent-messages-slow-mode.html b/data/telegram.org/blog/silent-messages-slow-mode.html new file mode 100644 index 0000000000..9c474f5cd9 --- /dev/null +++ b/data/telegram.org/blog/silent-messages-slow-mode.html @@ -0,0 +1,296 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Silent Messages, Slow Mode, Admin Titles and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Silent Messages, Slow Mode, Admin Titles and More"> + <meta property="og:image" content="https://telegram.org/file/464001111/1/56NLQbuxtYE.64680/98679eab7fa8081def"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="The previous update brought more movement to Telegram – this one brings more peace of mind. You can now message friends freely even if you know they are sleeping, studying or attending a meeting."> + <meta property="article:published_time" content="2019-08-09T15:27:45+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001111/1/56NLQbuxtYE.64680/98679eab7fa8081def" /> + <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/silent-messages-slow-mode" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Silent Messages, Slow Mode, Admin Titles and More</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/464001368/1/GdI18kFZsR0.14999.gif/ee4d811764bd6d7fe8" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001399/1/Jvr66kjpSoc.178482/0525953383088c3ff6" target="_blank"><img src="/file/464001111/1/56NLQbuxtYE.64680/98679eab7fa8081def" srcset="/file/464001399/1/Jvr66kjpSoc.178482/0525953383088c3ff6, 1200w" title="The new Telegram update helps you do things slowly and silently, like a ninja. In fact, there are at least three ninjas in this picture. They're just very good at being ninjas, so you can't see them." alt="5.10 update cover"/></a> +</div> + +<p>The previous update brought <a href="https://telegram.org/blog/animated-stickers">more movement</a> to Telegram – this one brings more peace of mind. You can now message friends freely when you know they are sleeping, studying or attending a meeting.</p> +<p>Simply <strong>hold</strong> the Send button to have any message or media delivered <strong>without sound</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/464001770/1/ZXaVFVgTqzE.30702/b5d543fba3bd5e6b6a" style="max-width: 400px;" title="Choose 'Send Without Sound' to deliver the message with a silent notification, so your recipient can sleep soundly instead." alt="Demo video: Hold the 'Send button', then select 'Send without sound'"> + <source src="/file/464001926/1/i2b-Z9c_7Vk.657154.mp4/c1c1b84425c30d704d" type="video/mp4"> + </video> +</div> + +<p>Your recipient will get a <strong>notification</strong> as usual, but their phone won't make a sound – even if they forgot to enable the <em>Do Not Disturb</em> mode.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001024/1/zouQ2e5TucM.26796/1f1728733cfa283b7a" target="_blank"><img src="/file/464001361/1/JB81eEgsPCI.10660/1d1126134d0c523235" title="Don't worry if your friend is meditating on a mountain. They'll only get distracted by your message if they were faking it." alt="Silent notification on the lock screen" srcset="/file/464001024/1/zouQ2e5TucM.26796/1f1728733cfa283b7a , 2x" /></a> +</div> + +<p>This also works in <strong>groups</strong>, should you get an urgent idea at five in the morning – but not urgent enough to wake up everyone in your work chat.</p> +<h3><a class="anchor" name="slow-mode" href="#slow-mode"><i class="anchor-icon"></i></a>Slow Mode</h3> +<p>In case a group you manage is getting hard to follow, the <a href="https://telegram.org/blog/permissions-groups-undo">Group Permissions</a> section now features a <strong>Slow Mode</strong> switch.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001183/1/YnAl88d6J38.33018/4852608cfd1d53abc6" target="_blank"><img src="/file/464001847/1/CJFM5qRbIhs.13634/cd7391ce9aec803545" title="Say. Goodbye. To. Single. Word. Messages. Sent. One. After. The. Other." alt="Slow Mode settings in the Group Permissions section" srcset="/file/464001183/1/YnAl88d6J38.33018/4852608cfd1d53abc6 , 2x" /></a> +</div> + +<p>When an admin enables Slow Mode in a group, you will only be able to send <strong>one message</strong> per the interval they choose. A timer will show how long you have to wait before sending your next message.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001250/1/h-wn3-SodA0.43155/591369583aa8882dbd" target="_blank"><img src="/file/464001736/2/xIVcMt__X5w.18129/9edc043904a6bdbf51" title="Coincidentally, 55 seconds is exactly how long it takes to tune out of an average of 7 boring presentations – or heat up a slice of last night’s pizza." alt="Slow Mode timer as seen in a user's input field" srcset="/file/464001250/1/h-wn3-SodA0.43155/591369583aa8882dbd , 2x" /></a> +</div> + +<p>Slow Mode can make conversations in the group more orderly, while raising the value of each individual message. Keep it on permanently, or toggle as necessary to throttle rush hour traffic.</p> +<h3><a class="anchor" name="admin-titles" href="#admin-titles"><i class="anchor-icon"></i></a>Admin Titles</h3> +<p>If new time-lord powers aren't enough, group owners can now set <strong>custom titles</strong> for admins like ‘Meme Queen’, ‘Spam Hammer’ or ‘El Duderino’.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001544/1/LRRiMlJ0L4M.61971/d591660f9f537cb31d" target="_blank"><img src="/file/464001918/1/yxL9bQWmWbs.26522/2ea3926168bdeb44e9" title="16 characters max, so 'The White Flame Dancing on the Barrows of his Enemies' won't fit. Sorry, Your Imperial Majesty." alt="Custom title section on the admin rights screen" srcset="/file/464001544/1/LRRiMlJ0L4M.61971/d591660f9f537cb31d , 2x" /></a> +</div> + +<p>As with the default admin labels, custom titles are shown with every message in the group so members know that they‘re talking to the designated ’Myth Buster'.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001642/1/GtQTKQ3ZX1E.39866/8f452d4a6bdf6a6379" target="_blank"><img src="/file/464001349/1/rR47R99DEu0.16226/4d714c603787147475" title="We've never seen this trick work on real-life bouncers, they just keep doing their 'Sorry folks, there's a list and you're not on it' thing." alt="A message from an admin with a custom title in a group" srcset="/file/464001642/1/GtQTKQ3ZX1E.39866/8f452d4a6bdf6a6379 , 2x" /></a> +</div> + +<p>To add a custom title, edit the admin's <a href="https://telegram.org/blog/admin-revolution#admin-rights">rights</a> in Group Settings.</p> +<h3><a class="anchor" name="timestamps-and-improved-scrubbing" href="#timestamps-and-improved-scrubbing"><i class="anchor-icon"></i></a>Timestamps and Improved Scrubbing</h3> +<p>Videos now display <strong>thumbnail previews</strong> as you scrub through, to help you find the moment you were looking for.</p> +<p>If you add a timestamp like <a href="https://youtu.be/oHg5SJYRHA0?t=45"><strong>0:45</strong></a> to a <strong>video caption</strong>, it will be automatically highlighted as a link. Tapping on a timestamp will play the video from the right spot. This also works if you mention a timestamp when <strong>replying</strong> to a video.</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/464001178/1/WIFjCuGmm0Y.54810/3a7e1fd654580c35cb" style="max-width: 400px;" title="A scrub is a guy that can't get no love from me \ Hangin' out the passenger side \ Of his best friend's ride \ Trying to holla at me" alt="Demo: Video scrubbing with frame previews"> + <source src="/file/464001238/2/pMEs8f2nAuA.1515967.mp4/6b82e73e02ddaf16d7" type="video/mp4"> + </video> +</div> + +<p>Timestamps are also supported for <strong>YouTube</strong> videos, in case you want to mark your favorite moments when sharing a Kurzgesagt episode.</p> +<h3><a class="anchor" name="animated-emoji" href="#animated-emoji"><i class="anchor-icon"></i></a>Animated Emoji</h3> +<p>When you have <a href="https://telegram.org/blog/animated-stickers">animated stickers</a>, why not go one step further and get <strong>animated emoji</strong>? To check them out, send a single <img class="emoji" src="//telegram.org/img/emoji/40/E29DA4.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/F09F9892.png" width="20" height="20" alt="😒" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F98B3.png" width="20" height="20" alt="😳" /> or <img class="emoji" src="//telegram.org/img/emoji/40/F09FA5B3.png" width="20" height="20" alt="🥳" /> to any chat.</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/464001580/1/_-f2pE8yc5M.17132/dc6828366e3c827156" style="max-width: 400px;" title="Spoiler Alert" alt="A video showing an animated :thumbsup: emoji getting sent to a chat"> + <source src="/file/464001527/1/wUbRkMUFGAo.532485.mp4/64186ff59214142b71" type="video/mp4"> + </video> +</div> + +<p>If your life feels a little too animated recently, Sticker Settings now offer a toggle for <strong>looped playback</strong>. When disabled, animated stickers will play just once then stay still.</p> +<h3><a class="anchor" name="android-39s-new-attachment-menu" href="#android-39s-new-attachment-menu"><i class="anchor-icon"></i></a>Android's New Attachment Menu</h3> +<p>Android’s attachment menu got a makeover, giving media more real estate. <strong>Larger thumbnails</strong> make it easier to pick photos and videos at a glance, and swiping up will reveal your full <strong>Gallery</strong> for better browsing.</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/464001701/1/ReZVPSn2-xE.49958/cb17aa7bb1cabf08ea" style="max-width: 400px;" title="That turtle really ties the video together." alt="A video showing the new attachment menu"> + <source src="/file/464001027/1/qABWi9rLGYQ.1808038.mp4/d3cbaa00117a80379a" type="video/mp4"> + </video> +</div> + +<p>You can scroll left and right through the other attachment options like locations, polls and music. When selecting media, tap ‘…’ to send items as uncompressed documents.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001381/1/8WOVw16Z--c.107385/f332a3c9ddd547b226" target="_blank"><img src="/file/464001360/1/jrOHAYv7BEw.41067/fbe6c7aa2c7e4b6753" title="Salvador Dali was known to be many things, but never a cat. He did own an ocelot though." alt="A screenshot of the options from the '...' menu" srcset="/file/464001381/1/8WOVw16Z--c.107385/f332a3c9ddd547b226 , 2x" /></a> +</div> + +<h3><a class="anchor" name="accent-colors-for-night-mode-on-ios" href="#accent-colors-for-night-mode-on-ios"><i class="anchor-icon"></i></a>Accent Colors for Night Mode on iOS</h3> +<p>iOS users can now choose <strong>accent colors</strong> for <strong>night themes</strong>. The night doesn't always have to be black and blue, after all.</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/464001600/1/pOEnvJNqc7U.43809/d0dee65209fa4d1765" style="max-width: 400px;" title="Random fact: The Color of Night is a 1994 American film starring Bruce Willis with a Rotten tomatoes rating of 21%." alt="A video showing the various new accent colors available for night themes"> + <source src="/file/464001089/1/3VwPoCCI5us.2415204.mp4/b070d3dbb8a5ccb7c0" type="video/mp4"> + </video> + </div> + +<h3><a class="anchor" name="comments-widget" href="#comments-widget"><i class="anchor-icon"></i></a>Comments Widget</h3> +<p><a href="https://comments.app/">Comments.App</a>, our <a href="https://telegram.org/blog/privacy-discussions-web-bots#meet-seamless-web-bots">tool</a> for commenting on <strong>channel posts</strong>, now lets you add a <strong>comments widget</strong> to your <strong>website</strong>.</p> +<p>With the widget in place, Telegram users will be able to log in with just two taps and <strong>leave comments</strong> with text and <strong>photos</strong>, as well as <strong>like</strong>, <strong>dislike</strong> and <strong>reply</strong> to comments from others.</p> +<p>They can also <strong>subscribe</strong> to comments and get notifications from <a href="https://t.me/discussbot">@DiscussBot</a>.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001950/1/Xi5i6Jh0Vyw.76147/d6d2083db72b094bda" target="_blank"><img src="/file/464001579/1/7cWg4rZbMoY.29134/2edf018df69b28a879" title="Who's watching this in 2019, right?" alt="A screenshot of the Comments Widget featuring a photo sent as a reply to another comment" srcset="/file/464001950/1/Xi5i6Jh0Vyw.76147/d6d2083db72b094bda , 2x" /></a> +</div> + +<p>Open <a href="/blog/silent-messages-slow-mode">this page</a> in your browser to try the new widget – it doesn't support <a href="https://instantview.telegram.org">Instant View</a> pages… yet. <img class="emoji" src="//telegram.org/img/emoji/40/F09F9888.png" width="20" height="20" alt="😈" /></p> +<p>That’s all for now, and don’t worry — the next Telegram update won’t be sent silently.</p> +<div><br></div> + +<p><em>August 9, 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%2Fsilent-messages-slow-mode&text=Introducing%20Silent%20Messages%20and%20Slow%20Mode%20to%20bring%20a%20little%20peace%20and%20quiet%20when%20you%20need%20it.%20Also%20in%20this%20update%3A%20custom%20admin%20titles%2C%20timestamp%20links%20for%20videos%2C%20animated%20emoji%2C%20a%20comments%20widget%20for%20websites%2C%20and%20more" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing Silent Messages and Slow Mode to bring a little peace and quiet when you need it. Also in this update: custom admin titles, timestamp links for videos, animated emoji, a comments widget for websites, and more" data-url="https://telegram.org/blog/silent-messages-slow-mode"><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 Silent Messages and Slow Mode to bring a little peace and quiet when you need it. Also in this update: custom admin titles, timestamp links for videos, animated emoji, a comments widget for websites, and more" data-url="https://telegram.org/blog/silent-messages-slow-mode" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/stickers-meet-art-and-history.html b/data/telegram.org/blog/stickers-meet-art-and-history.html new file mode 100644 index 0000000000..bda6891a72 --- /dev/null +++ b/data/telegram.org/blog/stickers-meet-art-and-history.html @@ -0,0 +1,338 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>When Stickers Meet Art And History</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="When Stickers Meet Art And History"> + <meta property="og:image" content="https://telegram.org/file/811140077/1/qsFxxWC7kQs/2a14d66f3f6d2a4431"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="When Stickers Meet Art And History – #Telegram introduces its first 14 stickers."> + <meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140077/1/qsFxxWC7kQs/2a14d66f3f6d2a4431" /> + <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-meet-art-and-history" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">When Stickers Meet Art And History</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140077/1/qsFxxWC7kQs/2a14d66f3f6d2a4431" class="blog_side_image"/> +</div> + +<p>Today Telegram <a href="/blog/stickers">launched a new kind of stickers</a> – a free emotion-based platform for artists. We mentioned several <a href="/blog/stickers#sharing-your-own-stickers">technological and architectural</a> points that make Telegram stickers a completely new experience – <strong>open</strong>, <strong>free</strong> and <strong>limitless</strong>. But there’s another way in which they are unique, and it also has a lot to do with our values.</p> +<p>When designing our first set of stickers, we didn’t want to use just any cartoon characters to express emotions. Instead we decided to portray people we respect most. These are great artists, poets, actors, scientists and leaders.</p> +<p>We'd like to give them credit for their contributions to human civilization, and we hope that millions of Telegram users share our respect for these outstanding individuals.<br>Don't forget to check out Part 2: <a href="https://telegram.org/blog/moar-stickers">MOAR stickers!</a></p> +<div> <a href="/file/811140066/1/7fM-CwKk4F0/53f9f1fc731c63547d" target="_blank"><img src="/file/811140066/1/7fM-CwKk4F0/53f9f1fc731c63547d" title="Abraham Licoln" class="dev_page_image" /></a></div> +</div> + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Abraham Lincoln approves <img src="/file/811140831/1/Ah6qExeZKWo/90183392ebb988112a" title="Right" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140579/1/i974MzakdcM/7752f8ee0262a57fdd" target="_blank"><img src="/file/811140579/1/i974MzakdcM/7752f8ee0262a57fdd" title="Salvador Dali" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Salvador Dali unlocks achievement <img src="/file/811140502/2/tUfYsbpgx7o/1fae8612e2f8558fc4" title="FTW" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140981/1/9ypk7z_8T4Q/4381a7a74256fe0b9b" target="_blank"><img src="/file/811140981/1/9ypk7z_8T4Q/4381a7a74256fe0b9b" title="Albert Einstein" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Albert Einstein explains <img src="/file/811140316/1/guP-HNOksig/aef28a812eac422bc1" title="whoa" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140053/1/A6JVcXDZiZM/d28d4a5029d010e953" target="_blank"><img src="/file/811140053/1/A6JVcXDZiZM/d28d4a5029d010e953" title="Mahatma Gandhi" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Mahatma Gandhi likes where this is going <img src="/file/811140447/1/v9RA22hHx-s/64bc797930fa5c1e3b" title="scowl" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> +<a href="/file/811140437/2/VdpCps5zB1o/c906dac5e81170dc74" target="_blank"><img src="/file/811140437/2/VdpCps5zB1o/c906dac5e81170dc74" title="Charlie Chaplin" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Charlie Chaplin had a bad day <img src="/file/811140300/1/ewTRjfDhtsg/276e996b92d26708a1" title="ow" style="width: 25px; margin-bottom: 5px"></center> +</div> + +<hr> +<div> + <a href="/file/811140823/2/gEXq-ZISs9g/55f6c9c9f87c4dceb0" target="_blank"><img src="/file/811140823/2/gEXq-ZISs9g/55f6c9c9f87c4dceb0" title="Steve Jobs" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Steve Jobs laughs out loud <img src="/file/811140523/1/Iwd8JIWPfso/2a7d0395d8a93f506c" title="LOL" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140332/2/KJzzslK440U/b11181fd7bbf1c56aa" target="_blank"><img src="/file/811140332/2/KJzzslK440U/b11181fd7bbf1c56aa" title="Franz Kafka" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Kafka is not happy. He never is... <img src="/file/811140678/1/rAmnAd2wWEM/241c29813fda34193a" title="alien" style="width: 25px; margin-bottom: 5px"></center> +</div> + +<hr> +<div> + <a href="/file/811140517/1/yDccYORy60c/da6c69de6ad5afcb8f" target="_blank"><img src="/file/811140517/1/yDccYORy60c/da6c69de6ad5afcb8f" title="John Lennon" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>John Lennon, but... <img src="/file/811140024/1/2aY4bDtXnps/c60b8f0792ee917fd6" title="but..." style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140446/1/ZOVGuV17wSI/932a093624e7bec4c9" target="_blank"><img src="/file/811140446/1/ZOVGuV17wSI/932a093624e7bec4c9" title="Richard Wagner" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Richard Wagner's told you <img src="/file/811140844/2/mm1JqAZbQqk/5a1f631dd316950507" title="a-ha" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140750/1/KwtOAxwo1SA/452620c767366798d3" target="_blank"><img src="/file/811140750/1/KwtOAxwo1SA/452620c767366798d3" title="Nikola Tesla" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Nikola Tesla is unimpressed <img src="/file/811140300/1/ewTRjfDhtsg/276e996b92d26708a1" title="oww" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140679/1/qyTW5F98KLA/ed2db7cc24b8938e07" target="_blank"><img src="/file/811140679/1/qyTW5F98KLA/ed2db7cc24b8938e07" title="J.R.R. Tolkien" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>One doesn't simply send a Tolkien sticker <img src="/file/811140729/2/xBtrTz6Wk9g/a5d5af664fc8c90d3e" title="OK" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140849/1/cpP6i93xxaA/c082e8a2ad59522cfd" target="_blank"><img src="/file/811140849/1/cpP6i93xxaA/c082e8a2ad59522cfd" title="Mark Twain" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>Mark Twain, huh? <img src="/file/811140294/2/3Np8FKPHEkc/f2274a68eea44de10b" title="huh" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140811/2/FJWJRL9vxME/b44ed832aced2e6dc7" target="_blank"><img src="/file/811140811/2/FJWJRL9vxME/b44ed832aced2e6dc7" title="Sigmund Freud" class="dev_page_image" /></a> +</div> + +<div style="padding:10px; font-size: 24px; font-weight: bold; line-height: 1.2"> +<center>That Freudian scowl... <img src="/file/811140447/1/v9RA22hHx-s/64bc797930fa5c1e3b" title="scowl" style="width: 25px; margin-bottom: 5px" /></center> +</div> + +<hr> +<div> + <a href="/file/811140117/2/dGMVFePbDos/68ae9b4e90b10c1fb8" target="_blank"><img src="/file/811140117/2/dGMVFePbDos/68ae9b4e90b10c1fb8" title="Marilyn Monroe" class="dev_page_image" /></a> +</div> + + +<div style="padding:10px; font-size:24px; font-weight:bold; line-height:1.2"> +<center>And the famous Monroe kiss <img src="/file/811140403/2/YYXjdQtnuZI/9e0211720cde723547" title="Kiss1" style="width: 25px; margin-bottom: 5px" /> <img src="/file/811140481/1/Xjt78FiXW9g/3709065fd99adcba90" title="Kiss2" style="width: 25px; margin-bottom: 5px" /> <img src="/file/811140548/2/s2p7eQFgwQc/f71037c4b8aad9603f" title="emo-monroe3.gif, 891b" style="width: 25px; margin-bottom: 5px" /> </center> +</div></div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fstickers-meet-art-and-history&text=When%20Stickers%20Meet%20Art%20And%20History%20%E2%80%93%20%23Telegram%20introduces%20its%20first%2014%20stickers." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="When Stickers Meet Art And History – #Telegram introduces its first 14 stickers." data-url="https://telegram.org/blog/stickers-meet-art-and-history"><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="When Stickers Meet Art And History – #Telegram introduces its first 14 stickers." data-url="https://telegram.org/blog/stickers-meet-art-and-history" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/stickers-revolution.html b/data/telegram.org/blog/stickers-revolution.html new file mode 100644 index 0000000000..e60ea9afc4 --- /dev/null +++ b/data/telegram.org/blog/stickers-revolution.html @@ -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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </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'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 isn‘t 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' 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'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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/supergroups.html b/data/telegram.org/blog/supergroups.html new file mode 100644 index 0000000000..97a041bc98 --- /dev/null +++ b/data/telegram.org/blog/supergroups.html @@ -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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </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 group‘s 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, we’re 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'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 you‘ve missed many messages while away. Here’s 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/telegram-me-change-number-and-pfs.html b/data/telegram.org/blog/telegram-me-change-number-and-pfs.html new file mode 100644 index 0000000000..a1e2f9bdc0 --- /dev/null +++ b/data/telegram.org/blog/telegram-me-change-number-and-pfs.html @@ -0,0 +1,228 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram.me, Changing Numbers and PFS</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Telegram.me, Changing Numbers and PFS"> + <meta property="og:image" content="https://telegram.org/img/tl_card_usernames.gif"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="#Telegram got updated with PFS, phone number migration and telegram.me support"> + <meta property="article:published_time" content="2014-12-01T22:31:14+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/img/tl_card_usernames.gif" /> + <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/telegram-me-change-number-and-pfs" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Telegram.me, Changing Numbers and PFS</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/img/tl_card_usernames.gif" class="blog_side_image"/> +</div> + +<blockquote> +<p>Our <a href="/dl/ios">iOS</a> and <a href="/dl/android">Android</a> apps got updated with three new features today.</p> +</blockquote> +<p>Opening a <strong><a href="https://telegram.me/YourUsernameHere">telegram.me/YourUsernameHere</a></strong> link on your phone will now automatically fire up your Telegram app and open a chat with that user. You can share username links with friends, write them on business cards or put them up on your website.</p> +<div> + <a href="/file/811140017/1/cy-qwbS5fMg/67abbc0f376b20bae1" target="_blank"><img src="/file/811140017/1/cy-qwbS5fMg/67abbc0f376b20bae1" title="Telegram.me page" class="dev_page_image" style="width: 300px" /></a> +</div> + +<center><i>Here's what people will see if they don't have Telegram yet</i></center> + +<h4><a class="anchor" name="changing-your-phone-number" href="#changing-your-phone-number"><i class="anchor-icon"></i></a>Changing Your Phone Number</h4> +<p>It is easy to switch to Telegram and retain your social graph, since it is based on phone numbers. But what if you need to change the phone number itself? As of today, you can change your number in Telegram — and keep <strong>everything</strong>, including <strong>all</strong> your contacts, messages and media from the Telegram cloud, as well as all your secret chats.</p> +<div><center> + <a href="/file/811140130/1/tCTi6Uk4zsg/c75df0be1059e2d727" target="_blank"><img src="/file/811140130/1/tCTi6Uk4zsg/c75df0be1059e2d727" title="Tap on your number in Setings" style="padding: 20px; width: 200px" /></a> + + <a href="/file/811140000/1/o0mRniLoPYc/3fafe3a6d666588353" target="_blank"><img src="/file/811140000/1/o0mRniLoPYc/3fafe3a6d666588353" title="Then tap 'Change Number'" style="padding: 20px; width: 200px" /></a> + </center> +</div> + +<p>Your mutual contacts (people in your contacts, who also have your number) will get your new number added to your contact in their address book unless you have blocked them in Telegram. This makes changing numbers even easier.</p> +<h4><a class="anchor" name="perfect-forward-secrecy" href="#perfect-forward-secrecy"><i class="anchor-icon"></i></a>Perfect Forward Secrecy</h4> +<p>Last but not least, Telegram's Secret Chats now support <a href="http://en.wikipedia.org/wiki/Forward_secrecy">Perfect Forward Secrecy</a>. What this means is that your Secret Chats will now automatically <a href="https://core.telegram.org/api/end-to-end/pfs">change encryption keys</a> after a period of time, in order to keep past communications safe. This way you no longer need to manually re-create Secret Chats to achieve this level of security.</p> +<div><br></div> + +<p>And that's it for today. Stay tuned for more updates coming your way on all platforms!</p> +<hr> +<p><em>December 1, 2014<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%2Ftelegram-me-change-number-and-pfs&text=%23Telegram%20got%20updated%20with%20PFS%2C%20phone%20number%20migration%20and%20telegram.me%20support" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="#Telegram got updated with PFS, phone number migration and telegram.me support" data-url="https://telegram.org/blog/telegram-me-change-number-and-pfs"><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 got updated with PFS, phone number migration and telegram.me support" data-url="https://telegram.org/blog/telegram-me-change-number-and-pfs" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/translations-iv2.html b/data/telegram.org/blog/translations-iv2.html new file mode 100644 index 0000000000..d61a63107a --- /dev/null +++ b/data/telegram.org/blog/translations-iv2.html @@ -0,0 +1,276 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Custom Languages, Instant View 2.0 and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Custom Languages, Instant View 2.0 and More"> + <meta property="og:image" content="https://telegram.org/file/811140872/156e/VEk6KuCKIGg.84119/ac11e3e9f9ee1cbd65"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Introducing custom language packs that are easy to create and spread, Instant View 2.0, redesigned Telegram for Android and more."> + <meta property="article:published_time" content="2018-12-10T16:35:44+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/811140872/156e/VEk6KuCKIGg.84119/ac11e3e9f9ee1cbd65" /> + <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/translations-iv2" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Custom Languages, Instant View 2.0 and More</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140113/175f/teeYgEx8WqM.62354.gif/dc4b3c1cbb3b9f904d" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> +<img src="/file/811140872/156e/VEk6KuCKIGg.84119/ac11e3e9f9ee1cbd65" srcset="/file/811140726/1905/VdDMrogasgw.239749/17f4769ecbd650f4da, 1200w" alt="Introducing custom languages, IV 2.0, a new design for Android and more"/> +</div> + +<!-- <a href="/file/811140726/1905/VdDMrogasgw.239749/17f4769ecbd650f4da" target="_blank">--> + +<p>Telegram's <a href="https://translations.telegram.org/"><strong>Translations Platform</strong></a> allows you to suggest better wording for Telegram interfaces in any language. We've recently rolled out support for most mainstream languages, and translations are already <a href="https://telegram.org/faq#q-can-i-translate-telegram">underway</a>.</p> +<p>Today's update brings equal treatment to the smaller linguistic communities around the world. <strong>Anyone</strong> can now use the translation platform to create their own <strong>custom language packs</strong> – and translate Telegram into any minority language or local dialect, be that Māori, Scottish Gaelic or Transliterated Klingon.</p> +<p>We've made it easy to <strong>spread your translations</strong>. To translate the interface of your app, simply follow the <strong>dedicated sharing link</strong> of the desired language. Sharing links can be obtained in the translation panel.</p> +<div class="blog_image_wrap"> + <a href="/file/811140222/15de/vZk9OdRLVAk.195322/d111205a69719ea617" target="_blank"><img src="/file/811140188/163f/x7-xsyxBP-Y.27949/8c183be32b4b61906c" alt="Applying a custom language" srcset="/file/811140222/15de/vZk9OdRLVAk.195322/d111205a69719ea617 , 2x" /></a> +</div> + +<p>Each language also gets its own <strong>public group</strong> for discussions. Here are the links for the Catalan language, for example:</p> +<ul> +<li>Open <a href="https://t.me/setlanguage/ca">t.me/setlanguage/ca</a> in Telegram to set your language to Catalan.</li> +<li>Check <a href="https://t.me/translation_ca">t.me/translation_ca</a> for real-time discussions of the Catalan translation.</li> +</ul> +<p>Once a user switches to your translation, all changes you apply in the interface will be <strong>applied immediately</strong>. The days of waiting for the apps to update or passing around localization files are over.</p> +<h3><a class="anchor" name="instant-view-2-0" href="#instant-view-2-0"><i class="anchor-icon"></i></a>Instant View 2.0</h3> +<p>Another unique feature of Telegram is the <a href="https://instantview.telegram.org"><strong>Instant View</strong></a> technology that allows Telegram users to view web pages in a consistent way, with <strong>zero loading time</strong>.</p> +<p>Today we're expanding the platform with support for right-to-left languages, blocks of related articles, image links, tables, nested lists, horizontal scrolling, collapsible text blocks and much more. </p> +<p>Now you can get beautiful instant view pages for even very complex articles. If you're reading this from one of our newly updated mobile apps, try <a href="https://en.m.wikipedia.org/wiki/Shore">this Wikipedia page</a> for an example.</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/811140674/1e30/taJtsItk6xI.45552/bcf887a3de42f58d03" style="max-width: 480px;"> + <source src="/file/811140849/14f3/OftMGo-UVVg.3026919.mp4/243402fe5c3a79cdb4" type="video/mp4"> + </video> +</div> + +<!--<div class="blog_image_wrap"> + <a href="/file/811140031/18e8/0csHv57cdP8.608795/4ee238e0c916afb922" target="_blank"><img src="/file/811140001/13e8/nrYmVmUaXns.61468/c9607e39587fe51a5a" title="YYY" srcset="/file/811140031/18e8/0csHv57cdP8.608795/4ee238e0c916afb922 , 2x" /></a> + <p>Instant View Page</p> +</div>--> + +<p>Soon we will announce a new <strong>crowdsourcing contest</strong> to make Instant View pages available for an even larger part of the internet.</p> +<h3><a class="anchor" name="the-great-ios-bug-hunt" href="#the-great-ios-bug-hunt"><i class="anchor-icon"></i></a>The Great iOS Bug Hunt</h3> +<p>We've made close to a thousand fixes and improvements to the iOS app since the <a href="https://telegram.org/blog/telegram-5-ios">major release</a> of version 5.0. The new <a href="https://itunes.apple.com/ae/app/telegram-messenger/id686449807?mt=8">Telegram for iOS 5.1</a> features some 400 minor improvements.</p> +<h3><a class="anchor" name="new-design-for-android" href="#new-design-for-android"><i class="anchor-icon"></i></a>New Design for Android</h3> +<p><a href="https://play.google.com/store/apps/details?id=org.telegram.messenger&hl=en">Telegram for Android</a> has now reached version <strong>5.0</strong> and received a major overhaul in the design department. It is now much easier to <strong>access shared media</strong> from the profiles of users, groups and channels:</p> +<!--<div class="blog_image_wrap"> + <a href="/file/811140608/1aa3/ROQ4JaOReXY.86052/7040cb5442e0b31d9a" target="_blank"><img src="/file/811140965/191d/lKTGcY6Nhk8.22584/f0c0ea7d423e5cb697" title="YYY" srcset="/file/811140608/1aa3/ROQ4JaOReXY.86052/7040cb5442e0b31d9a , 2x" /></a> +</div>--> + +<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/811140949/1671/nBvoGBLnJ3U.23027/57059f38fc2731bca8" style="max-width: 480px;"> + <source src="/file/811140655/1577/7yU1-4Gb4Tw.3598920.mp4/95e342382ff1b3b53d" type="video/mp4"> + </video> +</div> + +<p>Shared media now offers high quality crisp previews, increased loading speed, more info in the links and files sections, and more efficient design.</p> +<div class="blog_image_wrap"> + <a href="/file/811140259/196b/d48yIQwQ0wE.58804/65c426f978e73e2f83" target="_blank"><img src="/file/811140894/186a/9qJnAoUrj8s.24096/63faa4ab172eb4526e" alt="Shared Files" srcset="/file/811140259/196b/d48yIQwQ0wE.58804/65c426f978e73e2f83 , 2x" /></a> +</div> + +<p>The <strong>Settings screens</strong> were redesigned for a more streamlined experience:</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/811140072/1a5f/L9lbK-sbl1s.23154/71f23440e35d42d67f" style="max-width: 480px;"> + <source src="/file/811140242/150a/6qdj-UMuoAQ.4295461.mp4/329d1b21b12b104d93" type="video/mp4"> + </video> +</div> + +<p>Following in the footsteps of the iOS app, Android users can take advantage of the new detailed settings for the <strong>badge counter</strong> in Settings > Notification and Sounds:</p> +<div class="blog_image_wrap"> + <a href="/file/811140465/1626/BpHEY-esB6M.78252/7d355c8b99c9d45793" target="_blank"><img src="/file/811140929/1555/Ypyq6qrBH6k.11819/ae710ea32d2fb9ec8f" alt="Badge Counter Settings" srcset="/file/811140465/1626/BpHEY-esB6M.78252/7d355c8b99c9d45793 , 2x" /></a> +</div> + +<p>We've upgraded the <strong>photo selector</strong> for profile pictures so that you can choose the correct head to be displayed on your profile:</p> +<div class="blog_image_wrap"> + <a href="/file/811140354/1b16/6MhgejUtQBE.206372/289a5b36c65aa9c6d0" target="_blank"><img src="/file/811140228/1a4e/6FxNoPDJPi4.47572/7ff9065ba342181292" alt="Choose an area to use for the photo" srcset="/file/811140858/19a8/3JblkBB82hE.87697/d6b967e0bcb771fbf6 , 2x" /></a> +</div> + +<p>Last but not least, you can <strong>zoom videos</strong> during playback and <strong>browse full-resolution images</strong> sent as documents just like normal photos, by <strong>swiping</strong> left and right.</p> +<div><br></div> + +<p><em>December 10, 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%2Ftranslations-iv2&text=Custom%20language%20packs%20that%20are%20easy%20to%20create%20and%20spread%2C%20Instant%20View%202.0%2C%20redesigned%20Telegram%20for%20Android%20and%20more." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Custom language packs that are easy to create and spread, Instant View 2.0, redesigned Telegram for Android and more." data-url="https://telegram.org/blog/translations-iv2"><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="Custom language packs that are easy to create and spread, Instant View 2.0, redesigned Telegram for Android and more." data-url="https://telegram.org/blog/translations-iv2" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/video-1000.html b/data/telegram.org/blog/video-1000.html new file mode 100644 index 0000000000..849a17bd81 --- /dev/null +++ b/data/telegram.org/blog/video-1000.html @@ -0,0 +1,354 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More"> + <meta property="og:image" content="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="This update takes video to the next level. Group video calls now have up to 1000 viewers, video messages record in higher quality and can be expanded, regular videos may be watched at 0.5 or 2x speed. We've also added screen sharing with sound to all video calls, including 1-on-1 calls — and much more."> + <meta property="article:published_time" content="2021-07-30T14:32:03+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" /> + <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/video-1000" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More</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/464001875/2/qM-xLbil-eo.6949/7205195ed7b0bc75e5"><img src="/file/464001875/3/KzE19RyK_sA.30695.png/47e59560e91e8bd231" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001365/2/YMmv4srTGM4.219208/f69f0b9bad11867902" target="_blank"><img src="/file/464001574/3/Pqda66P2qCA.71942/56366f0bdd3630cab8" srcset="/file/464001365/2/YMmv4srTGM4.219208/f69f0b9bad11867902, 1200w" title="" alt="Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed and More"/></a> +</div> + +<p>This update takes video to the next level. <strong>Group video calls</strong> now have up to <strong>1000 viewers</strong>, <strong>video messages</strong> record in higher quality and can be expanded, regular videos may be watched at <strong>0.5</strong> or <strong>2x speed</strong>. We've also added <strong>screen sharing with sound</strong> to <em>all</em> video calls, including <strong>1-on-1 calls</strong> — and much more.</p> +<h3><a class="anchor" name="group-video-calls-2-0" href="#group-video-calls-2-0"><i class="anchor-icon"></i></a>Group Video Calls 2.0</h3> +<p><a href="https://telegram.org/blog/group-video-calls">Group video calls</a> allow up to 30 users broadcast video from both their camera and screen – and now <strong>1000 people</strong> can watch anything from online lectures to live rap battles.</p> +<p>We will keep <strong>increasing this limit</strong> until all humans on Earth can join one group call and watch us yodel in celebration (coming soon).</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/464001256/3/HJy7jscFzeg.132550/40bba612f898831a6c" style="max-width: 400px;" title="" alt="Group video calls with up to 1000 viewers"> + <source src="/file/464001985/3/V1aWC1RWIMc.5950134.mp4/81808ef2a568656421" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>To start a Group Video Call, create a Voice Chat from the info page (in the ⋮ menu on Android) of any group where you are an admin – then turn your video on.</p> +</blockquote> +<h3><a class="anchor" name="video-messages-2-0" href="#video-messages-2-0"><i class="anchor-icon"></i></a>Video Messages 2.0</h3> +<p><a href="https://t.me/TelegramTips/240">Video messages</a> are a quick way to check in or share your surroundings without adding another video to your gallery. They now have <strong>higher resolution</strong> and you can tap on a video message to <strong>expand it</strong> and take in all those extra pixels. </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/464001329/3/NBHDg4GBKiE.54984/5febb210aeb307c3f5" style="max-width: 400px;" title="We sure hope his phone is waterproof." alt="Video Messages 2.0"> + <source src="/file/464001368/4/RkEOKGzBt_o.4515224.mp4/203790e072f1d08a82" type="video/mp4"> + </video> +</div> + +<p>Tapping on an expanded video message <strong>pauses</strong> it and gives you the opportunity to <strong>fast forward</strong> or <strong>rewind</strong> the message in case you missed a word.</p> +<blockquote> +<p>To record a video message, tap the microphone icon in the message bar to switch from voice message recording to video. Press and hold to record, then tap the camera icon to switch back.</p> +</blockquote> +<p>Audio from your device <strong>will keep playing</strong> as you record so you can now sing along to your favorite songs or reply without pausing your podcast. Additionally, recording with your rear camera lets you pinch to <strong>zoom in</strong> and capture things at a distance or add a dramatic effect (eerie music not included).</p> +<h3><a class="anchor" name="video-playback-speed" href="#video-playback-speed"><i class="anchor-icon"></i></a>Video Playback Speed</h3> +<p>To power through lecture videos and replay kung fu moves in slow motion, the media player now supports <strong>0.5x</strong>, <strong>1.5x</strong> and <strong>2x playback speeds</strong>. Our Android developer is a fan of hummingbirds, so his app also supports <strong>0.2x</strong> speed.</p> +<div class="blog_video_player_wrap" style="max-width: 600px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001846/5/OmJy9A-1FP8.88718/d44ca244cfe4a8b969" style="max-width: 600px;" title="All you need to thoroughly enjoy jumping cat videos." alt="Video Playback Speed Controls"> + <source src="/file/464001494/4/s3J2bnDSUdY.2874883.mp4/1b0fb2fb61ca9d1521" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>To change your video playback speed, tap ⋮ on Android or ⋯ on iOS when watching a video in fullscreen.</p> +</blockquote> +<p>On Android, you can also press and hold the <strong>2X button</strong> when playing <strong>voice</strong> or <strong>video messages</strong> to switch between <em>0.5x</em>, <em>1x</em>, <em>1.5x</em> and <em>2x</em> playback speed.</p> +<h3><a class="anchor" name="timestamp-links" href="#timestamp-links"><i class="anchor-icon"></i></a>Timestamp Links</h3> +<p>Since <a href="https://telegram.org/blog/silent-messages-slow-mode#timestamps-and-improved-scrubbing">2019</a>, putting a <strong>timestamp</strong> like <em>0:30</em> in the captions or replies to videos and YouTube links lets users jump to that exact second – and you can now press and hold on a timestamp in a message to <strong>copy the link</strong> and share the moment in another chat.</p> +<h3><a class="anchor" name="screen-sharing-with-sound" href="#screen-sharing-with-sound"><i class="anchor-icon"></i></a>Screen Sharing With Sound</h3> +<p>Screen sharing has been added to <strong>1-on-1 calls</strong> as well, and now includes the <strong>sound from your device</strong> when broadcasting in any video call. So make sure you quit <em>Super Mario</em> before its your turn to present — or don't, and use the game for sound effects.</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/464001659/4/4fOghwlec00.39911/15b6e8bbfe9467299c" style="max-width: 400px;" title="It's-a me, ROI!" alt="Screen Sharing With Sound and in 1-on-1 Calls"> + <source src="/file/464001477/1/erYr6jbdL2k.8581570.mp4/1274880e355a7c9b8a" type="video/mp4"> + </video> +</div> + +<p>When switching on video during any call, you can swipe to choose a camera or share your screen instead — and use the <strong>video preview</strong> to make sure that everything is perfect before going live. </p> +<!--Alt: They say seeing is believing, but hearing also deserves a little credit.--> + +<blockquote> +<p>To share your screen during a video call, tap the camera button and select your screen as the video source.</p> +</blockquote> +<h3><a class="anchor" name="auto-delete-after-1-month" href="#auto-delete-after-1-month"><i class="anchor-icon"></i></a>Auto-Delete After 1 Month</h3> +<p>Messages in any chat can be set to <a href="https://telegram.org/blog/autodelete-inv2#auto-delete-messages">erase themselves</a> after <strong>1 day</strong> or <strong>1 week</strong> – and now <strong>1 month</strong>, in case you need your chats to stick around for a full lunar cycle before disappearing.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001466/2/g68xpARID2Q.226472/70f4b83d69089b9d63" target="_blank"><img src="/file/464001451/3/g7c_rzghems.26377/6dfd04fa4071fb23ea" title="For messages that don't age well." alt="Auto-Delete After 1 Month" srcset="/file/464001466/2/g68xpARID2Q.226472/70f4b83d69089b9d63 , 2x" /></a> +</div> + +<!--Alt: For messages that wax and wane with the moon.--> + +<blockquote> +<p>To enable the timer on Android, tap ⋮ > Clear History then choose a duration. On iOS, press and hold a message, tap Select > Clear Chat (top-left) > Enable Auto-Delete.</p> +</blockquote> +<h3><a class="anchor" name="precision-drawing" href="#precision-drawing"><i class="anchor-icon"></i></a>Precision Drawing</h3> +<p>The media editor allows you to illustrate and decorate your photos and videos with drawings, text and stickers. To more easily add fine details (or that perfect mustache and pointy ears), the width of your brush now <strong>decreases</strong> as you <strong>zoom in</strong> – giving you the precision of a professional.</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/464001291/3/IgI-4ajZcDg.50021/8701a4d069d10923bf" style="max-width: 400px;" title="Mona, is anything the matter? Nothing!" alt="Precision drawing"> + <source src="/file/464001095/2/_CIvXPYLRvE.4605110.mp4/85d409ac312386a913" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>To change the width of your brush at any time, drag the dot up from the color selector.</p> +</blockquote> +<p>The <a href="https://desktop.telegram.org">Telegram Desktop</a> app now has its own photo editor to <strong>crop</strong>, <strong>rotate</strong> or <strong>flip</strong> images – and <strong>add drawings</strong> or stickers. Unique to desktop, your edited versions can be sent as <strong>uncompressed files</strong> by unchecking the <em>Compress Images</em> box.</p> +<h3><a class="anchor" name="passcode-animations" href="#passcode-animations"><i class="anchor-icon"></i></a>Passcode Animations</h3> +<p>New animations make the passcode lock interfaces even snappier than before. If you're using an <a href="https://telegram.org/blog/animated-backgrounds">animated background</a>, it will also appear on the <strong>passcode lock screen</strong>. The disco never stops.</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/464001632/4/CKIXIs1EyS8.112035/75957a8bc0fc2109bb" style="max-width: 400px;" title="And for the next miracle, I'm going to turn your passcode into FUNK!" alt="Passcode Animations"> + <source src="/file/464001718/3/LHqSS69lOAw.5021489.mp4/2496f5e51eeea6207a" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="password-recovery-and-reminders" href="#password-recovery-and-reminders"><i class="anchor-icon"></i></a>Password Recovery and Reminders</h3> +<p>We've added a new prompt in Settings to help you <strong>practice</strong> entering your Two-Step Verification password.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001227/6/0Pi9HwIPq9c.142798/81dd07395d1a89e33f" target="_blank"><img src="/file/464001433/2/4vDVl7gHCKA.52184/b90a0db337b198df63" title="" alt="Practice Your 2-Step Verification Password" srcset="/file/464001227/6/0Pi9HwIPq9c.142798/81dd07395d1a89e33f , 2x" /></a> +</div> + +<p>If you <strong>forgot</strong> your password, there is a new <strong>password reset</strong> option that works even if you don’t have a recovery email — as long as you're still logged into your account. The process will take <strong>7 days</strong> and can be cancelled from any of your devices.</p> +<h3><a class="anchor" name="message-sending-animations-on-android" href="#message-sending-animations-on-android"><i class="anchor-icon"></i></a>Message Sending Animations on Android</h3> +<p>Like <a href="https://telegram.org/blog/animated-backgrounds#message-sending-animations">emoji and stickers</a>, <strong>text messages</strong> have new lightweight animations – when you hit <em>Send</em>, your text smoothly transforms into the message bubble as it flies into the chat. iOS users received these energy-efficient animations in the <a href="https://telegram.org/blog/animated-backgrounds#message-sending-animations">previous update</a>.</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/464001732/3/drs9FN1OmCk.112454/03d29c07e5fadba8af" style="max-width: 400px;" title="" alt="Message sending animations"> + <source src="/file/464001450/5/Aqu-0wOm2BQ.4590149.mp4/3ba80b9f1532b4f226" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="new-in-app-camera-on-ios" href="#new-in-app-camera-on-ios"><i class="anchor-icon"></i></a>New In-App Camera on iOS</h3> +<p>The in-app camera now utilizes all zoom levels on your device – including <strong>0.5x</strong> and <strong>2x</strong> if available. You can also press and hold to open a <strong>zoom wheel</strong> that lets you zoom in and out with granular control.</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/464001767/2/qjMH8U-VaOk.135137/ce849b2deb6e121ad0" style="max-width: 400px;" title="Zoom. Enhance." alt="New In-App Camera on iOS"> + <source src="/file/464001490/2/5bmb0-rFx0c.3165762.mp4/201b053ed3cd022777" type="video/mp4"> + </video> +</div> + +<blockquote> +<p>To use the in-app camera, tap the <img class="emoji" src="//telegram.org/img/emoji/40/F09F938E.png" width="20" height="20" alt="📎" /> icon in the message bar and then tap the camera feed in the attachment menu.</p> +</blockquote> +<h3><a class="anchor" name="more-for-ios" href="#more-for-ios"><i class="anchor-icon"></i></a>More for iOS</h3> +<p>Choose <strong>multiple recipients</strong> for <strong>forwarded messages</strong> by tapping 'Select' in the forwarding menu to share your best memes with all your best friends.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001951/4/5w0R1y1xQwo.170858/e76529694150ad08e0" target="_blank"><img src="/file/464001785/5/2FmsIIx8c3U.14186/d19e02ad7697af1f28" title="Also useful for mass-sending pictures of your pets." alt="Forwarding to multiple recipients" srcset="/file/464001951/4/5w0R1y1xQwo.170858/e76529694150ad08e0 , 2x" /></a> +</div> + +<p>Scrolling with two fingers in the chat list quickly <strong>selects several chats</strong> for <strong>bulk actions</strong> like archive, delete or mark all as read.</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="PHOTO" style="max-width: 400px;" title="TITLE" alt="TITLE"> + <source src="VIDEO" type="video/mp4"> + </video> +</div>--> + +<!--Alt: You can do just about anything with two fingers.--> + +<p>Profile pictures now <strong>follow the messages</strong> as you scroll in group chats so you always know who sent each one, even in long chains of one. word. after. another.</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/464001825/2/20RO5WaFhrg.64317/676a2d5e580f87b0d3" style="max-width: 400px;" title="We. All. Have. That. One. Friend." alt="Profile pictures follow the messages."> + <source src="/file/464001044/1/7wwRVNlebNA.1636595.mp4/32a1fbb13e4adf603a" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="new-animated-emoji" href="#new-animated-emoji"><i class="anchor-icon"></i></a>New Animated Emoji</h3> +<p>No Telegram update is complete without new animated emoji. As always, simply send a message with a <strong>single emoji</strong> to get one of these in a chat:</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/464001675/3/9oBB1GC3fls.23885/83655bbba432737cd5" style="max-width: 400px;" title="This one has all the ingredients of a good movie: fists, broken hearts, a little bit of nature and plenty of dancing" alt="New Animated Emoji"> + <source src="/file/464001646/3/CPGThYt9R5I.3649095.mp4/d148b57b5372a18ca4" type="video/mp4"> + </video> +</div> + + +<p>And that's all for today's update – we're working on the next one at <strong>2X speed</strong>.</p> +<div><br></div> + +<p><em>July 30, 2021<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%2Fvideo-1000&text=Video%20Calls%20with%20up%20to%201000%20Viewers%2C%20Video%20Messages%202.0%2C%20Video%20Playback%20Speed%2C%20Screen%20Sharing%20with%20Sound%2C%20and%20More" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed, Screen Sharing with Sound, and More" data-url="https://telegram.org/blog/video-1000"><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="Video Calls with up to 1000 Viewers, Video Messages 2.0, Video Playback Speed, Screen Sharing with Sound, and More" data-url="https://telegram.org/blog/video-1000" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/video-calls.html b/data/telegram.org/blog/video-calls.html new file mode 100644 index 0000000000..95c93e6e3f --- /dev/null +++ b/data/telegram.org/blog/video-calls.html @@ -0,0 +1,234 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Video Calls and Seven Years of Telegram</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Video Calls and Seven Years of Telegram"> + <meta property="og:image" content="https://telegram.org/file/464001762/1/BUEe0F1Jids.207454/49a4888d0ab7d62e2e"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Today marks seven years of Telegram. In 2013, we began as a small app focused on secure messaging and have since grown into a platform with over 400M users. Now this platform also offers video calls."> + <meta property="article:published_time" content="2020-08-14T16:46:40+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001762/1/BUEe0F1Jids.207454/49a4888d0ab7d62e2e" /> + <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/video-calls" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Video Calls and Seven Years of Telegram</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/464001815/1/tNOinsMyiJI.15107/fbfbe6a47d5e9f85e9"><img src="/file/464001815/2/msSp2L8VO4g.17160.png/c09a2275cbac50c4c2" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001711/1/l0qNFLTeZVM.207426/078407f385fd834186" target="_blank"><img src="/file/464001842/1/JzNSp4nwahc.74368/1b2df613bb94a3b876" srcset="/file/464001711/1/l0qNFLTeZVM.207426/078407f385fd834186, 1200w" title="Keep your friends close and your phone out of the water." alt="Video Calls and Seven Years of Telegram"/></a> +</div> + +<p>Today marks <strong>seven years</strong> of Telegram. In 2013, we began as a small app focused on secure messaging and have since grown into a platform with <strong>over 400M</strong> users. Telegram is now one of the <strong>top 10</strong> most-downloaded apps and is used all over the world to stay in touch with family, collaborate with classmates and coordinate coworkers. </p> +<p>We did not reach this milestone on our own – Telegram has never advertised and every user has come to the app because of a recommendation from someone they trust. Strong principles and quality features speak for themselves, and millions of you listened. We've heard you as well, and will continue to develop features that make Telegram much more than just a messaging app. Today we're adding the one you've been asking for – fast and secure <strong>video calls</strong>.</p> +<h3><a class="anchor" name="video-calls" href="#video-calls"><i class="anchor-icon"></i></a>Video Calls</h3> +<p>2020 highlighted the need for face-to-face communication, and our <strong>alpha version</strong> of video calls is now available on both Android and iOS. You can start a video call from your contact's profile page, and <strong>switch video on or off</strong> at any time during voice calls. Like all other video content on Telegram, video calls support <strong>picture-in-picture mode</strong>, allowing you to scroll through chats and multitask while maintaining eye contact.</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/464001451/1/5lCPAl7qZEc.81216/8930ad8fa7c0ee2009" style="max-width: 400px;" title="Donut not included." alt="A Telegram Video call as seen on iOS"> + <source src="/file/464001442/3/puxvtuJz6Z8.4544368.mp4/a38411d4bed2ee09a0" type="video/mp4"> + </video> +</div> + +<p>All video calls are protected with <strong>end-to-end encryption</strong>. To confirm your connection, compare the <strong>four emoji</strong> shown on-screen for you and your chat partner – if they match, your call is <strong>100% secured</strong> by time-tested encryption also used in Telegram's Secret Chats and Voice Calls. You can find more details on <a href="https://core.telegram.org/api/end-to-end/video-calls">this page</a>.</p> +<blockquote> +<p>Our apps for Android and iOS have <a href="https://core.telegram.org/reproducible-builds">reproducible builds</a>, so anyone can <strong>verify encryption</strong> and confirm that their app uses the <strong>exact same</strong> <a href="https://telegram.org/apps#source-code">open source code</a> that we publish with each update.</p> +</blockquote> +<p>Video calls will receive more features and improvements in future versions, as we work toward <a href="https://telegram.org/blog/400-million">launching</a> <strong>group video calls</strong> in the coming months. But for this midyear milestone, you can now enjoy a little one-on-one time with those closest to you, whether they're in the other room or on another continent.</p> +<h3><a class="anchor" name="more-animated-emoji" href="#more-animated-emoji"><i class="anchor-icon"></i></a>More animated emoji</h3> +<p>To help you celebrate, we've added another batch of new <strong>animated emoji</strong>. To get one of these <img class="emoji" src="//telegram.org/img/emoji/40/F09F9187.png" width="20" height="20" alt="👇" /> in a chat, simply send a message with a single emoji.</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/464001676/1/eTIfNW26YUs.68975/c7cd8b774921a02bd7" style="max-width: 400px;" title="Sometimes a cigar is just a cigar." alt="New animated emoji"> + <source src="/file/464001191/2/OPHcVfUtiv0.3564292.mp4/45c50a811450823b7b" type="video/mp4"> + </video> +</div> + +<p>Stay tuned for more updates!</p> +<div><br></div> + +<p><em>August 14, 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%2Fvideo-calls&text=Introducing%20Video%20Calls%20for%20Telegram%27s%207th%20Birthday" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing Video Calls for Telegram's 7th Birthday" data-url="https://telegram.org/blog/video-calls"><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 Video Calls for Telegram's 7th Birthday" data-url="https://telegram.org/blog/video-calls" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/video-editor-gifs.html b/data/telegram.org/blog/video-editor-gifs.html new file mode 100644 index 0000000000..4b9f3ebdbb --- /dev/null +++ b/data/telegram.org/blog/video-editor-gifs.html @@ -0,0 +1,252 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Video Editor, Animated Photos, Better GIFs and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Video Editor, Animated Photos, Better GIFs and More"> + <meta property="og:image" content="https://telegram.org/file/464001939/1/ZKgqpwi8f0A.79759/da2910438344f80100"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="In 2015, Telegram released the most powerful photo editor to be implemented in a messaging app, letting you enhance image quality and add drawings, stickers and text to pictures. Today we're upgrading the media editor with support for animated stickers and editing videos."> + <meta property="article:published_time" content="2020-06-04T16:26:40+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001939/1/ZKgqpwi8f0A.79759/da2910438344f80100" /> + <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/video-editor-gifs" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Video Editor, Animated Photos, Better GIFs and More</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/464001153/1/7d5xF20Jiss.23040.gif/91acc6e9884a32e2c4" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001876/2/61q3quSkA-o.229990/0448e8588e48b3942c" target="_blank"><img src="/file/464001939/1/ZKgqpwi8f0A.79759/da2910438344f80100" srcset="/file/464001876/2/61q3quSkA-o.229990/0448e8588e48b3942c, 1200w" title="Never turn your back on your Oscars when a cat is around." alt="Introducing an New Media Editor, Better GIFs, and More"/></a> +</div> + +<p>In <a href="https://telegram.org/blog/photo-editor-and-passcodes#photo-editor">2015</a>, Telegram released the most powerful <strong>photo editor</strong> to be implemented in a messaging app, letting you enhance image quality and add drawings, stickers and text to pictures. Today we're upgrading the media editor with support for <strong>animated stickers</strong> and editing <strong>videos</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/464001913/3/ZyrOPJzeMuE.59566/49a810c45009d24d76" style="max-width: 400px;" title="The first rule of Crab Pool is: You do not talk about Crab Pool. The second rule of Crab Pool is: No Ducks." alt="Demo Video: New Media Editor"> + <source src="/file/464001749/1/34xnzEM36ks.3760762.mp4/df6c5448b5f1a434c2" type="video/mp4"> + </video> +</div> + +<p>You can now <strong>enhance video quality</strong> automatically in two taps – or manually tweak a dozen parameters, like brightness or saturation, until your inner Kubrick is satisfied.</p> +<p>For perfect paintbrush precision, <strong>zoom in</strong> on photos or videos when <strong>drawing</strong> on them to get every line just right. Your made-up makeup – or your classmates' handlebar moustaches – will never look the same.</p> +<h3><a class="anchor" name="animated-stickers-on-media" href="#animated-stickers-on-media"><i class="anchor-icon"></i></a>Animated Stickers on Media</h3> +<p>Most importantly, you can now add <strong>animated stickers</strong> to any photo or video – just in case you were looking for ways to decorate your dinner table with <a href="https://t.me/addstickers/HotCherry">twerking cherries</a>. Putting an animated sticker on a photo turns it into a <strong>GIF</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/464001454/1/vfjbFWBSHnI.42910/6597793260689d2820" style="max-width: 400px;" title="To turn the GIF back into a photo – open it and take a screenshot." alt="Photo with animated sticker attached"> + <source src="/file/464001008/2/2cfWFFUtiG4.1035156.mp4/e22a636b568fb323a6" type="video/mp4"> + </video> +</div> + + +<h3><a class="anchor" name="speaking-of-gifs" href="#speaking-of-gifs"><i class="anchor-icon"></i></a>Speaking of GIFs</h3> +<p>The GIF panel has been upgraded with a new <strong>Trending</strong> section and <strong>emoji-based tabs</strong> that cover the most popular emotions. You won't ever need to wrestle with words again when looking for Robert Downey Jr. <img class="emoji" src="//telegram.org/img/emoji/40/F09F9984.png" width="20" height="20" alt="🙄" /></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/464001055/1/4gnxOIW3tdo.62607/c3e11cbce770f8547f" style="max-width: 400px;" title="It's definitely pronounced GIF, not GIF." alt="Demo Video: New GIF Panel"> + <source src="/file/464001938/1/jOBL4PP3PTA.1736309.mp4/1b8d4d0304446b8679" type="video/mp4"> + </video> +</div> + +<p>We've also improved <strong>loading times</strong> for GIFs in the panel, so you can find that perfect GIF faster. Hold on any GIF you haven't sent before to save it to your <strong>Recent</strong> tab for later use.</p> +<h3><a class="anchor" name="flexible-folders" href="#flexible-folders"><i class="anchor-icon"></i></a>Flexible Folders</h3> +<p>If you have many chats and use <a href="https://telegram.org/blog/folders">folders</a>, hold on any chat in the list to add it to one of your folders. This also works for removing chats from folders. Last call for spring cleaning!</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001124/2/BzbgG9YaNF0.93880/e30ebb9314c5f22183" target="_blank"><img src="/file/464001977/1/qGq1sdmNn50.22850/70d424c07f60dfc823" title="I have a special folder for those who send me grumpy pigeons." alt="Chat options menu with 'Add to Folder' highlighted." srcset="/file/464001124/2/BzbgG9YaNF0.93880/e30ebb9314c5f22183 , 2x" /></a> +</div> + +<h3><a class="anchor" name="android-goodies" href="#android-goodies"><i class="anchor-icon"></i></a>Android Goodies</h3> +<p>Android users get a few extra features to make their app slicker. Messages now get sent, edited and deleted with new <strong>smooth animations</strong>. We've also improved the <strong>video player</strong> to make sure that controls and long captions get out of your way quickly. Videos shorter than 30 seconds get looped automatically and voice messages play with even more wavy animations.</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/464001814/1/lQUrR68Npa8.50535/1ee3e870cfe2d9fc74" style="max-width: 400px;" title="Unlike cats, dogs will rarely push your Oscars off the shelves – they're not as good at climbing." alt="Video Demo: New interfaces and animations on Telegram for Android"> + <source src="/file/464001339/2/77VKiqVaHms.5452119.mp4/1e2ed812406c6bad18" type="video/mp4"> + </video> +</div> + +<p><strong>Cache management</strong> interfaces on Android got a facelift as well. Not only can you keep Telegram's storage footprint on your device incredibly small – you can do it in <strong>style</strong>. See <em>Settings > Data and Storage > Storage Usage</em>.</p> +<p>Last but not least, monkeys. You know that protecting your account with a <strong>Two-Step Verification password</strong> is a good idea, but we thought we'd sleep easier at night if we knew that a monkey was overseeing the process. No, this is totally not a coded message, go see for yourself.</p> +<p>And that's it for today. Enjoy making post-ironic memes with the new tools while we go back to the dungeons and continue working on you-know-what (and not only that).</p> +<div><br></div> + +<p><em>June 4, 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%2Fvideo-editor-gifs&text=Video%20Editor%2C%20Animated%20Photos%2C%20Better%20GIFs%20and%20more." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Video Editor, Animated Photos, Better GIFs and more." data-url="https://telegram.org/blog/video-editor-gifs"><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="Video Editor, Animated Photos, Better GIFs and more." data-url="https://telegram.org/blog/video-editor-gifs" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/video-messages-and-telescope.html b/data/telegram.org/blog/video-messages-and-telescope.html new file mode 100644 index 0000000000..075c2b6960 --- /dev/null +++ b/data/telegram.org/blog/video-messages-and-telescope.html @@ -0,0 +1,247 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Video Messages and Telescope</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Video Messages and Telescope"> + <meta property="og:image" content="https://telegram.org//file/811140267/1/7t0LW5DXeiA.144209/46ef0adeb2153dc210"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Introducing new video messages and Telesco.pe, a video hosting for public channels."> + <meta property="article:published_time" content="2017-05-18T21:50:17+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org//file/811140267/1/7t0LW5DXeiA.144209/46ef0adeb2153dc210" /> + <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/video-messages-and-telescope" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Video Messages and Telescope</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> + <img src="/file/811140492/3/iCtIl2oZgvA.22701/140d8810345bb8497f" class="blog_side_image"/> +</div> + +<div class="blog_wide_image"> + <a href="/file/811140517/4/A6ySqNdcraQ.937969/a46c9c6087ec7a2572" target="_blank"><img src="/file/811140267/1/7t0LW5DXeiA.144209/46ef0adeb2153dc210" title="Introducing video messages and Telesco.pe (click for hi-res version)"/></a> +</div> + +<p>We know you love the speed and simplicity of voice messages on Telegram. Starting today, you can also send <strong>video messages</strong> – just as swiftly:</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/811140508/2/A9uZHduEX6Q.32153/d0834fbb68a5db4c9a" autoplay loop controls> + <source src="/file/811140090/4/6z44ADdFrxo.1076734.mp4/982476eeed57a1eefa" type="video/mp4"> + </video> + </div> + <br> +</div> + +<p>To send a video message, go to any chat on Telegram and tap the mic icon to switch to <strong>camera mode</strong>. Now all you need to do is tap and hold the camera icon and record a video message. When you’re done, just release the recording button to dispatch your message — and it will arrive in the blink of an eye.</p> +<p>Video messages are so fast because Telegram compresses them and sends them even as you record them. By the way, if holding the button seems like too much work, you can lock the camera in recording mode by <strong>swiping up</strong>. This also works with voice messages now (here's one for you, cab drivers).</p> +<p>Video messages are automatically downloaded and autoplayed by default (you can change this in Settings if you’re on a data diet though) and generally feel and act like voice messages – on visual steroids. </p> + <div class="blog_image_wrap"> + <a href="/file/811140753/2/G17Il5wVsy0.58002/1c8815d3259cb4349e" target="_blank"><img src="/file/811140753/2/G17Il5wVsy0.58002/1c8815d3259cb4349e" title="Picture in Picture"/></a> + <p>Picture in Picture</p> </div> + +<p>While watching a video message, you can freely browse your other chats – the video will pop up in a corner and continue playing. You can move it around the screen and pause it from anywhere in Telegram. Cool, eh? Well, there's more:</p> +<h3><a class="anchor" name="meet-telescope" href="#meet-telescope"><i class="anchor-icon"></i></a>Meet Telescope</h3> +<p>Lots of popular folks address their fans via <a href="/blog/channels">public channels</a> on Telegram. Video messages will make their connection to fans more direct and intimate than ever. But we want to kick this up another notch.</p> +<p>Today we are launching <a href="https://telesco.pe"><strong>Telescope</strong></a>, a dedicated video hosting platform for those who use videos to communicate with their audiences (here's one for you, blogger people!)</p> +<p>With Telescope, public video messages can go viral <strong>beyond the Telegram ecosystem</strong>. Telescope hosts autoplayed round videos of up to 1 minute in duration – the same format we use for Telegram video messages. And yes, you heard that right, you don't need a Telegram account to view them.</p> +<p>Every <strong>public</strong> channel on Telegram now has a <strong>telesco.pe URL</strong>, such as <code>telesco.pe/channel_name</code>, where all of its video messages are available to the world wide web and the wide, wide world.</p> + <div class="blog_image_wrap"> + <a href="/file/811140846/1/kw7Zkv5OAug.75709/dc5f677c5bfa6ed5ce" target="_blank"><img src="/file/811140846/1/kw7Zkv5OAug.75709/dc5f677c5bfa6ed5ce" title="A Telescope Channel"/></a> + <p>A Telescope Channel</p> </div> + +<p>Whenever you post a video message to a public channel, it will also be uploaded to Telesco.pe and have a public URL there.</p> + <div class="blog_image_wrap"> + <a href="/file/811140076/4/D2AitQmMx5Y.29880/7ff81803252841db91" target="_blank"><img src="/file/811140076/4/D2AitQmMx5Y.29880/7ff81803252841db91" title="Share Telescope Videos"/></a> + <p>Share Telescope Videos</p> </div> + +<p>With Telescope, even those users who don’t have Telegram installed will be able to enjoy your public video messages and share them on Twitter or Facebook. As a result, this content will generate more views. And who would refuse more views these days, hmm? </p> +<blockquote> +<p>This was just 1/3 of Telegram <strong>4.0</strong>. Keep reading to learn more about <a href="/blog/payments"><strong>Payments for Bots</strong></a> and the new <a href="/blog/instant-view-contest-200K"><strong>Instant View Platform</strong></a>.</p> +</blockquote> +<div><br></div> + +<p><em>May 18, 2017,<br>The Telegram Team</em></p> +<div><br></div> + +<p><strong>P.S.</strong> Our founder has this weird urge to keep launching platforms that start with “Tele-”. Be sure to check out <a href="https://telegra.ph"><strong>Telegraph</strong></a>, the <a href="/blog/instant-view#telegraph">publishing platform</a> we launched last year.</p> +</div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fvideo-messages-and-telescope&text=Introducing%20new%20video%20messages%20and%20Telesco.pe%2C%20a%20video%20hosting%20for%20public%20channels." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing new video messages and Telesco.pe, a video hosting for public channels." data-url="https://telegram.org/blog/video-messages-and-telescope"><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 new video messages and Telesco.pe, a video hosting for public channels." data-url="https://telegram.org/blog/video-messages-and-telescope" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/blog/video-stickers-better-reactions.html b/data/telegram.org/blog/video-stickers-better-reactions.html new file mode 100644 index 0000000000..fbcafb07e7 --- /dev/null +++ b/data/telegram.org/blog/video-stickers-better-reactions.html @@ -0,0 +1,273 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Video Stickers, Better Reactions and More</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Video Stickers, Better Reactions and More"> + <meta property="og:image" content="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen reactions, improved navigation between chats and more."> + <meta property="article:published_time" content="2022-01-31T22:15:30+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <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/video-stickers-better-reactions" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Video Stickers, Better Reactions and More</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/464001570/f19c/xebnGoAM5e0.19487/46ee349b24011c93b5"><img src="/file/464001570/f19d/Bfpi_kkax80.33984.png/f66122b206114fa1a6" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001374/f1a9/VXKlA_mj0IU.299889/862f21fcdf847d774d" target="_blank"><img src="/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" srcset="/file/464001374/f1a9/VXKlA_mj0IU.299889/862f21fcdf847d774d, 1200w" title="Do not try this at home. Actually, no. Do try this at home, that's what this update is all about!" alt="Video Stickers, Better Reactions and More"/></a> +</div> + +<p>This update brings easy-to-make <strong>video stickers</strong>, better reactions with <strong>compact animations</strong> and <strong>extra emoji</strong>, a button to review <strong>unseen reactions</strong>, improved <strong>navigation between chats</strong> and more.</p> +<h3><a class="anchor" name="video-stickers" href="#video-stickers"><i class="anchor-icon"></i></a>Video Stickers</h3> +<p>Telegram's <a href="https://telegram.org/blog/animated-stickers">animated stickers</a> have unmatched quality and efficiency – needing less than <strong>30 KB</strong> of data per sticker. However, creating such stickers requires experience and specialized software such as Adobe Illustrator.</p> +<p>Today, we're adding support for stickers converted from <strong>regular videos</strong>, so that <strong>anyone</strong> can easily create detailed animated stickers using any video editing program.</p> +<div class="blog_video_player_wrap" style="max-width: 600px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001361/f67f/L3eErL51TSw.43672/9c35e510ddb8d41456" style="max-width: 600px;" title="To join the sticker artist team, one must fail a series of difficult sanity checks." alt="Video Stickers"> + <source src="/file/464001039/fb00/ryrabmwfRFE.4760995.mp4/618c31d7b9cea8d591" type="video/mp4"> + </video> +</div> + +<p>Like always, you can <strong>publish your packs</strong> with the <a href="https://t.me/stickers">@Stickers</a> bot – or add <a href="https://t.me/addstickers/Utya3D">some</a> <a href="https://t.me/addstickers/MATRESHKA">of the</a> <a href="https://t.me/addstickers/WackyLetters">new</a> <a href="https://t.me/addstickers/Potato">sets</a> made by others. Whatever you do, never stare back at the <a href="https://t.me/addstickers/VitaminParty">tomato</a>.</p> +<blockquote> +<p>Check out the <a href="https://core.telegram.org/stickers#video-stickers">Video Sticker Manual</a> for more details.</p> +<p>Developers can use the <a href="https://core.telegram.org/import-stickers">Sticker Import API</a> to build <a href="https://t.me/contest/280">powerful apps</a> for <strong>creating and importing stickers</strong> to Telegram.</p> +</blockquote> +<h3><a class="anchor" name="better-reactions" href="#better-reactions"><i class="anchor-icon"></i></a>Better Reactions</h3> +<p><a href="https://telegram.org/blog/reactions-spoilers-translations">Reactions</a> now have more <strong>compact animations</strong>. To send a larger effect, <strong>press and hold</strong> on a reaction in the menu.</p> +<p>Like <a href="https://telegram.org/blog/chat-themes-interactive-emoji-read-receipts#interactive-emoji">interactive emoji</a>, reactions are now <strong>synchronized</strong>, so your recipients will see the animations <strong>in real time</strong>.</p> +<div class="blog_video_player_wrap" style="max-width: 600px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001604/10615/Di8ChGUZBYE.22992/54107d39aeb36665ca" style="max-width: 600px;" title="Kamehame-hahaha" alt="Better Reactions"> + <source src="/file/464001103/e1c6/Wynijzi49yo.9484801.mp4/315f1495f564607103" type="video/mp4"> + </video> +</div> + +<p>Reactions are used not only to express emotion, but also to answer questions and show approval – which is why they now have <strong>read status</strong>. Like for replies or @-mentions, a <strong>new ♡ button</strong> appears when your messages have unseen reactions.</p> +<h3><a class="anchor" name="new-reactions-and-interactive-emoji" href="#new-reactions-and-interactive-emoji"><i class="anchor-icon"></i></a>New Reactions and Interactive Emoji</h3> +<p>This update also adds <strong>5 new reactions</strong> <img class="emoji" src="//telegram.org/img/emoji/40/F09FA5B0.png" width="20" height="20" alt="🥰" /><img class="emoji" src="//telegram.org/img/emoji/40/F09FA4AF.png" width="20" height="20" alt="🤯" /><img class="emoji" src="//telegram.org/img/emoji/40/F09FA494.png" width="20" height="20" alt="🤔" /><img class="emoji" src="//telegram.org/img/emoji/40/F09FA4AC.png" width="20" height="20" alt="🤬" /><img class="emoji" src="//telegram.org/img/emoji/40/F09F918F.png" width="20" height="20" alt="👏" /> to help you discuss anything from Christopher Nolan's movies to global economic news.</p> +<p>These reactions can also be sent as <a href="https://telegram.org/blog/chat-themes-interactive-emoji-read-receipts#interactive-emoji"><strong>interactive emoji</strong></a>. Send a single <img class="emoji" src="//telegram.org/img/emoji/40/F09FA5B0.png" width="20" height="20" alt="🥰" /><img class="emoji" src="//telegram.org/img/emoji/40/F09FA4AF.png" width="20" height="20" alt="🤯" /><img class="emoji" src="//telegram.org/img/emoji/40/F09FA494.png" width="20" height="20" alt="🤔" /><img class="emoji" src="//telegram.org/img/emoji/40/F09FA4AC.png" width="20" height="20" alt="🤬" /> or <img class="emoji" src="//telegram.org/img/emoji/40/F09F918F.png" width="20" height="20" alt="👏" /> to any private chat, then tap on the animated emoji to unleash a synchronized fullscreen effect.</p> +<div class="blog_video_player_wrap" style="max-width: 600px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001690/10f01/zQZixS83N9s.138813/ecc075a76183c3f54a" style="max-width: 600px;" title="Incidentally, this update includes everything you need to talk about ANCIENT ALIENS." alt="New Reactions and Interactive Emoji"> + <source src="/file/464001191/f9e9/uyb6q6IqDCI.7115634.mp4/1c2b60e13486714469" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="navigating-recent-chats" href="#navigating-recent-chats"><i class="anchor-icon"></i></a>Navigating Recent Chats</h3> +<p>When <a href="https://telegram.org/blog/live-streams-forwarding-next-channel#jump-to-next-channel">jumping through unread channels</a> or moving between chats, press and <strong>hold the 'Back' button</strong> to return to a <strong>specific chat</strong>. Opening chats from forwarded messages, links, usernames, profiles, etc. adds them to the list.</p> +<div class="blog_video_player_wrap" style="max-width: 600px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001317/f14d/lqi6mJyq98o.162820/44cdb7a281120740bd" style="max-width: 600px;" title="We need to go deeper." alt="Navigating Recent Chats"> + <source src="/file/464001587/109fa/xJQLgrzq8Dw.3129379.mp4/a2c81236285133d3c5" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="bug-busting-and-more" href="#bug-busting-and-more"><i class="anchor-icon"></i></a>Bug Busting and More</h3> +<p>Our developers spent two weeks in January focusing completely on fixing known issues in Telegram apps. Among other things, they improved <strong>call quality</strong>, added support for <a href="https://telegram.org/blog/reactions-spoilers-translations#message-translation">translation</a> to <strong>Instant View</strong> pages (and <strong>bios</strong> on iOS), added the option to send <a href="https://telegram.org/blog/silent-messages-slow-mode">silent messages</a> from the <strong>sharing menu</strong> – and dozens of other improvements.</p> +<p>On iOS, you'll also notice <strong>new animations</strong> when tapping icons in the tab bar.</p> +<div class="blog_video_player_wrap" style="max-width: 600px; margin: 20px auto 20px;"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001053/10329/XWu_1H0Aawo.168091/d4fc932f5b124145c1" style="max-width: 600px;" title="Cogs turning, phones ringing, pigs flying, writers getting carried away." alt="New Tab Bar Animations on iOS"> + <source src="/file/464001621/fcaf/eeir0LdMjhc.245311.mp4/4f831e3327685c2ace" type="video/mp4"> + </video> +</div> + +<p>And that's it for today. Let's leave some features for February.</p> +<p><em>January 31, 2022<br>The Telegram Team</em></p> +<!-- +###Video + +<div class="blog_video_player_wrap" style="max-width: 600px; 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: 600px;" 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%2Fvideo-stickers-better-reactions&text=Easy-to-make%20video%20stickers%2C%20better%20reactions%20with%205%20new%20emoji%2C%20a%20new%20button%20to%20view%20unseen%20reactions%2C%20a%20way%20to%20navigate%20recent%20chats%20and%20more" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Easy-to-make video stickers, better reactions with 5 new emoji, a new button to view unseen reactions, a way to navigate recent chats and more" data-url="https://telegram.org/blog/video-stickers-better-reactions"><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="Easy-to-make video stickers, better reactions with 5 new emoji, a new button to view unseen reactions, a way to navigate recent chats and more" data-url="https://telegram.org/blog/video-stickers-better-reactions" 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/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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'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> + </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?43"></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> + diff --git a/data/telegram.org/blog/pinned-messages-locations-playlists/world.html b/data/telegram.org/blog/voice-chats-on-steroids.html similarity index 55% rename from data/telegram.org/blog/pinned-messages-locations-playlists/world.html rename to data/telegram.org/blog/voice-chats-on-steroids.html index 2bfa008998..d2695f795c 100644 --- a/data/telegram.org/blog/pinned-messages-locations-playlists/world.html +++ b/data/telegram.org/blog/voice-chats-on-steroids.html @@ -2,18 +2,18 @@ <html class=""> <head> <meta charset="utf-8"> - <title>Pinned Messages 2.0, Improved Live Locations, Playlists and More</title> + <title>Voice Chats 2.0: Channels, Millions of Listeners, Recorded Chats, Admin Tools</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta property="og:title" content="Pinned Messages 2.0, Improved Live Locations, Playlists and More"> - <meta property="og:image" content="https://telegram.org/file/464001261/1/ChBpP2s4F54.234874/935690e6c0abd318cd"> + <meta property="og:title" content="Voice Chats 2.0: Channels, Millions of Listeners, Recorded Chats, Admin Tools"> + <meta property="og:image" content="https://telegram.org/file/464001855/3/O31CcF_-a20.86962/cafa0c3d7dd2df1134"> <meta property="og:site_name" content="Telegram"> - <meta property="og:description" content=""> - <meta property="article:published_time" content="2020-10-30T12:39:57+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001261/1/ChBpP2s4F54.234874/935690e6c0abd318cd" /> + <meta property="og:description" content="Voice Chats first appeared in December, adding a new dimension of live talk to Telegram groups. Starting today, they become available in channels too – and there are no more limits on the number of participants. This update also brings recordable voice chats, rich lists of participants, raise hand mechanics, invite links for speakers and listeners, voice chat titles, and a way for public figures to join voice chats as their channels."> + <meta property="article:published_time" content="2021-03-19T10:18:35+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001855/3/O31CcF_-a20.86962/cafa0c3d7dd2df1134" /> <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/pinned-messages-locations-playlists/world" /> + <link rel="canonical" href="https://telegram.org/blog/voice-chats-on-steroids" /> <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"> @@ -74,93 +74,90 @@ </div></div> <div id="dev_page_content_wrap" class=" "> <div class="dev_page_bread_crumbs"></div> - <h1 id="dev_page_title">Pinned Messages 2.0, Improved Live Locations, Playlists and More</h1> + <h1 id="dev_page_title">Voice Chats 2.0: Channels, Millions of Listeners, Recorded Chats, Admin Tools</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/464001541/2/tDh6fjzbdXU.16254/5fcddbed56a0466778"><img src="/file/464001541/3/dWGo-h17ziU.40765.png/00209f5144532e3885" /></picture> + <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/464001846/2/a2cdkP7qe84.14136/61d6fc984cb003c004"><img src="/file/464001588/2/yQTe48dXBXE.37270.png/ecd08be3364364a507" /></picture> </div> <div class="blog_wide_image"> - <a href="/file/464001261/1/ChBpP2s4F54.234874/935690e6c0abd318cd" target="_blank"><img src="/file/464001601/2/mt8BEZujINg.77182/a233ae72c9bc2b0483" srcset="/file/464001261/1/ChBpP2s4F54.234874/935690e6c0abd318cd, 1200w" title="Pinned messages, Live locations, Slot machine, Cat, Table... I don't think this page needs 'title' tags for images."/></a> + <a href="/file/464001284/3/rHzxN3afclE.253809/78fbb9de14cac31e08" target="_blank"><img src="/file/464001855/3/O31CcF_-a20.86962/cafa0c3d7dd2df1134" srcset="/file/464001284/3/rHzxN3afclE.253809/78fbb9de14cac31e08, 1200w" title="We asked our artist to imagine a HUGE voice chat. He took it to the next level." alt="Voice Chats 2.0: Channels, Millions of Listeners, Recorded Chats, Admin Tools"/></a> </div> -<p>Starting today you can <strong>pin several messages</strong> in every chat, get <strong>notified</strong> when friends get near if they are sharing their <strong>Live Location</strong>, send music as <strong>Playlists</strong>, and more.</p> -<h3><a class="anchor" name="multiple-pinned-messages" href="#multiple-pinned-messages"><i class="anchor-icon"></i></a>Multiple Pinned Messages</h3> -<p>Each chat now supports <strong>multiple pinned messages</strong>. To jump between them, simply tap the top bar several times – or use the <strong>new button</strong> to see all pinned messages on a <strong>separate page</strong>.</p> +<p>Voice Chats first appeared <a href="https://telegram.org/blog/voice-chats">in December</a>, adding a new dimension of live talk to Telegram groups. Starting today, they become available in <strong>channels</strong> too – and there are <strong>no more limits</strong> on the number of participants.</p> +<p>This update also brings recordable voice chats, rich lists of participants, raise hand mechanics, invite links for speakers and listeners, voice chat titles, and a way for <strong>public figures</strong> to join voice chats <strong>as their channels</strong>.</p> +<h3><a class="anchor" name="limitless-voice-chats" href="#limitless-voice-chats"><i class="anchor-icon"></i></a>Limitless Voice Chats</h3> +<p>Admins of <a href="https://telegram.org/tour/channels"><strong>channels</strong></a> and <strong>public groups</strong> can now host voice chats for <strong>millions of live listeners</strong>. No matter how popular your talk gets, new people will be able to tune in. It's like public radio reinvented for the 21st century.</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/464001736/5/ipfhG9klnEY.104527/e04b526a7d02d8b541" style="max-width: 400px;" alt="Jumping between multiple pinned messages"> - <source src="/file/464001102/4/sooI80g3PAE.3746591.mp4/0f053cf67e3aacd8e5" type="video/mp4"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001863/3/vVs9uj8F0H0.69088/73478846bbc4f6ae3d" style="max-width: 400px;" title="Anyone can apply for the Guinness World Record for the largest voice chat audience. Just saying." alt="Voice Chats 2.0"> + <source src="/file/464001257/3/9RRakw5NvsI.4831704.mp4/f1a2562ed60b00cb6e" type="video/mp4"> </video> </div> -<p>In addition to channels and groups, pinned messages now work in <strong>one-on-one chats</strong>.</p> -<h3><a class="anchor" name="improved-live-locations" href="#improved-live-locations"><i class="anchor-icon"></i></a>Improved Live Locations</h3> -<p>When friends share their <a href="https://telegram.org/blog/live-locations">live location</a>, you can set up an alert that will <strong>notify you when they're close</strong>. Icons on the live location map also show <strong>which direction</strong> people are facing.</p> +<blockquote> +<p>To start a Voice Chat, open the profile of any <strong>group</strong> or <strong>channel</strong> where you're an <strong>admin</strong>, tap (⋮) or (⋯) and select <em>Start Voice Chat</em>.</p> +</blockquote> +<h3><a class="anchor" name="recorded-chats" href="#recorded-chats"><i class="anchor-icon"></i></a>Recorded Chats</h3> +<p>While some conversations are <a href="https://telegram.org/blog/autodelete-inv2#auto-delete-messages">meant to be temporary</a>, others are worth preserving and passing on. Admins can now <strong>record audio</strong> from voice chats to <strong>save talks</strong> and publish them for followers who missed the live event.</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/464001013/3/M4ILSoHVnTs.73147/9e62d5b6a045843831" style="max-width: 400px;" alt="Live Locations 2.0"> - <source src="/file/464001701/4/LIiusQqQjYU.2929631.mp4/5c04235b145a60921a" type="video/mp4"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001664/1/8HAOkAE1RvQ.61897/930102909347ca492c" style="max-width: 400px;" title="Warning: Red dots make voice chats dangerously attractive for cats." alt="Recording a voice chat"> + <source src="/file/464001665/3/cRmb5QTKbhs.4703131.mp4/5847830e8f89f2b0b4" type="video/mp4"> </video> </div> -<h3><a class="anchor" name="playlists" href="#playlists"><i class="anchor-icon"></i></a>Playlists</h3> -<p>When you send multiple songs at once, they'll be arranged together in a <strong>playlist</strong> – easier to play, forward, or comment on. Opening one of the songs will queue them all up in Telegram's built-in media player.</p> +<p>Once you finish recording, the audio file becomes <strong>instantly available</strong> in your <a href="https://t.me/TelegramTips/242">Saved Messages</a>. To avoid surprises, chats that are being recorded are marked with a <strong>red light</strong> next to their title.</p> +<h3><a class="anchor" name="raise-hand" href="#raise-hand"><i class="anchor-icon"></i></a>Raise Hand</h3> +<p>In chats where <strong>participants are muted</strong>, listeners can tap to <strong>raise their hand</strong> and alert the admins that they want to speak. Just like calling in to a talk show – but with addictive animations.</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/464001008/3/DOSvKPyWTOQ.150431/219a98435d1f8f4224" style="max-width: 400px;" title="Admin Warning: If you unmute someone and hear 'Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn', it may be a good idea to mute them right back." alt="Allowing a user to speak"> + <source src="/file/464001036/2/IaS7zh198Jc.4811592.mp4/f09c7e9572de74e042" type="video/mp4"> + </video> +</div> + +<p>Your <strong>bio text</strong> is now visible in the list of participants, which you can use to detail your expertise, interests, or just a little bit about yourself. This info might help admins find a good slot for your questions or comments.</p> +<h3><a class="anchor" name="speaker-and-listener-links" href="#speaker-and-listener-links"><i class="anchor-icon"></i></a>Speaker and Listener Links</h3> +<p>Admins of <strong>public</strong> groups and channels can now create invite links that <strong>open the voice chat</strong> right away. Separate links can be made for <strong>speakers</strong> and <strong>listeners</strong>. This way you won't need to unmute important guests when they join – and they can use a different link to promote the upcoming chat to their communities.</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/464001725/2/R7dhU03uykI.245962/d788b4abf685c38846" style="max-width: 400px;" title="Grants +10 charisma to all party members." alt="Admin tools: speaker and listener links, chat titles and more"> + <source src="/file/464001045/2/UGlOXuiqVAQ.4847654.mp4/880d60e6db6e45baa0" type="video/mp4"> + </video> +</div> + +<p>Voice chats also have optional <strong>titles</strong> which help users see the <strong>topic</strong> of conversation before they join.</p> +<h3><a class="anchor" name="join-as" href="#join-as"><i class="anchor-icon"></i></a>Join As…</h3> +<p>When entering a voice chat in a <em>channel</em>, users have the option to join with their personal account or <strong>appear as one of their channels</strong>. Celebrities and public figures can use this to avoid drawing too much attention to their personal accounts.</p> <div class="blog_image_wrap blog_medium_image_wrap"> - <a href="/file/464001692/3/hLZ2rXC33AE.167945/651c923864a7c92ab2" target="_blank"><img src="/file/464001128/2/amSiqQZ8ts4.167945/a583d93ed8621199d8" alt="Playlist sent to a chat" srcset="/file/464001692/3/hLZ2rXC33AE.167945/651c923864a7c92ab2 , 2x" /></a> + <a href="/file/464001305/4/mLAGs_eJ4h4.98472/c3b8a619c32ca54cab" target="_blank"><img src="/file/464001224/4/co_N6utxsG0.38857/fdc5bd32c4f5d30f26" title="The first rule of joining as a channel..." alt="Joining a voice chat as a channel" srcset="/file/464001305/4/mLAGs_eJ4h4.98472/c3b8a619c32ca54cab , 2x" /></a> </div> -<p>Sending multiple files together also displays them in one chat bubble. Just like with photo albums, you can always select each file or track individually.</p> -<h3><a class="anchor" name="channel-post-stats" href="#channel-post-stats"><i class="anchor-icon"></i></a>Channel Post Stats</h3> -<p><a href="https://telegram.org/blog/filters-anonymous-admins-comments#channel-comments">Comments</a> have boosted subscriber activity in channels, and now we're introducing new tools for admins to track it. In addition to <a href="https://telegram.org/blog/folders#channel-stats">channel statistics</a>, you can view stats for individual posts in your channel – including a list of <strong>public channels</strong> to which your post was <strong>forwarded</strong>.</p> + +<blockquote> +<p>For example, the Presidents of <a href="https://t.me/jairbolsonarobrasil">Brazil</a> and <a href="https://t.me/RTErdogan">Turkey</a> could meet for a talk in <a href="https://t.me/durov">Pavel Durov's Channel</a> and answer questions from users without the risk of having their chat lists flooded with fan mail.</p> +</blockquote> +<h3><a class="anchor" name="and-more" href="#and-more"><i class="anchor-icon"></i></a>And More</h3> +<p>If you choose the wrong chat by mistake when <strong>forwarding messages</strong>, press the <strong>X</strong> button before sending them – to either cancel forwarding or <strong>choose a different chat</strong>.</p> <div class="blog_image_wrap blog_medium_image_wrap"> - <a href="/file/464001294/4/fJs06NKTkZw.228015/5804f9ddf30f2c493e" target="_blank"><img src="/file/464001494/2/ciPNhYXjwIo.95089/c516a08655aef40a12" alt="Channel post stats page" srcset="/file/464001294/4/fJs06NKTkZw.228015/5804f9ddf30f2c493e, 2x" /></a> + <a href="/file/464001284/4/radytJhwK-c.52636/0afbf0d4080e59767f" target="_blank"><img src="/file/464001986/1/CdZ9t05Ivek.21564/d204b69f4a8337b1a3" title="We hope we're not being too forward." alt="Choose a different chat or cancel forwarding" srcset="/file/464001284/4/radytJhwK-c.52636/0afbf0d4080e59767f , 2x" /></a> </div> - -<h3><a class="anchor" name="new-animations-on-android" href="#new-animations-on-android"><i class="anchor-icon"></i></a>New Animations on Android</h3> -<p>Our Android developers added new <strong>animations</strong> for sending messages and switching songs in the music player.</p> +<p>You can also <strong>resume playback</strong> from where you left off when listening to <strong>long voice messages</strong>. This was previously available for long videos and long audio tracks, and we thought we'd covered everything – but then our grandma signed up.</p> +<p>Last but not least, <strong>Android</strong> users can choose which action is assigned to <strong>swiping left in the chat list</strong>: archiving chats, pinning, muting, deleting or marking them as read. (On iOS, all these swipe actions are always available, depending on which way you swipe.)</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/464001908/2/B6ZqYiFUdZE.79106/0703814b76101cdfe0" style="max-width: 400px;" alt="New animations and Android-only features"> - <source src="/file/464001746/4/cvV8AjpyYRE.1251515.mp4/5975c988873919d400" type="video/mp4"> + <video class="blog_video_player tl_blog_vid_autoplay" onclick="videoTogglePlay(this)" autoplay loop controls muted poster="/file/464001205/2/x-He9U5kKGY.146619/21bff9f3f33230d66d" style="max-width: 400px;" title="No animated emoji this time, but this UI was partly inspired by the slot machine." alt="Swipe Gesture Settings on Android"> + <source src="/file/464001932/3/wmEE8TxY7VA.1313859.mp4/89dcca1685b58808b4" type="video/mp4"> </video> </div> -<p>Also on Android: when viewing a photo you’ve received, you can <strong>edit and send it back</strong> right away, instead of downloading and uploading it again. Just tap the <strong>brush button</strong> when viewing a photo to quickly draw or <a href="https://telegram.org/blog/video-editor-gifs#animated-stickers-on-media">put stickers</a> on it.</p> -<h3><a class="anchor" name="jackpot" href="#jackpot"><i class="anchor-icon"></i></a>Jackpot</h3> -<p>Send <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB0.png" width="20" height="20" alt="🎰" /> to any chat to see if you hit the jackpot.</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/464001237/4/CP4VGuhqhCc.65437/c929133aba95d45465" style="max-width: 400px;" alt="An animated slot machine emoji sent to a chat turns into a mini-game."> - <source src="/file/464001178/3/hy8Btf9d9xA.3204191.mp4/b901910d8e6ae977da" type="video/mp4"> - </video> -</div> - -<p>In case you missed it, this also works for <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />, <img class="emoji" src="//telegram.org/img/emoji/40/E29ABD.png" width="20" height="20" alt="⚽️" /> and <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" />.</p> -<h3><a class="anchor" name="and-more-animated-emoji" href="#and-more-animated-emoji"><i class="anchor-icon"></i></a>And More Animated Emoji</h3> -<p>We've animated some new emoji for Halloween. To get one of these <img class="emoji" src="//telegram.org/img/emoji/40/F09F9187.png" width="20" height="20" alt="👇" /> in a chat, simply send a message with a single emoji. When viewing animated emoji in chats, try tapping on <img class="emoji" src="//telegram.org/img/emoji/40/E29AB0.png" width="20" height="20" alt="⚰️" /> or <img class="emoji" src="//telegram.org/img/emoji/40/F09F8E83.png" width="20" height="20" alt="🎃" /> for a surprise.</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/464001112/1/7-Ym7DO0mno.31242/2ea81548ac6c2a3301" style="max-width: 400px;" alt="New animated emoji, October 2020 edition"> - <source src="/file/464001706/3/u8EL96JKrJ4.1202069.mp4/44d667a18bcca3339f" type="video/mp4"> - </video> -</div> - -<p>If you are not a fan of Halloween, we've got another new animated emoji for 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/464001373/4/QzundiCAs3g.19900/3dd34c7b4e0c15f219" style="max-width: 400px;" alt="Animated moai emoji"> - <source src="/file/464001132/4/jn7RtvqNvr0.311221.mp4/b794d9b3d90a5d920a" type="video/mp4"> - </video> -</div> - -<h3><a class="anchor" name="how-to-get-this-update" href="#how-to-get-this-update"><i class="anchor-icon"></i></a>How to Get This Update</h3> -<p>The new version with these features is already available for all our <strong>Android</strong> users via <a href="https://telegram.org/dl/android">Google Play</a> or <a href="https://t.me/TAndroidAPK">APK</a>. <del>If you're on iOS, you'll get the update as soon as either a) Apple finishes reviewing it <em>OR</em> b) you decide it's time to switch to Android. <img class="emoji" src="//telegram.org/img/emoji/40/F09F9180.png" width="20" height="20" alt="👀" /></del> <strong>UPD: (October, 31)</strong> The iOS part of the update has now also been approved.</p> <p>And that's it for today, stay tuned for the next update!</p> <div><br></div> -<p><em>October 30, 2020<br>The Telegram Team</em></p> +<p><em>March 18, 2021<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%2Fpinned-messages-locations-playlists%2Fworld&text=Introducing%20Pinned%20Messages%202.0%2C%20Improved%20Live%20Locations%2C%20Playlists%20and%20More" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing Pinned Messages 2.0, Improved Live Locations, Playlists and More" data-url="https://telegram.org/blog/pinned-messages-locations-playlists/world"><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 Pinned Messages 2.0, Improved Live Locations, Playlists and More" data-url="https://telegram.org/blog/pinned-messages-locations-playlists/world" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fvoice-chats-on-steroids&text=Introducing%20Voice%20Chats%202.0%3A%20Channels%2C%20Millions%20of%20Listeners%2C%20Recorded%20Chats%2C%20Admin%20Tools" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Introducing Voice Chats 2.0: Channels, Millions of Listeners, Recorded Chats, Admin Tools" data-url="https://telegram.org/blog/voice-chats-on-steroids"><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 Voice Chats 2.0: Channels, Millions of Listeners, Recorded Chats, Admin Tools" data-url="https://telegram.org/blog/voice-chats-on-steroids" data-via="Telegram">Tweet <span class="tl_twitter_share_cnt"></span></a> </div> </div> diff --git a/data/telegram.org/blog/voice-chats.html b/data/telegram.org/blog/voice-chats.html new file mode 100644 index 0000000000..a36d1a44d7 --- /dev/null +++ b/data/telegram.org/blog/voice-chats.html @@ -0,0 +1,311 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Voice Chats Done Right</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Voice Chats Done Right"> + <meta property="og:image" content="https://telegram.org/file/464001202/4/Mo4VjRb1ndM.81564/729451f158ff1f6267"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Today, Telegram groups get an entire new dimension with Voice Chats – persistent conference calls that members can join and leave as they please. Our 12th update in 2020 brings them to you just in time for remote Christmas carols."> + <meta property="article:published_time" content="2020-12-23T07:38:28+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001202/4/Mo4VjRb1ndM.81564/729451f158ff1f6267" /> + <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/voice-chats" /> + <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?215" 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">O‘zbek</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/video-stickers-better-reactions" class="side_blog_entry"> + <div class="side_blog_date">Jan 31</div> + <div class="side_blog_title">Video Stickers, Better Reactions and More</div> +</a><a href="/blog/reactions-spoilers-translations" class="side_blog_entry"> + <div class="side_blog_date">Dec 30</div> + <div class="side_blog_title">Reactions, Spoilers, Translation and QR Codes</div> +</a><a href="/blog/protected-content-delete-by-date-and-more" class="side_blog_entry"> + <div class="side_blog_date">Dec 7</div> + <div class="side_blog_title">Protected Content, Delete by Date, Device Management and More</div> +</a><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</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> + </div> + </div> +</div></div> + <div id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Voice Chats Done Right</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/464001497/3/13CyQuRGsJ4.16995/7e27e3003741f89510"><img src="/file/464001497/4/EEUwM6j876I.34083.png/4842966fd6d9ea25df" /></picture> +</div> + +<div class="blog_wide_image"> + <a href="/file/464001062/2/DWQJyqLZkdM.231057/386a4080f2f5cc47a2" target="_blank"><img src="/file/464001202/4/Mo4VjRb1ndM.81564/729451f158ff1f6267" srcset="/file/464001062/2/DWQJyqLZkdM.231057/386a4080f2f5cc47a2, 1200w" title="Don't eat the yellow sand." alt="Voice Chats Done Right"/></a> +</div> + +<p>Since <strong>2013</strong>, we've been expanding the definition of <strong>Group Chats</strong>, adding features like <a href="https://telegram.org/blog/replies-mentions-hashtags">replies</a>, <a href="https://telegram.org/tour/groups#mentions">mentions</a>, <a href="https://telegram.org/blog/polls-2-0-vmq">polls</a>, <a href="https://telegram.org/blog/admin-revolution">admin tools</a>, <a href="https://telegram.org/blog/profile-videos-people-nearby-and-more#group-stats">statistics</a> – and allowing <strong>hundreds of thousands</strong> of members per group. Many of these features were later incorporated into other apps and redefined how people communicate.</p> +<p>Today, Telegram groups get an entire new dimension with <strong>Voice Chats</strong> – persistent conference calls that members can join and leave as they please. Our <a href="https://telegram.org/blog">12th update</a> in <strong>2020</strong> brings them to you just in time for remote Christmas carols.</p> +<blockquote> +<p><strong>UPD March 2021:</strong> Don't miss <a href="https://telegram.org/blog/voice-chats-on-steroids/">Voice Chats 2.0: Channels, Millions of Listeners, Recorded Chats, Admin Tools</a></p> +</blockquote> +<h3><a class="anchor" name="voice-chats" href="#voice-chats"><i class="anchor-icon"></i></a>Voice Chats</h3> +<p><strong>Any Telegram group</strong> can now become a voice chat room that is always on. Voice Chats run in parallel to existing text and media-based communication, adding a <strong>live layer</strong> of ephemeral talk to the group. They can be used as virtual office spaces for teams or informal lounges for any community.</p> +<p>While Voice Chats are not group calls, they can achieve similar goals – at the same time offering <strong>flexibility</strong> instead of old school scheduling. In larger groups, they also provide serendipitous opportunities for talking to people.</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/464001806/2/ZdTEg4owdeU.196621/6b3f6ba6826440ae99" style="max-width: 400px;" title="Karaoke, anyone?" alt="Voice Chat in a group"> + <source src="/file/464001586/3/CS24oNVxoVk.4628800.mp4/18ad205065ab867938" type="video/mp4"> + </video> +</div> + +<p>Groups with active voice chats have a special bar at the top that shows <strong>who is talking</strong> at the moment (and even how loud they are). This can help you pick the right moment to join – like noticing your friends going over to the cooler.</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/464001370/2/WYR5DDQ-uE4.18440/73f35495d32d05fd6b" style="max-width: 400px;" title="The new cooler for the cool kids." alt="'Speaking' statuses in the top bar"> + <source src="/file/464001360/3/98YEuQ8P6NE.569251.mp4/7da9d6e1473626a773" type="video/mp4"> + </video> +</div> + +<p>After joining a voice chat, you are <strong>free to move around</strong> the app, browse conversations and send messages. You stay connected to the chat and the microphone controls remain on screen so that you can quickly mute and unmute yourself at any time.</p> +<p>If you're on <strong>Android</strong>, you can enjoy the full Voice Chat experience with a <strong>system-wide floating widget</strong> that shows your mic controls and who is currently talking, even when Telegram is in the background. Santa is on Android too – and he needs his sleigh navigator open at all times.</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/464001537/3/o0Mvq_5eSpE.119905/00077aeb837fb1545b" style="max-width: 400px;" title="The mute button is a lot like space – no one will hear you scream." alt="Voice Chat system overlay on Android"> + <source src="/file/464001525/1/xAfJSzQm1Wg.4562843.mp4/3ef08c911db0d4aa12" type="video/mp4"> + </video> +</div> + +<p>You can chat with whomever is online or invite more people via the handy menu. Voice Chats can accommodate <strong>a few thousand participants</strong>, which means they'll work for everything from consulting family members while out shopping to a massive live event.</p> +<p>Last but not least, Voice Chats show <strong>spectacular animations</strong>. To get these right, our designer had to sell his soul to the devil – and we think it was totally worth it.</p> +<blockquote> +<p>To create a Voice Chat and find your own unique way of using them, open the profile of any group where you're an admin, tap (⋯) or (⋮) and select <em>Start Voice Chat</em>.</p> +</blockquote> +<p>Like Telegram groups before them, we hope that Voice Chats will change the way people collaborate and keep in touch. In the coming weeks, we'll be refining them further, listening to your feedback, improving noise suppression, and adding more features like <strong>video</strong> and <strong>screen sharing</strong>. </p> +<h3><a class="anchor" name="push-to-talk-shortcuts" href="#push-to-talk-shortcuts"><i class="anchor-icon"></i></a>Push-to-Talk Shortcuts</h3> +<p>On <a href="https://desktop.telegram.org/">Telegram Desktop</a> and in the <a href="https://macos.telegram.org">native macOS app</a>, you can choose a <strong>push-to-talk key</strong> for Voice Chats, to control your mic even when Telegram is not focused. At long last, we've found a use for your Caps Lock key.</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/464001912/3/0LcsNe65r_o.74428/965a9ce215eed550d6" style="max-width: 400px;" title="Saying 'Over' at the end of your sentences is optional." alt="Push to talk shortcut on Telegram Desktop"> + <source src="/file/464001562/2/VbNKvYk-rgA.1446090.mp4/a0213f79ac872974e5" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="sticker-outlines" href="#sticker-outlines"><i class="anchor-icon"></i></a>Sticker Outlines</h3> +<p>Animated stickers on Telegram are <a href="https://telegram.org/blog/animated-stickers">optimized for efficiency</a> and deliver smooth <strong>180 frame animations</strong> with infinite resolution in less than <strong>50 KB</strong>.</p> +<p>With today's update, stickers will load <strong>even faster</strong> than before – and show a <strong>shimmering outline</strong> of what you're about to see. Be careful not to blink though, or you'll miss 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/464001169/2/0kkUnJ9ZmjA.32038/ab43bf7088bcb9dee1" style="max-width: 400px;" title="Who’s That Pokémon?" alt="Watch sticker outlines while they're loading"> + <source src="/file/464001434/3/5cTeI6zyulU.3341650.mp4/946a2db8cbe26511b8" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="sd-card-storage-on-android" href="#sd-card-storage-on-android"><i class="anchor-icon"></i></a>SD Card Storage on Android</h3> +<p>Users on Android devices can now move their Telegram app data from internal storage to their <strong>SD card</strong>, allowing those with minimal storage to save more media and files and maximize their Telegram experience.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001951/3/-k4orSn_n60.30678/80f578ea35c6edf933" target="_blank"><img src="/file/464001951/3/-k4orSn_n60.30678/80f578ea35c6edf933" title="Not to be confused with an XD card, that's some old pre-emoji technology." alt="Storage Usage settings" srcset="/file/464001951/3/-k4orSn_n60.30678/80f578ea35c6edf933 , 2x" /></a> +</div> + +<blockquote> +<p>Remember that you can always keep Telegram's storage footprint on your device <strong>incredibly small</strong>. See <em>Settings > Data and Storage > Storage Usage</em>.</p> +</blockquote> +<h3><a class="anchor" name="new-animations-on-android" href="#new-animations-on-android"><i class="anchor-icon"></i></a>New Animations on Android</h3> +<p>We've added <strong>slick new animations</strong> throughout the Android app – when tapping the <strong>New Message</strong> button, opening profiles, managing chat folders and anywhere you see <strong>message counters</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/464001762/2/vS5cTej6l1Y.63720/ae574ada133ffee402" style="max-width: 400px;" title="You're never alone with the right animations." alt="New animations on Android"> + <source src="/file/464001188/3/2-CCGC5-feY.1572853.mp4/63ac65de3baad1922d" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="announce-messages-on-ios" href="#announce-messages-on-ios"><i class="anchor-icon"></i></a>Announce Messages on iOS</h3> +<p>If you're still on iOS, you can have Siri read incoming messages aloud in your headphones. Open <em>iOS Settings > Notifications > Announce Messages</em> and set Telegram to <strong>ON</strong> to stay up to date on your chats even while washing the dishes.</p> +<h3><a class="anchor" name="editing-improvements" href="#editing-improvements"><i class="anchor-icon"></i></a>Editing Improvements</h3> +<p>Android users can now quickly edit a photo which they've already sent to add <strong>effects</strong>, <strong>drawings</strong> or <strong>stickers</strong> with our powerful <a href="https://telegram.org/blog/video-editor-gifs">media editor</a>. iOS users can tap the pen button to quickly <strong>edit and send back</strong> a photo they have received.</p> +<p>Each of these features was previously available only on one of the platforms, but now both iOS and Android offer <strong>equal opportunities</strong> for drawing moustaches on selfies.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001693/2/rXm4nECM0Kw.44043/55d3683f2c0c17425e" target="_blank"><img src="/file/464001929/2/QUE897I1tDQ.18264/6c4f217a7c580c3ac5" title="It was surprisingly easy to get the shark into the suit. To get him to wear glasses was a lot more work." alt="Editing Improvements on iOS and Android" srcset="/file/464001693/2/rXm4nECM0Kw.44043/55d3683f2c0c17425e , 2x" /></a> +</div> + +<p>When <strong>editing a message or caption</strong>, as you approach the maximum message length, a counter will appear showing how many remaining characters you have lef</p> +<h3><a class="anchor" name="more-animated-emoji" href="#more-animated-emoji"><i class="anchor-icon"></i></a>More Animated Emoji</h3> +<p>No update is complete without even more animated emoji. As usual, simply send a message with a single emoji to get one of these <img class="emoji" src="//telegram.org/img/emoji/40/F09F9187.png" width="20" height="20" alt="👇" /> in a chat.</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/464001923/2/F1Nk2JqOEMw.92452/b24b374017004006e6" style="max-width: 400px;" title="Beg for Christmas presents, yeehaw your way through any trouble 2021 throws at you or flex about your achievements in 2020." alt="New animated emoji, December 2020"> + <source src="/file/464001085/1/wdSuxrUZoos.2617054.mp4/75874d6d07768053d6" type="video/mp4"> + </video> +</div> + +<p>There's a story in there somewhere about a cyber cowboy solving a murder mystery.</p> +<h3><a class="anchor" name="feature-suggestion-platform" href="#feature-suggestion-platform"><i class="anchor-icon"></i></a>Feature Suggestion Platform</h3> +<p>Many Telegram features started out as user suggestions. To help identify potential new features and locate bugs within the app, we're launching a <strong>public</strong> <a href="https://bugs.telegram.org"><strong>Bug and Suggestion Platform</strong></a>.</p> +<!--<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="LARGE" target="_blank"><img src="SMALL" title="Wake up, Samurai. We have a bug to fix." alt="Bugs and Suggestions" srcset="LARGE , 2x" /></a> +</div>--> + +<p>We'll be rolling out the ability to suggest new features and report bugs <strong>gradually</strong> to make sure each submission gets the attention it deserves. All Telegram users are already welcome to view existing entries and <strong>vote</strong> on them. </p> +<p>And that's all for today, we'll see you in 2021 or once we're done building the next big thing – whichever comes first.</p> +<div><br></div> + +<p><em>December 23, 2020<br>The Telegram Team</em></p> +<div><br></div> + +<blockquote> +<p><strong>P.S.</strong> The end of the year is normally a time to look back at the past 12 months. Instead, our founder Pavel Durov has just announced his <a href="https://t.me/durov/142"><strong>strategy for making Telegram sustainable</strong></a>, to continue providing you with <strong>great features for decades to come</strong>.</p> +</blockquote> +</div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Fblog%2Fvoice-chats&text=Telegram%20groups%20get%20an%20entire%20new%20dimension%20with%20Voice%20Chats%20%E2%80%93%20persistent%20conference%20calls%20that%20members%20can%20join%20and%20leave%20as%20they%20please." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram groups get an entire new dimension with Voice Chats – persistent conference calls that members can join and leave as they please." data-url="https://telegram.org/blog/voice-chats"><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 groups get an entire new dimension with Voice Chats – persistent conference calls that members can join and leave as they please." data-url="https://telegram.org/blog/voice-chats" 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/video-stickers-better-reactions"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001234/e805/Z0pNrCJET-E.104373/a38ce74977bc53b064" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Video Stickers, Better Reactions and More</h4> + <div class="dev_blog_card_lead">This update brings easy-to-make video stickers, better reactions with more compact animations and extra emoji, a button to review unseen…</div> + </div> + <div class="dev_blog_card_date">Jan 31, 2022</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/reactions-spoilers-translations"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001488/d35b/oNi_rR0In0o.124097/c74f7d759893b78bfb" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Reactions, Spoilers, Translation and QR Codes</h4> + <div class="dev_blog_card_lead">Telegram's 12th update of the year introduces reactions, message translation, themed QR codes, hidden text (spoilers), and more.</div> + </div> + <div class="dev_blog_card_date">Dec 30, 2021</div> +</div></a><a class="dev_blog_card_link_wrap" href="/blog/protected-content-delete-by-date-and-more"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001572/2/u_lvhH-CjJ0.99595/a7fca60f9c9e6e193c" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Protected Content, Delete by Date, Device Management and More</h4> + <div class="dev_blog_card_lead">Today's update brings tools to prevent others from saving content from groups and channels, the ability to delete messages for specific…</div> + </div> + <div class="dev_blog_card_date">Dec 7, 2021</div> +</div></a><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'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> + </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?43"></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> + diff --git a/data/telegram.org/faq_channels.html b/data/telegram.org/faq_channels.html new file mode 100644 index 0000000000..9cd612a10c --- /dev/null +++ b/data/telegram.org/faq_channels.html @@ -0,0 +1,165 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Channels FAQ</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Channels FAQ"> + <meta property="og:image" content=""> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="This FAQ is about Telegram channels. +Back to the main FAQ » +What is a channel? +How are private and public channels different?…"> + + <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?215" 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">O‘zbek</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 id="dev_page_content_wrap" class=" dev_faq_page"> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Channels FAQ</h1> + + <div id="dev_page_content"><blockquote> +<p>This FAQ is about Telegram channels.<br><a href="/faq">Back to the main FAQ »</a></p> +</blockquote> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="#q-what-39s-a-channel">What is a channel?</a></li> +<li><a href="#q-how-are-public-and-private-channels-different">How are private and public channels different?</a></li> +<li><a href="#q-what-can-administrators-do">What can administrators do?</a></li> +<li><a href="#q-what-happens-if-i-delete-a-message">What happens if I delete a message?</a></li> +<li><a href="#q-how-do-i-add-people-to-my-channel">How do I add people to my channel?</a></li> +<li><a href="#q-what-does-the-eye-icon-mean">What does the eye icon mean?</a></li> +<li><a href="#q-how-do-i-know-who-posted-a-message">How do I know who posted a message?</a></li> +<li><a href="#q-are-there-any-feedback-options">Are there any feedback options?</a></li> +</ul> +<p></div></p> +<hr> +<h4><a class="anchor" name="q-what-39s-a-channel" href="#q-what-39s-a-channel"><i class="anchor-icon"></i></a>Q: What's a channel?</h4> +<p>Channels are a tool for broadcasting <strong>public</strong> messages to large audiences. In fact, channels can have an unlimited number of subscribers. When you post in a channel, the message is signed with the channel's name and not yours. You can appoint additional administrators to help you manage the channel. New subscribers can see the entire message history in a channel once they join.</p> +<p>If you'd like an example, join our official <a href="https://telegram.me/telegram">Telegram</a> channel to get notified about our updates.</p> +<p>To create a channel:<br><em>iPhone:</em> Start a new message (tap the icon in the top-right corner in Chats). Then ‘New Channel’.<br><em>Android:</em> Tap the circular pencil icon in the chat list. Then ‘New Channel’.<br><em>Windows Phone:</em> Tap the ‘+’ button on the bottom bar. Then ‘New Channel’.</p> +<h4><a class="anchor" name="q-how-are-public-and-private-channels-different" href="#q-how-are-public-and-private-channels-different"><i class="anchor-icon"></i></a>Q: How are public and private channels different?</h4> +<p>Public channels have a username. Anyone can find them in Telegram search and join. Private channels are closed societies – you need to be added by the owner or get an invite link to join.</p> +<p>Please note that private channels with publicly available invite links will be treated in the same way as public channels, should it come to <a href="https://telegram.org/faq#q-there-39s-illegal-content-on-telegram-how-do-i-take-it-down">content disputes</a>.</p> +<h4><a class="anchor" name="q-what-can-administrators-do" href="#q-what-can-administrators-do"><i class="anchor-icon"></i></a>Q: What can administrators do?</h4> +<p>The <strong>owner</strong> of a channel can broadcast messages, delete any messages, add subscribers (<a href="#q-how-do-i-add-people-to-my-channel">the first 200 only</a>), remove subscribers, change the channel's name, profile image and link, as well as delete the channel completely. The owner can also add and remove administators to help manage the channel.</p> +<p>You can set up <a href="https://telegram.org/blog/admin-revolution#admin-rights"><strong>administrator rights</strong></a> for each individual administrator when you appoint them.</p> +<h4><a class="anchor" name="q-what-happens-if-i-delete-a-message" href="#q-what-happens-if-i-delete-a-message"><i class="anchor-icon"></i></a>Q: What happens if I delete a message?</h4> +<p>If a message is deleted in a channel, it will disappear for all subscribers.</p> +<h4><a class="anchor" name="q-how-do-i-add-people-to-my-channel" href="#q-how-do-i-add-people-to-my-channel"><i class="anchor-icon"></i></a>Q: How do I add people to my channel?</h4> +<p>As the channel's owner, you may invite the first 200 subscribers to your channel. Once the subscriber count reaches 200, the channel is on its own. If it's a public channel, it will have a username and a telegram.me/ link (e.g. <a href="https://t.me/telegram">t.me/telegram</a>) – you can post this link on social networks, advertise it in magazines, or tattoo it on your back. If you have a private channel, you can send an invite link to your friends. </p> +<p>Please do not send channel links (or other unsolicited messages) to strangers. If they report spam from your account, you may be banned from contacting other people, however good your intentions.</p> +<h4><a class="anchor" name="q-what-does-the-eye-icon-mean" href="#q-what-does-the-eye-icon-mean"><i class="anchor-icon"></i></a>Q: What does the eye icon mean?</h4> +<p>Each post in a channel has a view counter. Views from forwarded copies of your messages are also included in the total count. This way you can see how far it has spread.</p> +<p>Please note that these numbers are approximate — we don't want to keep a record for everything you've ever viewed. After a short while (around 4 days), Telegram will forget that you've seen a post and will count you again if you navigate to it. For this reason you may see several views for posts in a private channel where you are alone.</p> +<h4><a class="anchor" name="q-how-do-i-know-who-posted-a-message" href="#q-how-do-i-know-who-posted-a-message"><i class="anchor-icon"></i></a>Q: How do I know who posted a message?</h4> +<p>As the owner of the channel, you can enable admin signatures that users will see next to the view counters. These signature only mention the name of the administrator and no link to their profile.</p> +<p>If the signatures are disabled, there is no way for users to know whether a message was posted by the owner or one of the administrators.</p> +<h4><a class="anchor" name="q-are-there-any-feedback-options" href="#q-are-there-any-feedback-options"><i class="anchor-icon"></i></a>Q: Are there any feedback options?</h4> +<p>You can add a <a href="https://telegram.org/blog/privacy-discussions-web-bots#broadcasts-meet-group-chats">discussion group chat</a> to the channel, and your subscribers will see a <a href="https://telegram.org/blog/filters-anonymous-admins-comments">comment button</a> for each post in the channel. Comments show up in a thread of their own and also land in the discussion group to keep everyone in the loop and make it easier for admins to keep the conversation civil.</p> +<p>You can also use bots (e.g. the <a href="https://t.me/like">@like</a> bot) to add buttons to your posts.</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="/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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/faq_spam.html b/data/telegram.org/faq_spam.html new file mode 100644 index 0000000000..a7ff571d34 --- /dev/null +++ b/data/telegram.org/faq_spam.html @@ -0,0 +1,163 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Spam FAQ</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Spam FAQ"> + <meta property="og:image" content=""> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="This FAQ is for people whose accounts were limited after being reported for spam. +Back to the main FAQ » +1. What happened…"> + + <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?215" 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">O‘zbek</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 id="dev_page_content_wrap" class=" dev_faq_page"> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Spam FAQ</h1> + + <div id="dev_page_content"><blockquote> +<p>This FAQ is for people whose accounts were limited after being reported for spam.<br><a href="/faq">Back to the main FAQ »</a></p> +</blockquote> +<p><div class="dev_page_nav_wrap"></p> +<ul> +<li><a href="#q-what-happened-to-my-account">1. What happened to my account?</a></li> +<li><a href="#q-so-i-can-39t-send-messages-anymore">2. Can I send any messages?</a></li> +<li><a href="#q-why-was-i-reported">3. Why was I reported?</a></li> +<li><a href="#q-what-can-people-report-me-for">4. What could people report me for?</a></li> +<li><a href="#q-what-do-i-do-now">5. What do I do now?</a></li> +<li><a href="#q-i-read-all-of-the-above-and-im-certain-that-i-didnt-break-any">6. I‘m definitely innocent, not even a ’hi' sent to strangers.</a></li> +<li><a href="#q-i-know-i-was-wrong-please-release-me-sooner">7. I know I was wrong, please release me now!</a></li> +<li><a href="#q-ive-just-signed-up-and-didnt-send-any-messages-yet-but-my-acco">8. I‘ve just signed up and I’m already limited. What do I do?</a></li> +</ul> +<p></div></p> +<hr> +<h3><a class="anchor" name="q-what-happened-to-my-account" href="#q-what-happened-to-my-account"><i class="anchor-icon"></i></a>Q: What happened to my account?</h3> +<p>When users press the ‘Report spam’ button in a chat, they forward these messages to our team of moderators for review. If the moderators decide that the messages deserved this, the account becomes limited temporarily.</p> +<p>This means that if you have been sending unwanted messages to random strangers or posting spam in groups, you lose the ability to do so.</p> +<h3><a class="anchor" name="q-so-i-can-39t-send-messages-anymore" href="#q-so-i-can-39t-send-messages-anymore"><i class="anchor-icon"></i></a>Q: So I can't send messages anymore?</h3> +<p>No, it's not that bad. Limited accounts can send messages to people who have their number saved as a <strong>contact</strong>. You can also always <strong>reply</strong> to anyone who messages you first.</p> +<h3><a class="anchor" name="q-why-was-i-reported" href="#q-why-was-i-reported"><i class="anchor-icon"></i></a>Q: Why was I reported?</h3> +<p>Telegram‘s username search is not a tool for making new friends. People usually don’t like it when strangers contact them — so they will report you if they find your messages annoying. Please only contact people if you're sure that they are expecting messages from you. The same applies to adding people to unwanted groups and channels. In addition to this, group admins can also report users who post spam in their groups.</p> +<p>Naturally, all such reports are also checked by human moderators. If the messages contain spam, the account will be temporarily limited.</p> +<h3><a class="anchor" name="q-what-can-people-report-me-for" href="#q-what-can-people-report-me-for"><i class="anchor-icon"></i></a>Q: What can people report me for?</h3> +<p>For private messages, it really doesn‘t matter what you send, as long as the receivers find it unwelcome. It could have been a photo, an invite link or a simple ’hello‘. Please only send messages when you are sure people won’t mind getting them.</p> +<p>As a general rule, people <strong>do</strong> mind getting unsolicited advertisements, links, invite links to groups or channels, random photos and, above all, anything related to <strong>commerce</strong> or <strong>online popularity</strong>. If you send them something like this, you will be blocked — and everybody else will be happy.</p> +<p>Moderators are more lenient when it comes to messages in groups, but anyone who sends spam or unsolicited advertisments will be limited.</p> +<h3><a class="anchor" name="q-what-do-i-do-now" href="#q-what-do-i-do-now"><i class="anchor-icon"></i></a>Q: What do I do now?</h3> +<p>If this happened to you for the first time (and you are not an industrial scale spammer), most likely your account will be limited for a few days or so. Please wait and consider that people want a peaceful time using our messenger.</p> +<p>Repeated offences will result in longer periods of being blocked. If you keep writing unwanted messages to strangers, you may lose the ability to do so forever. </p> +<h3><a class="anchor" name="q-i-read-all-of-the-above-and-im-certain-that-i-didnt-break-any" href="#q-i-read-all-of-the-above-and-im-certain-that-i-didnt-break-any"><i class="anchor-icon"></i></a>Q: I read all of the above, and I‘m certain that I didn’t break any rules!</h3> +<p>If you are sure that the limit was wrongfully applied to your account, please contact our <strong><a href="https://telegram.me/spambot">@SpamBot</a></strong>.</p> +<p>Please forgive us for the inconvenience — even the best systems, algorithms and well-trained people can make mistakes sometimes. </p> +<h3><a class="anchor" name="q-i-know-i-was-wrong-please-release-me-sooner" href="#q-i-know-i-was-wrong-please-release-me-sooner"><i class="anchor-icon"></i></a>Q: I know I was wrong, please release me sooner!</h3> +<p>We're sorry, but this is impossible. We value the inner peace of Telegram users too much.</p> +<h3><a class="anchor" name="q-ive-just-signed-up-and-didnt-send-any-messages-yet-but-my-acco" href="#q-ive-just-signed-up-and-didnt-send-any-messages-yet-but-my-acco"><i class="anchor-icon"></i></a>Q: I‘ve just signed up and didn’t send any messages yet, but my account is limited.</h3> +<p>Some numbers may trigger an overly harsh response from our system, either due to their previous owners‘ activities or due to them being certain virtual/VOIP numbers. We’re sorry if this resulted in your account being limited for no reason. </p> +<p>If you think this is your case, please contact <strong><a href="https://telegram.me/spambot">@SpamBot</a></strong> and tell it your story. </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="/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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/privacy.html b/data/telegram.org/privacy.html new file mode 100644 index 0000000000..363908ba0d --- /dev/null +++ b/data/telegram.org/privacy.html @@ -0,0 +1,299 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Privacy Policy</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Telegram Privacy Policy"> + <meta property="og:image" content=""> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="For a detailed explanation of Apple Privacy Labels used by Telegram, see this page +1. Introduction +This Privacy Policy…"> + + <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?215" 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">O‘zbek</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 id="dev_page_content_wrap" class=" "> + <div class="dev_page_bread_crumbs"></div> + <h1 id="dev_page_title">Telegram Privacy Policy</h1> + + <div id="dev_page_content"><!-- scroll_nav --> + +<p></p> +<h3><a class="anchor" name="1-introduction" href="#1-introduction"><i class="anchor-icon"></i></a>1. Introduction</h3> +<p>This Privacy Policy sets out how we, Telegram Messenger Inc. <strong>(“Telegram”)</strong>, use and protect your personal data that you provide to us, or that is otherwise obtained or generated by us, in connection with your use of our cloud-based messaging services (the <strong>“Services”</strong>). For the purposes of this Privacy Policy, <strong>‘we’</strong>, <strong>‘us’</strong> and <strong>‘our’</strong> refers to Telegram, and <strong>‘you’</strong> refers to you, the user of the Services.</p> +<h4><a class="anchor" name="1-1-privacy-principles" href="#1-1-privacy-principles"><i class="anchor-icon"></i></a>1.1 Privacy Principles</h4> +<p>Telegram has two fundamental principles when it comes to collecting and processing private data:</p> +<ul> +<li>We don't use your data to show you ads.</li> +<li>We only store the data that Telegram needs to function as a secure and feature-rich messaging service.</li> +</ul> +<h4><a class="anchor" name="1-2-terms-of-service" href="#1-2-terms-of-service"><i class="anchor-icon"></i></a>1.2. Terms of Service</h4> +<p>This Privacy Policy forms part of our Terms of Service, which describes the terms under which you use our Services and which are available at <strong><a href="https://telegram.org/tos"><a href="https://telegram.org/tos">https://telegram.org/tos</a></a></strong>. This Privacy Policy should therefore be read in conjunction with those terms.</p> +<h4><a class="anchor" name="1-3-table-of-contents" href="#1-3-table-of-contents"><i class="anchor-icon"></i></a>1.3. Table of Contents</h4> +<p>This Privacy Policy explains the following:</p> +<ul> +<li><a href="#2-legal-ground-for-processing-your-personal-data">the legal basis for processing your personal data;</a></li> +<li><a href="#3-what-personal-data-we-use">what personal data we may collect from you;</a></li> +<li><a href="#4-keeping-your-personal-data-safe">how we keep your personal data safe;</a></li> +<li><a href="#5-processing-your-personal-data">what we may use your personal data for;</a></li> +<li><a href="#8-who-your-personal-data-may-be-shared-with">who your personal data may be shared with;</a> and </li> +<li><a href="#9-your-rights-regarding-the-personal-data-you-provide-to-us">your rights regarding your personal data.</a></li> +</ul> +<h4><a class="anchor" name="1-4-eea-representative" href="#1-4-eea-representative"><i class="anchor-icon"></i></a>1.4. EEA Representative</h4> +<p>If you live in a country in the <a href="https://en.wikipedia.org/wiki/European_Economic_Area">European Economic Area</a> (EEA), the Services are provided by Telegram, which for the purposes of applicable data protection legislation is the data controller responsible for your personal data when you use our Services. However, as Telegram is located outside the EEA, we have designated one of our EEA-based group companies, Telegram UK Holdings Ltd (71-75 Shelton Street, Covent Garden, London, England, WC2H 9JQ), as a representative to whom you may direct any issues you have relating to our processing of your personal data. </p> +<h3><a class="anchor" name="2-legal-ground-for-processing-your-personal-data" href="#2-legal-ground-for-processing-your-personal-data"><i class="anchor-icon"></i></a>2. Legal Ground for Processing Your Personal Data</h3> +<p>We process your personal data on the ground that such processing is necessary to further our legitimate interests (including: <em>(1)</em> providing effective and innovative Services to our users; and <em>(2)</em> to detect, prevent or otherwise address fraud or security issues in respect of our provision of Services), unless those interests are overridden by your interest or fundamental rights and freedoms that require protections of personal data.</p> +<h3><a class="anchor" name="3-what-personal-data-we-use" href="#3-what-personal-data-we-use"><i class="anchor-icon"></i></a>3. What Personal Data We Use</h3> +<h4><a class="anchor" name="3-1-basic-account-data" href="#3-1-basic-account-data"><i class="anchor-icon"></i></a>3.1. Basic Account Data</h4> +<p>Telegram is a communication service. You provide your mobile number and basic account data (which may include profile name, profile picture and about information) to create a Telegram account.</p> +<p>To make it easier for your contacts and other people to reach you and recognize who you are, the screen name you choose, your profile pictures, and your <a href="https://telegram.org/faq#usernames-and-t-me">username</a> (should you choose to set one) on Telegram are always public. We don't want to know your real name, gender, age or what you like. </p> +<p>We do <strong>not</strong> require your screen name to be your real name. Note that users who have you in their contacts will see you by the name they saved and not by your screen name. This way your mother can have the public name 'Johnny Depp' while appearing as 'Mom' to you and as 'Boss' to her underlings at work (or the other way around, depending on how these relationships are structured).</p> +<h4><a class="anchor" name="3-2-your-e-mail-address" href="#3-2-your-e-mail-address"><i class="anchor-icon"></i></a>3.2. Your E-mail Address</h4> +<p>When you enable 2-step-verification for your account or store documents using the Telegram Passport feature, you can opt to set up a password recovery email. This address will only be used to send you a password recovery code if you forget it. That's right: no marketing or “we miss you” bullshit.</p> +<h4><a class="anchor" name="3-3-your-messages" href="#3-3-your-messages"><i class="anchor-icon"></i></a>3.3. Your Messages</h4> +<h5><a class="anchor" name="3-3-1-cloud-chats" href="#3-3-1-cloud-chats"><i class="anchor-icon"></i></a>3.3.1. Cloud Chats</h5> +<p>Telegram is a cloud service. We store messages, photos, videos and documents from your <em>cloud chats</em> on our servers so that you can access your data from any of your devices anytime without having to rely on third-party backups. All data is stored heavily encrypted and the encryption keys in each case are stored in several other data centers in different jurisdictions. This way local engineers or physical intruders cannot get access to user data.</p> +<h5><a class="anchor" name="3-3-2-secret-chats" href="#3-3-2-secret-chats"><i class="anchor-icon"></i></a>3.3.2. Secret Chats</h5> +<p><em>Secret chats</em> use end-to-end encryption. This means that all data is encrypted with a key that only you and the recipient know. There is <strong>no way</strong> for us or anybody else without direct access to your device to learn what content is being sent in those messages. We do not store your secret chats on our servers. We also do not keep any logs for messages in secret chats, so after a short period of time we no longer know who or when you messaged via secret chats. For the same reasons secret chats are not available in the cloud — you can only access those messages from the device they were sent <em>to</em> or <em>from</em>.</p> +<h5><a class="anchor" name="3-3-3-media-in-secret-chats" href="#3-3-3-media-in-secret-chats"><i class="anchor-icon"></i></a>3.3.3. Media in Secret Chats</h5> +<p>When you send photos, videos or files via secret chats, before being uploaded, each item is encrypted with a separate key, not known to the server. This key and the file’s location are then encrypted again, this time with the secret chat’s key — and sent to your recipient. They can then download and decipher the file. This means that the file is technically on one of Telegram’s servers, but it looks like a piece of random indecipherable garbage to everyone except for you and the recipient. We don’t know what this random data stands for and we have no idea which particular chat it belongs to. We periodically purge this random data from our servers to save disk space.</p> +<h5><a class="anchor" name="3-3-4-public-chats" href="#3-3-4-public-chats"><i class="anchor-icon"></i></a>3.3.4. Public Chats</h5> +<p>In addition to private messages, Telegram also supports public channels and public groups. All public chats are cloud chats (see <a href="#3-3-1-cloud-chats">section 3.3.1 above</a>). Like everything on Telegram, the data you post in public communities is encrypted, both in storage and in transit — but everything you post in public will be accessible to everyone.</p> +<h5><a class="anchor" name="3-4-phone-number-and-contacts" href="#3-4-phone-number-and-contacts"><i class="anchor-icon"></i></a>3.4. Phone Number and Contacts</h5> +<p>Telegram uses phone numbers as unique identifiers so that it is easy for you to switch from SMS and other messaging apps and retain your social graph. We ask your permission before syncing your contacts.</p> +<p>We store your up-to-date contacts in order to notify you as soon as one of your contacts signs up for Telegram and to properly display names in notifications. We only need the number and name (first and last) for this to work and store no other data about your contacts.</p> +<p>Our automatic algorithms can also use anonymized sets of phone numbers to calculate the approximate number of potential contacts an unregistered phone number may have on Telegram. When you open the 'Invite friends' interface, we display the resulting statistics next to your contacts to give you an idea of who could benefit most from joining Telegram. </p> +<p>You can always stop syncing contacts or delete them from our servers in Settings > Privacy & Security > Data Settings.</p> +<blockquote> +<p>If you are using Android, Telegram will ask you for permission to access your phone call logs (READ_CALL_LOG). If you grant this permission, Telegram will be able verify your account by transmitting a phone call instead of asking you to enter a code. Telegram uses this permission only to confirm receipt of the confirmation call by verifying the number in the call log.</p> +</blockquote> +<h4><a class="anchor" name="3-5-location-data" href="#3-5-location-data"><i class="anchor-icon"></i></a>3.5. Location Data</h4> +<p>If you share a location in a chat, this location data is treated like other messages in <a href="https://telegram.org/privacy?setln=en#3-3-1-cloud-chats">cloud</a> or <a href="https://telegram.org/privacy?setln=en#3-3-2-secret-chats">secret chats</a> respectively.</p> +<p>If you share your <a href="https://telegram.org/blog/live-locations">Live Location</a> in any chat or turn on <em>’Make Myself Visible’</em> in <a href="https://telegram.org/blog/new-profiles-people-nearby#people-nearby-2-0">People Nearby</a>, Telegram will use your data to display your location to those users with whom you are sharing it, even when the app is closed – for as long as you keep these optional features activated.</p> +<h5><a class="anchor" name="3-6-cookies" href="#3-6-cookies"><i class="anchor-icon"></i></a>3.6. Cookies</h5> +<p>The only cookies we use are those to operate and provide our Services on the web. We do not use cookies for profiling or advertising. The cookies we use are small text files that allow us to provide and customize our Services, and in doing so provide you with an enhanced user experience. Your browser should allow you to control these cookies, including whether or not to accept them and how to remove them. You may choose to block cookies with your web browser, however, if you do disable these cookies you will not be able to log in to Telegram Web.</p> +<h3><a class="anchor" name="4-keeping-your-personal-data-safe" href="#4-keeping-your-personal-data-safe"><i class="anchor-icon"></i></a>4. Keeping Your Personal Data Safe</h3> +<h4><a class="anchor" name="4-1-storing-data" href="#4-1-storing-data"><i class="anchor-icon"></i></a>4.1. Storing Data</h4> +<p>If you signed up for Telegram from the UK or the EEA, your data is stored in data centers in the Netherlands. These are third-party provided data centers in which Telegram rents a designated space. However, the servers and networks that sit inside these data centers and on which your personal data is stored are owned by Telegram. As such, we do not share your personal data with such data centers. All data is stored heavily encrypted so that local Telegram engineers or physical intruders cannot get access.</p> +<h4><a class="anchor" name="4-2-end-to-end-encrypted-data" href="#4-2-end-to-end-encrypted-data"><i class="anchor-icon"></i></a>4.2. End-to-End Encrypted Data</h4> +<p>Your messages, media and files from secret chats (see <a href="#3-3-2-secret-chats">section 3.3.2</a> above), as well as the contents of your calls and the data you store in your <a href="https://telegram.org/blog/passport">Telegram Passport</a> are processed only on your device and on the device of your recipient. Before this data reaches our servers, it is encrypted with a key known only to you and the recipient. While Telegram servers will handle this end-to-end encrypted data to deliver it to the recipient – or store it in the case of Telegram Passport data, we have no ways of deciphering the actual information. In this case, we neither store nor process your personal data, rather we store and process random sequences of symbols that have no meaning without the keys which we don’t have.</p> +<h4><a class="anchor" name="4-3-retention" href="#4-3-retention"><i class="anchor-icon"></i></a>4.3. Retention</h4> +<p>Unless stated otherwise in this Privacy Policy, the personal data that you provide us will only be stored for as long as it is necessary for us to fulfill our obligations in respect of the provision of the Services.</p> +<h3><a class="anchor" name="5-processing-your-personal-data" href="#5-processing-your-personal-data"><i class="anchor-icon"></i></a>5. Processing Your Personal Data</h3> +<h4><a class="anchor" name="5-1-our-services" href="#5-1-our-services"><i class="anchor-icon"></i></a>5.1. Our Services</h4> +<p>Telegram is a cloud service. We will process your data to deliver your cloud chat history, including messages, media and files, to any devices of your choosing without a need for you to use third-party backups or cloud storage.</p> +<h4><a class="anchor" name="5-2-safety-and-security" href="#5-2-safety-and-security"><i class="anchor-icon"></i></a>5.2. Safety and Security</h4> +<p>Telegram supports massive communities which we have to police against abuse and Terms of Service violations. Telegram also has more than <a href="https://telegram.org/blog/400-million">400 million</a> users which makes it a lucrative target for spammers. To improve the security of your account, as well as to prevent <a href="https://telegram.org/faq_spam">spam</a>, abuse, and other violations of our Terms of Service, we may collect metadata such as your IP address, devices and Telegram apps you've used, history of username changes, etc. If collected, this metadata can be kept for 12 months maximum.</p> +<h4><a class="anchor" name="5-3-spam-and-abuse" href="#5-3-spam-and-abuse"><i class="anchor-icon"></i></a>5.3. Spam and Abuse</h4> +<p>To prevent phishing, spam and other kinds of abuse and violations of Telegram’s Terms of Service, our moderators may check messages that were reported to them by their recipients. If a spam report on a message you sent is confirmed by our moderators, your account may be limited from contacting strangers – temporarily or permanently. You can send an appeal using <a href="https://t.me/spambot">@Spambot</a>. In case of more serious violations, your account may be banned. We may also use automated algorithms to analyze messages in cloud chats to stop spam and phishing.</p> +<h4><a class="anchor" name="5-4-cross-device-functionality" href="#5-4-cross-device-functionality"><i class="anchor-icon"></i></a>5.4. Cross-Device Functionality</h4> +<p>We may also store some aggregated metadata to create Telegram features (see <a href="#5-5-advanced-features">section 5.5</a> below) that work across all your devices.</p> +<h4><a class="anchor" name="5-5-advanced-features" href="#5-5-advanced-features"><i class="anchor-icon"></i></a>5.5. Advanced features</h4> +<p>We may use some aggregated data about how you use Telegram to build useful features. For example, when you open the Search menu, Telegram displays the people you are more likely to message in a box at the top of the screen. To do this, we calculate a rating that shows which people you message frequently. A similar rating is calculated for inline bots so that the app can suggest the bots you are most likely to use in the attachment menu (or when you start a new message with “@”). To turn this feature off and delete the relevant data, go to Settings > Privacy & Security > Data Settings and disable “Suggest Frequent Contacts”.</p> +<h4><a class="anchor" name="5-6-no-ads-based-on-user-data" href="#5-6-no-ads-based-on-user-data"><i class="anchor-icon"></i></a>5.6. No Ads Based on User Data</h4> +<p>Unlike other services, we don't use your data for ad targeting or other commercial purposes. Telegram only stores the information it needs to function as a secure and feature-rich cloud service. </p> +<p>Telegram offers a <a href="https://promote.telegram.org/">tool</a> for advertisers to promote their messages in <a href="https://telegram.org/tour/channels">public one-to-many channels</a>, but these sponsored messages are based solely on the topic of the public channels in which they are shown. No user data is mined or analyzed to display ads or sponsored messages.</p> +<h3><a class="anchor" name="6-bot-messages" href="#6-bot-messages"><i class="anchor-icon"></i></a>6. Bot Messages</h3> +<h4><a class="anchor" name="6-1-ecosystem" href="#6-1-ecosystem"><i class="anchor-icon"></i></a>6.1. Ecosystem</h4> +<p>Telegram has an API that allows third-party developers to create <a href="https://core.telegram.org/bots">bots</a>. Bots are apps that look like special Telegram users: you can talk to them from your chat list, add them to groups or use a special <a href="https://telegram.org/blog/inline-bots">“inline”</a> interface to access their features. By performing any of these actions, you will be sending some of your data to the respective third-party bot developers.</p> +<h4><a class="anchor" name="6-2-how-bots-can-receive-data" href="#6-2-how-bots-can-receive-data"><i class="anchor-icon"></i></a>6.2. How Bots Can Receive Data</h4> +<p>You can send data to bot developers when you interact with their bots in one of these ways:</p> +<ul> +<li>By sending messages to a bot.</li> +<li>By using an <a href="https://telegram.org/blog/inline-bots">inline bot</a>.</li> +<li>By participating in a group with a bot.</li> +<li>By pressing buttons in messages sent by a bot.</li> +<li>By paying for goods and services via bots (see <a href="#7-third-party-payment-services">section 7</a> below).</li> +</ul> +<h4><a class="anchor" name="6-3-what-data-bots-receive" href="#6-3-what-data-bots-receive"><i class="anchor-icon"></i></a>6.3. What Data Bots Receive</h4> +<p>In any of the above cases, the developers of an automated user (bot) can get your public account data (see <a href="#3-1-basic-account-data">section 3.1</a> above): your screen name, username and profile picture(s).</p> +<p>Bots can also receive the following data when you <strong>interact</strong> with them.</p> +<ul> +<li>Bots will obviously get your messages when you send them something.</li> +<li>If you click on links or buttons provided by the bot, the bot can potentially get your IP address (provided that it controls the website to which the link leads). </li> +<li>If the bot is a member of the same group with you, it may know you are a member.</li> +<li>When you start your message with the username of an <a href="https://telegram.org/blog/inline-bots">inline bot</a> (e.g. <a href="https://t.me/gif">@gif</a>) the interface transforms so that everything you type becomes a query to that bot. This query is sent to the bot so that it can provide its service. We will warn you about this the first time you use an inline bot.</li> +<li>Bots added to groups can operate in two modes: with access to messages in the group or <a href="https://core.telegram.org/bots#privacy-mode">without access</a>. If the bot has access to messages, it can see everything that happens in the group. The interface clearly shows whether or not a bot has access to messages in groups.</li> +</ul> +<h4><a class="anchor" name="6-4-bots-are-not-maintained-by-telegram" href="#6-4-bots-are-not-maintained-by-telegram"><i class="anchor-icon"></i></a>6.4. Bots Are Not Maintained by Telegram</h4> +<p>Other than our own bots, no other bots or third-party bot developers are affiliated with Telegram. They are completely independent from us. They should ask you for your permission before they access your data or you make it available to them.</p> +<!--####6.5. Bot Privacy Info + +We've asked bot developers to ensure that their bots can respond to the /privacy command, giving you information on what data the bot collects and stores. We also request that all third party bot developers meet the same regulatory-complaint privacy standards that Telegram meets itself.--> + +<h3><a class="anchor" name="7-third-party-payment-services" href="#7-third-party-payment-services"><i class="anchor-icon"></i></a>7. Third Party Payment Services</h3> +<h4><a class="anchor" name="7-1-payment-information" href="#7-1-payment-information"><i class="anchor-icon"></i></a>7.1. Payment Information</h4> +<p>The <a href="https://core.telegram.org/bots/payments">Payment Platform for Bots</a> is available to users as of <a href="https://telegram.org/blog/payments">Telegram 4.0</a>. Telegram does not process payments from users and instead relies on different payment providers around the world. It is the payment providers that handle and store your credit card details. Neither Telegram nor the merchants on the platform (bot developers) have access to this information. Although we work with payment providers they are completely independent from Telegram. Please study their relevant privacy policies before making your data available to them. </p> +<h4><a class="anchor" name="7-2-credit-card-information" href="#7-2-credit-card-information"><i class="anchor-icon"></i></a>7.2. Credit Card Information</h4> +<p>When making a purchase, you enter your credit card details into a form supplied by the payment provider that will be processing the payment, and this information goes directly to the payment provider's server. Your credit card information never reaches Telegram's servers. We do not access and do not store your credit card information. When you save your credit card info, it is saved on the respective payment provider's servers and the payment provider gives Telegram a <em>token</em> that you can reuse for future payments. It is not possible to reconstruct your credit card info from the token.</p> +<h4><a class="anchor" name="7-3-shipping-information" href="#7-3-shipping-information"><i class="anchor-icon"></i></a>7.3 Shipping Information</h4> +<p>When you enter shipping information in the process of placing an order, we send it directly to the merchant bot developer. We can store your shipping information for you if you choose to save it for future purchases. We will delete this information immediately if you ask us to.</p> +<h4><a class="anchor" name="7-4-clearing-payment-information" href="#7-4-clearing-payment-information"><i class="anchor-icon"></i></a>7.4. Clearing Payment Information</h4> +<p>You can clear all payment information associated with your account at any time by going to Telegram Settings > Privacy & Security > Data Settings and selecting ‘Clear Payment & Shipping Info’. If you choose to remove your payment information, we will delete your stored shipping info and payment tokens from all providers and ask the payment providers to remove your credit card information that they store.</p> +<h4><a class="anchor" name="7-5-payment-disputes" href="#7-5-payment-disputes"><i class="anchor-icon"></i></a>7.5. Payment Disputes</h4> +<p>Due to the fact that Telegram doesn't store any credit card details or transaction information, it is impossible for us to handle complaints or cashbacks – any disputed payments are the responsibility of the bot developers, payment providers, and banks that participated in the exchange.</p> +<h3><a class="anchor" name="8-who-your-personal-data-may-be-shared-with" href="#8-who-your-personal-data-may-be-shared-with"><i class="anchor-icon"></i></a>8. Who Your Personal Data May Be Shared With</h3> +<h4><a class="anchor" name="8-1-other-telegram-users" href="#8-1-other-telegram-users"><i class="anchor-icon"></i></a>8.1. Other Telegram Users</h4> +<p>Other users of our Services with whom you choose to communicate with and share certain information, who may be located outside the EEA. Note that by entering into the Terms of Service and choosing to communicate with such other users of Telegram, you are instructing us to transfer your personal data, on your behalf, to those users in accordance with this Privacy Policy. We employ all appropriate technical and organizational measures (including encryption of your personal data) to ensure a level of security for your personal data that is appropriate to the risk. </p> +<h4><a class="anchor" name="8-2-telegrams-group-companies" href="#8-2-telegrams-group-companies"><i class="anchor-icon"></i></a>8.2. Telegram’s Group Companies</h4> +<p>We may share your personal data with: <em>(1)</em> our parent company, Telegram Group Inc, located in the British Virgin Islands; and <em>(2)</em> Telegram FZ-LLC, a group member located in Dubai, to help provide, improve and support our Services. We will implement appropriate safeguards to protect the security and integrity of that personal data. This will take the form of standard contract clauses approved by the European Commission in an agreement between us and our relevant group companies. If you would like more information regarding these clauses, please contact us using the details in <a href="#12-questions-and-concerns">section 12</a> below.</p> +<h4><a class="anchor" name="8-3-law-enforcement-authorities" href="#8-3-law-enforcement-authorities"><i class="anchor-icon"></i></a>8.3. Law Enforcement Authorities</h4> +<p>If Telegram receives a court order that confirms you're a terror suspect, we may disclose your IP address and phone number to the relevant authorities. So far, this has never happened. When it does, we will include it in a semiannual transparency report published at: <a href="https://t.me/transparency"><a href="https://t.me/transparency">https://t.me/transparency</a></a>.</p> +<h3><a class="anchor" name="9-your-rights-regarding-the-personal-data-you-provide-to-us" href="#9-your-rights-regarding-the-personal-data-you-provide-to-us"><i class="anchor-icon"></i></a>9. Your Rights Regarding the Personal Data You Provide to Us</h3> +<h4><a class="anchor" name="9-1-your-rights" href="#9-1-your-rights"><i class="anchor-icon"></i></a>9.1. Your Rights</h4> +<p>Under applicable data protection legislation, in certain circumstances, you have rights concerning your personal data. You have a right to: <em>(1)</em> request a copy of all your personal data that we store and to transmit that copy to another data controller; <em>(2)</em> delete (see <a href="#10-deleting-data">section 10</a> below) or amend your personal data; <em>(3)</em> restrict, or object to, the processing of your personal data; <em>(4)</em> correct any inaccurate or incomplete personal data we hold on you; and <em>(5)</em> lodge a complaint with national data protection authorities regarding our processing of your personal data.</p> +<h4><a class="anchor" name="9-2-exercising-your-rights" href="#9-2-exercising-your-rights"><i class="anchor-icon"></i></a>9.2. Exercising Your Rights</h4> +<p>If you wish to exercise any of these rights, kindly contact us using the details in <a href="#12-questions-and-concerns">section 12</a> below.</p> +<h4><a class="anchor" name="9-3-data-settings" href="#9-3-data-settings"><i class="anchor-icon"></i></a>9.3. Data Settings</h4> +<p>You can control how your data is used (e.g., delete synced contacts) in <em>Settings > Privacy & Security > Data Settings</em> (using one of our mobile apps). </p> +<p>Sadly, if you're not OK with Telegram's modest minimum requirements, it won't be possible for us to provide you with our Services. You can delete your Telegram account by proceeding to the <a href="https://telegram.org/deactivate">deactivation page</a>.</p> +<h3><a class="anchor" name="10-deleting-data" href="#10-deleting-data"><i class="anchor-icon"></i></a>10. Deleting data</h3> +<h4><a class="anchor" name="10-1-accounts" href="#10-1-accounts"><i class="anchor-icon"></i></a>10.1. Accounts</h4> +<p>If you would like to delete your account, you can do this on the <a href="https://telegram.org/deactivate">deactivation page</a>. Deleting your account removes all messages, media, contacts and every other piece of data you store in the Telegram cloud. This action must be confirmed via your Telegram account and cannot be undone.</p> +<h4><a class="anchor" name="10-2-messages" href="#10-2-messages"><i class="anchor-icon"></i></a>10.2. Messages</h4> +<ul> +<li>In secret chats, deleting a message always instructs the app on the other end to delete it too.</li> +<li>In cloud chats, you can choose to delete a message for all participants within at least 48 hours after sending. Otherwise, deleting a message will delete it from your message history. This means that a copy will stay on the server as part of your partner's message history. As soon as your partner deletes it too, it's gone forever.</li> +<li>As of <a href="https://telegram.org/blog/unsend-privacy-emoji">version 5.5</a>, any party can choose to delete any messages in one-on-one chats, both sent and received, for both sides. There is no time limit. Any party can also opt to clear the entire chat history for both parties, in which case the apps will be instructed to remove all messages in that chat, however many of them are still retained by either of the participants.</li> +<li>In <a href="https://telegram.org/blog/supergroups">supergroups</a> and channels, deleting a message removes it for all participants. Note that deleted messages and original versions of edited messages from supergroups are stored for 48 hours after deletion in order to be shown in the <a href="https://telegram.org/blog/admin-revolution#recent-admin-actions">admins log</a>.</li> +</ul> +<h4><a class="anchor" name="10-3-self-destructing-messages" href="#10-3-self-destructing-messages"><i class="anchor-icon"></i></a>10.3. Self-Destructing Messages</h4> +<p>Messages in Secret Chats can be ordered to <a href="/faq#q-how-do-self-destructing-messages-work">self-destruct</a>. As soon as such a message is <a href="/faq#q-what-do-the-check-marks-mean">read</a> (2 checks appear), the countdown starts. When the timer expires, both devices participating in a secret chat are instructed to delete the message (photo, video, etc.). Media with short timers (less than a minute) are shown with blurred previews. The timer is triggered when they are viewed.</p> +<h4><a class="anchor" name="10-4-account-self-destruction" href="#10-4-account-self-destruction"><i class="anchor-icon"></i></a>10.4. Account Self-Destruction</h4> +<p>By default, if you stop using Telegram and do not come online for at least 6 months, your account will be deleted along with all messages, media, contacts and every other piece of data you store in the Telegram cloud. You can go to Settings to change the exact period after which your inactive account will self-destruct.</p> +<h3><a class="anchor" name="11-changes-to-this-privacy-policy" href="#11-changes-to-this-privacy-policy"><i class="anchor-icon"></i></a>11. Changes to this Privacy Policy</h3> +<p>We will review and may update this Privacy Policy from time to time. Any changes to this Privacy Policy will become effective when we post the revised Privacy Policy on this page <strong><a href="https://telegram.org/privacy">www.telegram.org/privacy</a></strong>. Please check our website frequently to see any updates or changes to our Privacy Policy, a summary of which we will set out below. </p> +<p><strong>March 25, 2019</strong></p> +<ul> +<li>Expanded [10.2. Deleting Messages] with data on the new features in <a href="https://telegram.org/blog/unsend-privacy-emoji">version 5.5</a>, which allow both participants to remove any messages from one-on-one chats for both sides without a time limit.</li> +</ul> +<p><strong>March 24, 2021</strong></p> +<ul> +<li>Added <a href="#3-5-location-data">3.5. Location Data</a>.</li> +<li>Improved structure, moving 3.3.5 to <a href="#3-4-phone-number-and-contacts">3.4</a> and 3.3.6 to <a href="#3-6-cookies">3.6</a>.</li> +</ul> +<p><strong>October 26, 2021</strong></p> +<ul> +<li>Expanded <a href="#5-6-no-ads-based-on-user-data">5.6. No Ads Based on User Data</a> with information about <a href="https://t.me/durov/153">sponsored messages in public channels</a>.</li> +</ul> +<p>Important changes made to this Privacy Policy will be notified to you via Telegram. </p> +<h3><a class="anchor" name="12-questions-and-concerns" href="#12-questions-and-concerns"><i class="anchor-icon"></i></a>12. Questions and concerns</h3> +<p>If you have any questions about privacy and our data policies, please contact our <a href="https://t.me/gdprbot">@GDPRbot</a>. Use the <em>/access</em> command to learn how to get a copy of your Telegram data and use the <em>/contact</em> command to leave a request, which we will answer at the earliest opportunity.</p> +<p>Telegram is an open source project. You can examine more information on our:</p> +<ul> +<li>API at: <a href="https://core.telegram.org/api"><a href="https://core.telegram.org/api">https://core.telegram.org/api</a></a>; </li> +<li>Bot Platform at: <a href="https://core.telegram.org/bots"><a href="https://core.telegram.org/bots">https://core.telegram.org/bots</a></a>; </li> +<li>Protocol at: <a href="https://core.telegram.org/mtproto"><a href="https://core.telegram.org/mtproto">https://core.telegram.org/mtproto</a></a>; and</li> +<li>Source Code at: <a href="https://telegram.org/apps#source-code"><a href="https://telegram.org/apps#source-code">https://telegram.org/apps#source-code</a></a>.</li> +</ul> +<hr> +<p><em>This policy has been expanded on August 14, 2018 to add information required by the EU data protection law.</em></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="/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?43"></script> + <script src="/js/jquery.min.js?1"></script> +<script src="/js/bootstrap.min.js?1"></script> + + <script>window.initDevPageNav&&initDevPageNav(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/support.html b/data/telegram.org/support.html new file mode 100644 index 0000000000..6c587013fd --- /dev/null +++ b/data/telegram.org/support.html @@ -0,0 +1,141 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram support</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Telegram support"> + <meta property="og:image" content=""> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content=""> + + <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/bootstrap-extra.css?2" rel="stylesheet"> + <link href="/css/telegram.css?215" 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">O‘zbek</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="container"> + <div class="support_wrap"> + <h1>Support</h1> + + <form class="" action="/support" method="POST"> + <div class="form-group"> + <label for="support_problem">Please describe your problem:</label> + <textarea class="form-control" rows="3" id="support_problem" name="message"></textarea> + </div> + <div class="form-group"> + <label for="support_phone">Your email:</label> + <input type="text" class="form-control" id="support_email" placeholder="user@gmail.com" name="email" value=""> + </div> + <div class="form-group"> + <label for="support_phone">Your phone number:</label> + <input type="text" class="form-control" id="support_phone" placeholder="+12223334455" name="phone" value=""> + </div> + <div class="form-group"> + <input type="hidden" class="form-control" id="support_lang" name="setln" value=""> + </div> + <div class="support_submit"> + <button type="submit" class="btn btn-primary btn-lg">Submit</button> + </div> + </form> + </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?43"></script> + + <script>backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/api.html b/data/telegram.org/teststore.html similarity index 99% rename from data/telegram.org/api.html rename to data/telegram.org/teststore.html index 909849ddfc..710beff8d0 100644 --- a/data/telegram.org/api.html +++ b/data/telegram.org/teststore.html @@ -34,7 +34,7 @@ <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 active"><a href="//core.telegram.org/api">API</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> diff --git a/data/telegram.org/tour/channels.html b/data/telegram.org/tour/channels.html new file mode 100644 index 0000000000..a03cc25dcd --- /dev/null +++ b/data/telegram.org/tour/channels.html @@ -0,0 +1,294 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Telegram Channels</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Telegram Channels"> + <meta property="og:image" content="https://telegram.org/file/464001838/1/GDPE_UE4KFY.77587/f3ebf15475f5ac1f66"> + <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="2018-01-29T17:27:00+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001838/1/GDPE_UE4KFY.77587/f3ebf15475f5ac1f66" /> + <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/tour/channels" /> + <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?215" 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">O‘zbek</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="/tour" class="side_blog_header">More Features</a> + <div class="side_blog_entries"> + <a href="/tour/quizbot" class="side_blog_entry side_tour_entry"> + + <div class="side_blog_title">Quizzes</div> +</a><a href="/tour/groups" class="side_blog_entry side_tour_entry"> + + <div class="side_blog_title">Groups</div> +</a><a href="/tour/channels" class="side_blog_entry side_tour_entry"> + + <div class="side_blog_title">Channels</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">Telegram Channels</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>Channels are a tool for <strong>broadcasting</strong> your public messages to large audiences. They offer a unique opportunity to reach people <strong>directly</strong>, sending a notification to their phones with each post.</p> +<p>Telegram Channels can have an <strong>unlimited amount of subscribers</strong>, and only <strong>admins</strong> have the right to post. Unlike <a href="/tour/groups">Telegram Groups</a>, channels show the name and photo of the <em>channel</em> next to messages – instead of the person who posted them. </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/464001910/2/Z9saCmV1FVQ.6481777.mp4/57c3a5d099879b74d6" type="video/mp4"> + </video> +</div> + +<p>Media organizations and public figures use channels to stay in touch with their readers, voters and fans. For some real-life examples, check out <a href="https://t.me/s/bloomberg">@Bloomberg</a>, the <a href="https://t.me/s/corona">Coronavirus Info</a> channel, or join the official <a href="https://t.me/s/telegram">@Telegram</a> channel covering our updates.</p> +<p>To <strong>create your own channel</strong>, open the “New Message” menu on Telegram and choose “New Channel”. Newly created channels start as <strong>private</strong> – but you can edit their profile to make them <strong>public</strong>.</p> +<p>The contents of public channels can be seen on the Web without a Telegram account and are <strong>indexed</strong> by search engines. For example, try <a href="https://t.me/s/FinancialTimes">t.me/s/FinancialTimes</a>.</p> +<h3><a class="anchor" name="autoplaying-videos-and-rich-media" href="#autoplaying-videos-and-rich-media"><i class="anchor-icon"></i></a>Autoplaying Videos and Rich Media</h3> +<p>Channels aren't just for text messages and links – Telegram supports a wide range of content types, from autoplaying videos to animated stickers, polls and beyond.</p> +<p><strong>Videos</strong> will start <a href="https://telegram.org/blog/autoplay">playing automatically</a> with no sound. Pressing the volume buttons on the device unmutes the video, tapping on it launches the video from the beginning in full screen mode.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001637/3/dUzt45R1kiM.106779/97224e208d0e394b5a" target="_blank"><img src="/file/464001342/1/uDEQ5Uw3qSY.25852/1801697b391a290f63" title="TITLE" alt="TITLE" srcset="/file/464001637/3/dUzt45R1kiM.106779/97224e208d0e394b5a , 2x" /></a> +</div> + +<p>Several <strong>photos</strong> sent together will form an <strong>album</strong> with a beautiful layout – and only result in one notification to your subscribers for the whole batch.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001395/2/JQOg1oNzX_E.217165/a63c6ad7121338cf6d" target="_blank"><img src="/file/464001791/1/K91NYKJDkxI.38484/664c8b21bfea9d12e0" title="TITLE" alt="TITLE" srcset="/file/464001395/2/JQOg1oNzX_E.217165/a63c6ad7121338cf6d , 2x" /></a> +</div> + +<p>You can send large <strong>files</strong> of <strong>any type</strong> and <strong>uncompressed images</strong> in full resolution – useful for content like <strong>infographics</strong>.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001170/2/KbZieUbKuEQ.75130/72b6ace086a5416ea0" target="_blank"><img src="/file/464001965/2/hREV8hbj-48.19133/6cfedbc16e4924f75b" title="TITLE" alt="TITLE" srcset="/file/464001170/2/KbZieUbKuEQ.75130/72b6ace086a5416ea0 , 2x" /></a> +</div> + +<p><a href="https://telegram.org/blog/verifiable-apps-and-more#podcast-and-audiobook-support">Podcasts</a> also get special treatment. Telegram apps <strong>remember</strong> your last position when resuming playback of long audio files. Users who are in a hurry can listen to them at <strong>2x speed</strong>:</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001799/1/H0-d1_YTmjM.38870/4e71d3de0a3d815312" target="_blank"><img src="/file/464001102/3/iTTm_lt_S74.10358/919a285f00c125fb26" title="ALT" alt="Screenshot showing the location of the 2x playback button for long audio files." srcset="/file/464001799/1/H0-d1_YTmjM.38870/4e71d3de0a3d815312 , 2x" /></a> +</div> + + +<h3><a class="anchor" name="quick-sharing" href="#quick-sharing"><i class="anchor-icon"></i></a>Quick Sharing</h3> +<p>Each post in a channel has a handy <strong>Share Button</strong> next to it, making it easy for your subscribers to forward things to others – or save them in their <a href="https://telegram.org/blog/albums-saved-messages#saved-messages">Saved Messages</a>.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001591/1/m3f_mV4G3Ws.97807/cd1841d2a8ae556561" target="_blank"><img src="/file/464001389/3/4MfJWAWmkN8.19599/c53a0682aa1c059c21" title="TITLE" alt="TITLE" srcset="/file/464001591/1/m3f_mV4G3Ws.97807/cd1841d2a8ae556561 , 2x" /></a> +</div> + +<p>The Quick Share menu also shows a <strong>direct link</strong> to your post. Following such links inside Telegram opens the channel and highlights the message. If the user doesn't have Telegram, they will see a web page with an <a href="#embedded-messages">embedded post</a>, like this: <a href="https://t.me/corona/16">t.me/corona/16</a>.</p> +<h3><a class="anchor" name="powerful-polls" href="#powerful-polls"><i class="anchor-icon"></i></a>Powerful Polls</h3> +<p>You can use <a href="https://telegram.org/blog/polls-2-0-vmq">polls</a> to judge public opinion, make decisions and help your audience connect with you.</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> + +<h3><a class="anchor" name="quiz-style-polls" href="#quiz-style-polls"><i class="anchor-icon"></i></a>Quiz-Style Polls</h3> +<p>To make things more fun – or add extra educational value to your posts <img class="emoji" src="//telegram.org/img/emoji/40/F09FA790.png" width="20" height="20" alt="🧐" /> – use <a href="https://telegram.org/blog/polls-2-0-vmq#quiz-mode">quiz-style polls</a> that have one <strong>correct answer</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="We're sorry, America – but you should probably stop acting like you're the only country in the world." alt="TITLE" srcset="/file/464001802/1/fwR7FzJKx2g.142023/3262deaf7701aed468 , 2x" /></a> +</div> + +<h3><a class="anchor" name="discussion-groups" href="#discussion-groups"><i class="anchor-icon"></i></a>Discussion Groups</h3> +<p>If you'd like to know what people think about the posts they view, you can set up a <strong>discussion group</strong> for your channel. New posts from the channel will be automatically forwarded to the group and pinned there.</p> +<p>Subscribers will see a <a href="https://telegram.org/blog/filters-anonymous-admins-comments">comment button</a> for each post in the channel. Comments show up in a thread of their own and also land in the discussion group to keep everyone in the loop and make it easier for admins to keep the conversation civil.</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/464001724/1/Z0DVgBP2R1o.77883/c12a015393d6f7c25a" style="max-width: 400px;" title="Leaving a comment to a channel post." alt="Leaving a comment to a channel post"> + <source src="/file/464001202/3/kwfo_6Uhx1Q.2894046.mp4/cec85750c3c9253f99" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="view-counters" href="#view-counters"><i class="anchor-icon"></i></a>View Counters</h3> +<p>Each post in a channel has a <strong>view counter</strong>. Views from forwarded copies of the messages are included in the total count.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001069/1/Qnxa9EbTT0A.40152/64898138caf56a5f30" target="_blank"><img src="/file/464001464/4/tPafsrYqXog.11263/db1c1865cbeb7d2e12" title="TITLE" alt="TITLE" srcset="/file/464001069/1/Qnxa9EbTT0A.40152/64898138caf56a5f30 , 2x" /></a> +</div> + +<h3><a class="anchor" name="detailed-statistics" href="#detailed-statistics"><i class="anchor-icon"></i></a>Detailed Statistics</h3> +<p><strong>Advanced statistics</strong> are available for channels with more than <strong>500</strong> subscribers. You can view beautifully-detailed graphs about its <strong>growth</strong> and the <strong>performance</strong> of its posts.</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/464001702/3/uv3ANJTThlk.65177/9d8f2ed8fae740350a" style="max-width: 400px;" title="Warning: this video contains GRAPH-ic content" alt="Channel stats screens"> + <source src="/file/464001940/4/YMojV6mIcyw.3310232.mp4/3b62a4ef0d026dd9c8" type="video/mp4"> + </video> +</div> + +<p>You can track how many users <strong>join</strong>, <strong>leave</strong> and <strong>mute</strong> your channel, what <strong>languages</strong> they speak, how they interact with your posts, and how they found your channel – from Telegram search, by following a link, etc.</p> +<h3><a class="anchor" name="scheduled-and-silent-messages" href="#scheduled-and-silent-messages"><i class="anchor-icon"></i></a>Scheduled and Silent Messages</h3> +<p>You can plan your posts ahead and let them go live automatically at a <strong>specified time</strong>. For late night or non-urgent updates, you can send <strong>silent messages</strong> that will result in a notification with no sound for your subscribers.</p> +<p>Hold the “Send” button for extra sending options:</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001897/1/2LhR_0g5KAk.45276/86faa1f18368645cbd" target="_blank"><img src="/file/464001228/3/DIfr0SLarjI.12471/1aa8567d10d6fd5bff" title="TITLE" alt="TITLE" srcset="/file/464001897/1/2LhR_0g5KAk.45276/86faa1f18368645cbd , 2x" /></a> +</div> + +<h3><a class="anchor" name="pinned-messages" href="#pinned-messages"><i class="anchor-icon"></i></a>Pinned Messages</h3> +<p>You can pin a message for extra visibility.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001573/1/LZHw0tdJoLo.90887/d350f12f56d3a9bc8c" target="_blank"><img src="/file/464001514/1/nCJR8jIocmo.22920/559be6e5a41c2a1ff7" title="TITLE" alt="TITLE" srcset="/file/464001573/1/LZHw0tdJoLo.90887/d350f12f56d3a9bc8c , 2x" /></a> +</div> + +<h3><a class="anchor" name="hashtags" href="#hashtags"><i class="anchor-icon"></i></a>Hashtags</h3> +<p>Telegram supports <strong>hashtags</strong> – tapping on a hashtag in a message will show a search interface with all other tagged posts in the channel. This is useful for adding a layer of navigation for your channel and improving visibility of your older posts.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001119/2/qip3MUGNvxg.73663/b74abe8b1c1f77ca04" target="_blank"><img src="/file/464001041/3/SU2w6fpEvmE.17702/28eb2ba5a436344218" title="TITLE" alt="TITLE" srcset="/file/464001119/2/qip3MUGNvxg.73663/b74abe8b1c1f77ca04 , 2x" /></a> +</div> + +<h3><a class="anchor" name="subscriber-privacy" href="#subscriber-privacy"><i class="anchor-icon"></i></a>Subscriber Privacy</h3> +<p>The <strong>subscriber list</strong> is only visible to the channel owner and admins. Subscribers cannot see who else has signed up – nor can they see which accounts are managing the channel.</p> +<h3><a class="anchor" name="extra-admins" href="#extra-admins"><i class="anchor-icon"></i></a>Extra Admins</h3> +<p>You can appoint additional <strong>admins</strong> to help you manage the channel and define their <strong>role</strong> with <a href="https://telegram.org/blog/admin-revolution#admin-rights">granular precision</a>. Choose who will be able to add new subscribers, manage messages, edit channel info, or even add new admins.</p> +<h3><a class="anchor" name="admin-signatures" href="#admin-signatures"><i class="anchor-icon"></i></a>Admin Signatures</h3> +<p>There are times when it's important to know who posted a certain message. For that, you can enable signatures in Channel Info. New messages will be signed with the posting admin's chosen screen name but will not link to their profile.</p> +<div class="blog_image_wrap blog_medium_image_wrap"> + <a href="/file/464001240/2/z2gbuaNr9-U.27851/e25de2ff4f64ced987" target="_blank"><img src="/file/464001866/1/J5Ke-FuHOho.7984/359cd0bd3c60d439b9" title="TITLE" alt="TITLE" srcset="/file/464001240/2/z2gbuaNr9-U.27851/e25de2ff4f64ced987 , 2x" /></a> +</div> + +<h3><a class="anchor" name="embedded-messages" href="#embedded-messages"><i class="anchor-icon"></i></a>Embedded Messages</h3> +<p>Messages from public channels can be easily <strong>embedded</strong> in any web page using <a href="https://core.telegram.org/widgets">Telegram Widgets</a>.</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> + + +<h3><a class="anchor" name="editing-messages" href="#editing-messages"><i class="anchor-icon"></i></a>Editing Messages</h3> +<p>Made a typo? Missed a word? Itching to add something? You can easily <strong>edit</strong> your messages in channels, regardless of how long ago they were posted. Tap the message (double tap or long tap on iOS), then press 'Edit'.</p> +<h3><a class="anchor" name="deleting-messages" href="#deleting-messages"><i class="anchor-icon"></i></a>Deleting Messages</h3> +<p>If you'd like to do a bit of timeline maintenance, you can <strong>delete</strong> any message at <strong>any time</strong>, for <strong>everyone</strong>. Deleted messages will vanish from the feed, for both new and old subscribers.</p> +</div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Ftour%2Fchannels&text=Channels%20are%20a%20tool%20for%20broadcasting%20your%20public%20messages%20to%20large%20audiences.%20They%20offer%20a%20unique%20opportunity%20to%20reach%20people%20directly%2C%20sending%20a%20notification%20to%20their%20phones%20with%20each%20post." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="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." data-url="https://telegram.org/tour/channels"><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="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." data-url="https://telegram.org/tour/channels" 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="/tour/quizbot"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001802/1/fwR7FzJKx2g.142023/3262deaf7701aed468" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Quizzes</h4> + <div class="dev_blog_card_lead">With the help of Quiz Bot you can create multi-question quizzes and share them with others. The bot lets you add text or media before questions to help create exam-style prompts with…</div> + </div> + <div class="dev_blog_card_date">Dec 22, 2020</div> +</div></a><a class="dev_blog_card_link_wrap" href="/tour/groups"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/img/tl_card_coordinate.gif" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Group Chats on Telegram</h4> + <div class="dev_blog_card_lead">Telegram groups are a powerful tool for building communities and each can have up to 200,000 members.</div> + </div> + <div class="dev_blog_card_date">Jan 29, 2018</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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/tour/groups.html b/data/telegram.org/tour/groups.html new file mode 100644 index 0000000000..0146fa91b5 --- /dev/null +++ b/data/telegram.org/tour/groups.html @@ -0,0 +1,266 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Group Chats on Telegram</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Group Chats on Telegram"> + <meta property="og:image" content="https://telegram.org/img/tl_card_coordinate.gif"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="Telegram groups are a powerful tool for building communities and each can have up to 200,000 members."> + <meta property="article:published_time" content="2018-01-29T20:19:02+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/img/tl_card_coordinate.gif" /> + <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/tour/groups" /> + <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?215" 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">O‘zbek</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="/tour" class="side_blog_header">More Features</a> + <div class="side_blog_entries"> + <a href="/tour/quizbot" class="side_blog_entry side_tour_entry"> + + <div class="side_blog_title">Quizzes</div> +</a><a href="/tour/groups" class="side_blog_entry side_tour_entry"> + + <div class="side_blog_title">Groups</div> +</a><a href="/tour/channels" class="side_blog_entry side_tour_entry"> + + <div class="side_blog_title">Channels</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">Group Chats on Telegram</h1> + + <div id="dev_page_content"><div class="blog_side_image_wrap"> +<img src="https://telegram.org/img/tl_card_coordinate.gif" class="blog_side_image"></div> + +<blockquote> +<p><strong>Telegram groups</strong> are a powerful tool for building communities and can support up to <strong>200,000</strong> members each.</p> +</blockquote> +<p>Friends and families use groups to share photos and plans, teams and businesses to coordinate their work, massive ICOs to answer questions and keep in touch with their investors. Telegram has many features that make communication in groups easy no matter their size or purpose.</p> +<h3><a class="anchor" name="replies" href="#replies"><i class="anchor-icon"></i></a>Replies</h3> +<p>To reply to a <strong>specific message</strong> in a group chat, simply swipe left on it, type your text and hit ‘Send’. If you tap on the quote in a message that is a reply, the app scrolls up to the original message – and shows an arrow button to go back to the previous location. This makes navigating conversations in groups easy even if you've been away for a while.</p> +<p>The person you replied to will be notified about your message even if they muted the group chat — their notification settings for you <em>personally</em> apply in this case. </p> +<h3><a class="anchor" name="mentions" href="#mentions"><i class="anchor-icon"></i></a>Mentions</h3> +<p>If you want several people within a group chat to get instantly involved in the conversation, you may <strong>mention</strong> them in a message. They will be notified about your message, even if they muted the group chat — unless they've muted you personally, of course!</p> +<h3><a class="anchor" name="reply-mention-alerts" href="#reply-mention-alerts"><i class="anchor-icon"></i></a>Reply/Mention alerts</h3> +<p>In busy groups, you can get new mentions or replies many times during a day – and it’s important not to miss those messages. So whenever this happens, you’ll notice straight away by the <strong>‘@’</strong> badge in the chat list:</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/811140620/15aa/o6EG00dVqWE.66165/bca8cf46e6f30071eb" autoplay loop controls muted> + <source src="/file/811140766/17a0/iD2kGW7-X2s.965195.mp4/24ad9a2d2330a770a9" type="video/mp4"> + </video> + </div> +</div> + +<p>When you have new replies/mentions in a group, you can instantly reach them by tapping the new <strong>‘@’</strong> button when inside the chat. This button will disappear once you’ve read all the relevant messages (you can also use a long tap on the button to quickly mark them as read).</p> +<h3><a class="anchor" name="supersize-that" href="#supersize-that"><i class="anchor-icon"></i></a>Supersize that</h3> +<p>Groups are ideal for sharing stuff with friends and family or collaboration in small teams. But they can also host very large communities – in fact, up to to <strong>200,000 members</strong> can join any group. We have plenty of <a href="#admin-tools">admin tools</a> to help admins keep the peace in these virtual cities.</p> +<blockquote> +<p><strong>Hint:</strong> If you're doing something massively popular, consider creating a <a href="https://telegram.org/tour/channels"><strong>channel</strong></a>. Channels are a tool for broadcasting <em>public</em> messages to large audiences, and can have an <strong>unlimited</strong> number of subscribers.</p> +</blockquote> +<h3><a class="anchor" name="pinned-messages" href="#pinned-messages"><i class="anchor-icon"></i></a>Pinned Messages</h3> +<p>Group admins can inform all members about important news using <strong>pinned messages</strong> that 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>Groups admins can always edit pinned messages. This means your pinned message can contain an up to date list of <a href="#message-links">links to important messages</a> or other channels and groups.</p> +<!--<div class="blog_image_wrap"> + <a href="XXX" target="_blank"><img src="XXX" title="YYY" /></a> + <p>Sample directory message</p> +</div>--> + +<h3><a class="anchor" name="invite-links" href="#invite-links"><i class="anchor-icon"></i></a>Invite Links</h3> +<p>It's easy to move your existing group chats to Telegram without any hassle. Simply send your friends an <strong>invite link</strong>. As soon as they get Telegram, they can instantly join your Telegram group just by following that link.</p> +<p>To get the link, first create a group on Telegram, then head to the ‘Add participant…’ section and tap ‘Invite to Group via Link’.</p> +<center><div> + <a href="/file/811140914/2/MfsEG6BRRyI/8e51dbe1da5404b005" target="_blank"><img src="/file/811140914/2/MfsEG6BRRyI/8e51dbe1da5404b005" title="Here's where you find the option" style="width: 195px; padding: 10px 5px" /></a> + + <a href="/file/811140467/2/EZ7haFQCcEU/92f5babc93d0616535" target="_blank"><img src="/file/811140467/2/EZ7haFQCcEU/92f5babc93d0616535" title="Use this link to move your existing groups to Telegram" style="width: 195px; padding: 10px 5px" /></a> +<br> +</div></center> + +<h3><a class="anchor" name="public-groups" href="#public-groups"><i class="anchor-icon"></i></a>Public groups</h3> +<p>If you want a friendlier-looking link, groups can become <strong>public</strong> and get a short link, like <a href="https://t.me/publictestgroup">t.me/publictestgroup</a>. This way, anybody can view the group'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> + +<h3><a class="anchor" name="message-links" href="#message-links"><i class="anchor-icon"></i></a>Message links</h3> +<p>You can copy links to <strong>individual messages</strong> inside public groups. Anyone will be able to see them by opening their <code>t.me</code> link – no Telegram account required. Tweet with confidence!</p> +<h3><a class="anchor" name="better-with-bots" href="#better-with-bots"><i class="anchor-icon"></i></a>Better With Bots</h3> +<p><a href="https://core.telegram.org/bots"><strong>Bots</strong></a> further extend the potential power of groups, making <strong>anything</strong> possible – from automated moderation to <a href="https://core.telegram.org/bots/games">games</a>, <a href="https://core.telegram.org/bots/payments">payments</a> and beyond.</p> +<h3><a class="anchor" name="admin-tools" href="#admin-tools"><i class="anchor-icon"></i></a>Admin Tools</h3> +<p>To help maintain order in your community, you can add admins with specific sets of privileges. Choose who among your trusted admins will be able to add new users, manage messages, block members, edit group info, or even add new admins.</p> +<div class="blog_image_wrap"> + <a href="/file/811140764/e03/uvWuZb0DCvI.50463/ecbdcc74dfc60116df" target="_blank"><img src="/file/811140764/e03/uvWuZb0DCvI.50463/ecbdcc74dfc60116df" title="Admin rights" /></a> + <p>Admin rights</p> +</div> + +<h4><a class="anchor" name="partial-bans" href="#partial-bans"><i class="anchor-icon"></i></a>Partial Bans</h4> +<p>Admins who don’t want to completely ban members from their groups can partially restrict their rights in order to stop behavior that's causing problems. You can put nasty users into read-only mode or maybe stop them from sending stickers or media for a certain period of time. You can do all of this with absolute precision:</p> +<div class="blog_image_wrap"> + <a href="/file/811140001/d82/wX1p4uHYxqA.54788/200f54f1742288b0de" target="_blank"><img src="/file/811140001/d82/wX1p4uHYxqA.54788/200f54f1742288b0de" title="Partial bans" /></a> + <p>Partial bans</p> +</div> + +<p>Even robots can get in on the fun. With <a href="https://core.telegram.org/bots/api">Bot API version 3.1</a>, you can use admin bots to automatically impose temporary or permanent bans based on member actions. Check out <a href="https://core.telegram.org/bots/api">the docs here</a> to start building your robotic police force today.</p> +<h4><a class="anchor" name="recent-admin-actions" href="#recent-admin-actions"><i class="anchor-icon"></i></a>Recent Admin Actions</h4> +<p>When multiple admins are working with one group, it’s easy to get confused about which admin did what and when (or which admin bot has gone Skynet on your members). That’s why we've added a “Recent Actions” section to the admins page. This section stores a log of all service actions taken in the group in the last 48 hours and is visible to admins only.</p> +<div class="blog_2images_wrap"> + <div class="blog_image_wrap"> + <a href="/file/811140148/ce3/3jWuIcShQ2E.105963/7f819df55211e9a7e4" target="_blank"><img src="/file/811140148/ce3/3jWuIcShQ2E.105963/7f819df55211e9a7e4" title="Recent admin actions"/></a> + <p>Recent admin actions</p> + </div> + <div class="blog_image_wrap"> + <a href="/file/811140574/d50/AEmMJcBL9Lg.60674/3865d27122d173ad08" target="_blank"><img src="/file/811140574/d50/AEmMJcBL9Lg.60674/3865d27122d173ad08" title="Precise filters"/></a> + <p>Precise filters</p> </div> +</div> + +<p>Recent actions in groups also show messages that were deleted in the last 48 hours and the original versions of edited messages for the same period, so nasty behavior like self-deleted spam will no longer help anyone escape the admins’ wrath. </p> +<h3><a class="anchor" name="stickers-of-the-group" href="#stickers-of-the-group"><i class="anchor-icon"></i></a>Stickers of the Group</h3> +<p>Large groups with 100 members and more can choose an official sticker set for all the members of the group to see and use while they're chatting in the group — without the need of adding it to their panels.</p> +<div class="blog_image_wrap"> + <a href="/file/811140619/160b/2rYIDVfsRQk.48371/1f58c5d8407aa3c916" target="_blank"><img src="/file/811140619/160b/2rYIDVfsRQk.48371/1f58c5d8407aa3c916" title="Group Stickers" /></a> + <p>Group Stickers</p> +</div></div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Ftour%2Fgroups&text=Telegram%20groups%20are%20a%20powerful%20tool%20for%20building%20communities%20and%20each%20can%20have%20up%20to%20200%2C000%20members." class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="Telegram groups are a powerful tool for building communities and each can have up to 200,000 members." data-url="https://telegram.org/tour/groups"><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 groups are a powerful tool for building communities and each can have up to 200,000 members." data-url="https://telegram.org/tour/groups" 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="/tour/quizbot"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001802/1/fwR7FzJKx2g.142023/3262deaf7701aed468" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Quizzes</h4> + <div class="dev_blog_card_lead">With the help of Quiz Bot you can create multi-question quizzes and share them with others. The bot lets you add text or media before questions to help create exam-style prompts with…</div> + </div> + <div class="dev_blog_card_date">Dec 22, 2020</div> +</div></a><a class="dev_blog_card_link_wrap" href="/tour/channels"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001838/1/GDPE_UE4KFY.77587/f3ebf15475f5ac1f66" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Telegram Channels</h4> + <div class="dev_blog_card_lead">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…</div> + </div> + <div class="dev_blog_card_date">Jan 29, 2018</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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> + diff --git a/data/telegram.org/tour/quizbot.html b/data/telegram.org/tour/quizbot.html new file mode 100644 index 0000000000..6d20bac47b --- /dev/null +++ b/data/telegram.org/tour/quizbot.html @@ -0,0 +1,215 @@ +<!DOCTYPE html> +<html class=""> + <head> + <meta charset="utf-8"> + <title>Quizzes</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta property="og:title" content="Quizzes"> + <meta property="og:image" content="https://telegram.org/file/464001802/1/fwR7FzJKx2g.142023/3262deaf7701aed468"> + <meta property="og:site_name" content="Telegram"> + <meta property="og:description" content="With the help of Quiz Bot you can create multi-question quizzes and share them with others. The bot lets you add text or media before questions to help create exam-style prompts with graphs and tables – or Know Your Meme tests. "> + <meta property="article:published_time" content="2020-12-22T20:28:12+00:00"><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:image" content="https://telegram.org/file/464001802/1/fwR7FzJKx2g.142023/3262deaf7701aed468" /> + <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/tour/quizbot" /> + <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?215" 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">O‘zbek</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="/tour" class="side_blog_header">More Features</a> + <div class="side_blog_entries"> + <a href="/tour/quizbot" class="side_blog_entry side_tour_entry"> + + <div class="side_blog_title">Quizzes</div> +</a><a href="/tour/groups" class="side_blog_entry side_tour_entry"> + + <div class="side_blog_title">Groups</div> +</a><a href="/tour/channels" class="side_blog_entry side_tour_entry"> + + <div class="side_blog_title">Channels</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">Quizzes</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> + +<blockquote> +<p>Visit <a href="https://quiz.directory/"><strong>Quiz Directory</strong></a> to try thousands of Quizzes created by participants of the 2020 Quiz Contest.</p> +</blockquote> +<p>Telegram supports powerful <strong>polls</strong> for <a href="https://telegram.org/tour/groups">groups</a> and <a href="https://telegram.org/tour/channels">channels</a> which can be used for everything from deciding where to have lunch to organizing public service exams or <a href="https://www.bbc.com/news/technology-48802125">leaderless protests</a>.</p> +<p><strong>Quiz-style polls</strong> are a special kind of poll that has one <strong>correct answer</strong> and an optional <strong>explanation</strong> which makes them ideal for educational purposes.</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="TITLE"> + <source src="/file/464001951/2/9xlNwOwspBk.6603257.mp4/cea1f0c88c8e7d0726" type="video/mp4"> + </video> +</div> + +<h3><a class="anchor" name="quiz-bot" href="#quiz-bot"><i class="anchor-icon"></i></a>Quiz Bot</h3> +<p>With the help of <a href="https://t.me/quizbot"><strong>Quiz Bot</strong></a> you can create <strong>multi-question quizzes</strong> and <strong>share</strong> them with others. The bot lets you add text or media <em>before</em> questions to help create <strong>exam-style prompts</strong> with graphs and tables – or <a href="https://t.me/QuizBot?start=MemeQuiz"><em>Know Your Meme</em></a> tests. </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="TITLE" srcset="/file/464001279/1/5aDOxFSwPfY.190469/28f40c248f5a1f917c , 2x" /></a> +</div> + +<p>You can set up a <strong>time limit</strong> for each question. 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="creating-a-quiz" href="#creating-a-quiz"><i class="anchor-icon"></i></a>Creating a Quiz</h3> +<p>Creating a quiz is very easy, just open <a href="https://t.me/quizbot">@quizbot</a> on Telegram, press 'START' and follow the prompts. If you're having any difficulty, please take a look at our <a href="https://telegram.org/tour/quizbot#creating-a-quiz-step-by-step">Step-By-Step Instructions</a>.</p> +<h3><a class="anchor" name="sharing-your-quiz" href="#sharing-your-quiz"><i class="anchor-icon"></i></a>Sharing your Quiz</h3> +<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 'Great Minds' sticker pack</a>.</p> +<blockquote> +<p>You can browse <strong>thousands of quizzes</strong> created during the <a href="https://telegram.org/blog/400-million#400k-for-creators-of-educational-tests">2020 Quiz Contest</a> on <a href="https://quiz.directory"><em>quiz.directory</em></a>.</p> +</blockquote> +<h3><a class="anchor" name="making-your-own-quiz-bot" href="#making-your-own-quiz-bot"><i class="anchor-icon"></i></a>Making your own Quiz Bot</h3> +<p>If you are a developer, you are welcome to use the <a href="https://core.telegram.org/bots"><strong>Telegram Bot API</strong></a> to create your own bot that supports <a href="https://core.telegram.org/bots/api-changelog#april-24-2020">polls and quizzes</a>.</p> +<hr> +<h3><a class="anchor" name="creating-a-quiz-step-by-step" href="#creating-a-quiz-step-by-step"><i class="anchor-icon"></i></a>Creating a Quiz, Step-By-Step</h3> +<p>Creating a quiz is very easy, just open <a href="https://t.me/quizbot">@quizbot</a> on Telegram, press 'START' and follow the prompts.</p> +<p><strong>1. Name and description.</strong> First you will give your quiz a <strong>name</strong> and an optional <strong>description</strong> – for educational tests, it's best to use the subject matter, like <em>Organic Chemistry I</em> or <em>British Royal History</em>. The description could contain information or instructions like “you will need a graphing calculator for this test”. </p> +<p><strong>2. Pre-question text or media.</strong> Now comes the time to create the quiz's <strong>questions</strong>. Tapping the 'Create a question' button opens the template to create your first question. However, if you would like <strong>text</strong> or <strong>media</strong> to appear before a question, send that first, <em>before</em> tapping 'Create a question'.</p> +<p><strong>3. Questions.</strong> Once in the new-question interface, simply <strong>fill out the fields</strong> for what the question is asking, as well as its possible answers. Select the <strong>right answer</strong> by tapping on it, which will mark it with a green check. </p> +<p><strong>4. Explanations.</strong> If you want to participate in our <a href="#2020-quiz-contest">contest</a>, you should add an <strong>explanation</strong> to each of your questions. Explanations will appear after users choose an answer. They can be used to give <strong>more information</strong>, clarify <strong>common errors</strong>, and support <strong>full text formatting</strong>, including <strong>hyperlinks</strong>. Once you are finished, tap 'Send' to add the question to your test. Repeat the question-making process until you've added all your quiz's questions, then send <strong>/done</strong> in the chat.</p> +<p><strong>5. Timer.</strong> Next, the bot will ask you to choose how long users will have to answer each question. For questions that don't require any calculations, <strong>10</strong> or <strong>15 seconds</strong> is usually enough. But for something like math, longer timers like <strong>3</strong> to <strong>5 minutes</strong> are best. You can always change this setting later on, so don't worry.</p> +<p><strong>6. Shuffle questions or answer options.</strong> The bot will then ask whether you'd like to shuffle question and answer options – meaning the questions will come up in a random order, and the answers for individual questions will be in a random order as well. It's normally a good idea to say 'Yes' here, so students can retake the quiz for practice without simply memorizing the order. However, if you have “all of the above” style answers, or questions that work best if presented in a specific order, select 'No'. Again, this setting can be changed in the future if needed.</p> +<p><strong>7. Submitting your quiz to the contest</strong>. The bot will ask if you would like to submit your quiz to the contest. If you choose yes, it will ask a couple of additional questions to confirm your submission.</p> +<p><strong>8. Testing or sharing your quiz.</strong> Your quiz is complete! From here, you'll see an <strong>overview</strong> of your new quiz, showing the number of questions and its settings. You can 'Start this quiz’, which will do so in a private chat with QuizBot, start it in a group, or forward the quiz to someone via 'Share quiz'. To copy the unique link to your quiz, press and hold 'Start quiz in a group'.</p> +<p><strong>9. Editing your quizzes.</strong> Tapping 'Edit quiz' will allow you to alter any of the quiz's questions or settings, including its title and description. From 'Edit questions' you can add pre-question text or media, replace the question with improved answers, or even add additional questions. To select an individual question to edit, tap its /view link from the panel.</p> +<p><strong>10. Quiz stats.</strong> Lastly, you can view Quiz Stats. This shows how many people have taken the quiz, along with who answered the questions most correctly and quickest. You are now the quiz master, ready to put your subjects to the test.</p> +</div> + +</div> + <div class="tl_main_share clearfix"> + <a href="https://t.me/share/url?url=https%3A%2F%2Ftelegram.org%2Ftour%2Fquizbot&text=With%20the%20help%20of%20Quiz%20Bot%20you%20can%20create%20multi-question%20quizzes%20and%20share%20them%20with%20others.%20The%20bot%20lets%20you%20add%20text%20or%20media%20before%20questions%20to%20help%20create%20exam-style%20prompts%20with%20graphs%20and%20tables%20%E2%80%93%20or%20Know%20Your%20Meme%20tests.%20" class="tl_telegram_share_btn" id="tl_telegram_share_btn" data-text="With the help of Quiz Bot you can create multi-question quizzes and share them with others. The bot lets you add text or media before questions to help create exam-style prompts with graphs and tables – or Know Your Meme tests. " data-url="https://telegram.org/tour/quizbot"><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="With the help of Quiz Bot you can create multi-question quizzes and share them with others. The bot lets you add text or media before questions to help create exam-style prompts with graphs and tables – or Know Your Meme tests. " data-url="https://telegram.org/tour/quizbot" 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="/tour/groups"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/img/tl_card_coordinate.gif" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Group Chats on Telegram</h4> + <div class="dev_blog_card_lead">Telegram groups are a powerful tool for building communities and each can have up to 200,000 members.</div> + </div> + <div class="dev_blog_card_date">Jan 29, 2018</div> +</div></a><a class="dev_blog_card_link_wrap" href="/tour/channels"><div class="dev_blog_card_wrap"> + <img class="dev_blog_card_image" src="https://telegram.org/file/464001838/1/GDPE_UE4KFY.77587/f3ebf15475f5ac1f66" /> + <div class="dev_blog_card_alltext_wrap"> + <h4 class="dev_blog_card_title">Telegram Channels</h4> + <div class="dev_blog_card_lead">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…</div> + </div> + <div class="dev_blog_card_date">Jan 29, 2018</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?43"></script> + + <script>initScrollVideos(true); +twitterCustomShareInit(); +blogSideImageInit(); +backToTopInit("Go up"); +removePreloadInit(); +</script> + </body> +</html> +